APP下载
报价宝  ›  科技  › 

技多不压身 | 产品经理需知的那些数据库基础知识_基本操作

报价宝 来源:baojiabao.com 发布时间:2019-10-23 06:55:00 09月11日更新
报价宝综合消息技多不压身 | 产品经理需知的那些数据库基础知识_基本操作

技多不压身,无论是什么资料产品经理还是其他品类的产品经理,都需要懂点数据库知识。懂技术能让你在跟开发撕逼中多了一个资本。

随着近几年AI智慧,大资料的发展,“产品经理是是否需要懂技术?”“产品经理应该对技术理解到什么程度?”诸如此类的问题又再次出现在许多人的视野中,或者说它就未曾离开过。

笔者认为,这要具体放到某个具体业务场景或者行业下去分析,例如:作为一名资料产品经理,你可能需要懂一些数据库,大资料的相关知识;作为一名AI语音产品经理,你可能需要懂一些关于自然语言处理(NLP)的相关技术。

当然,技多不压身,懂技术能让你在跟开发撕逼中多了一个资本。

在进入正文之前,我们先来思考几个小问题:

这四个问题看起来很简单,但深究起来,它对应着数据库的四个基本操作CRUD:即增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)。

何为数据库?

百度百科对数据库给出以下定义:

所谓“数据库”是以一定方式储存在一起、能予多个使用者共享、具有尽可能小的冗余度、与应用程序彼此独立的资料集合。

数据库可视为电子化的档案柜——储存电子档案的处所,使用者可以对档案中的资料进行新增、查询、更新、删除等操作。

简单的理解:数据库(DataBase,简称DB)是用于储存有组织的资料的容器。

在DB中,资料通常以一种结构化的档案——表,作为其展现形式。对DB的操作可以看做是对DB中表的操作,而对DB中表的操作可以类比为对Excel中表的操作。

数据库中的表有行和列的概念,符合我们的常规认知。

列是表中的一个字段,储存着相同属性的资料,例如:一列专门来储存使用者的账号昵称。

行是表中的一个记录,可用于储存某一个使用者的完整资讯,例如:使用者A,男,22岁,身高170cm,体重120斤。

表中的某一列(或一组列)我们称为主键,其值可以用来唯一区分表中每个行(或者说每条记录)。说白了,主键就是用来唯一代表某条记录(某行)的。

主键需满足以下条件:

举个例子:在学生管理系统中,我们用学号来唯一代表每个学生,此时学号所在的那一列就是主键。

那么,如何理解某一组列作为主键呢?

当我们无法用单独的某一列来代表一条记录时,我们就要采用某两列或者某几列来共同代表一条记录。

例如:一个表格记录着一个班级的学生,不同课程的不同考试中的资料时,你想从中找出学生A,每一次考试中的语文成绩时,就需要以学号和课程名称这两列来作为复合主键。

DBMS与SQL?

一般情况下,我们不会去直接操作数据库,往往是通过数据库管理系统(Database Management System,简称DBMS)去对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。

典型的DBMS包括例如:MySQL,Oracle,mongoDB,Redis等等。

这里注意一点:在平时交流的时候,许多人会直接将MySQL,Oracle等称作是数据库,很多网上的资料也是这么写的。但从严格意义上来讲,MySQL,Oracle应该是数据库管理系统。

为了方便大家跟网上的资料能够共同理解,笔者在此暂时称呼MySQL为数据库。

目前主流数据库基本分为两类:关系型数据库和非关系型数据库。

关系型数据库是指采用了关系模型来组织资料的数据库。其最典型的资料结构是表,结构相对固定,格式一致,易于维护。但是灵活性不强,读写效能比较差,尤其是在海量资料的处理上,效率不高。

非关系型数据库狭义上讲并不是一种数据库,而是一种资料结构化储存方法的集合。因为大多数经典的关系型数据库命名都为“***SQL”,为了做出区分,行业内通常将非关系型数据库统称为NoSQL。NoSQL格式灵活,可以很好的满足高并发读写需求,成本低,速度快。

在安装完MySQL之后,他会帮我们顺带安装数据库。我们就可以直接通过MySQL的命令视窗启动服务,并对数据库进行操作。

例如在下图中,笔者在win10系统中,先以管理员许可权开启PowerShell,然后启动MySQL命令视窗,再通过“create database test;”建立一个名称为test的数据库。(一般情况下,不建议用root登陆)

这种操作方式对于非技术人员来讲,并不是十分友好。因此在日常使用中,我会采用MySQL+Navicat来实现对数据库的操作。

Navicat是一套多连线数据库开发工具,工具中带有灵活的数据库图形视觉化界面,方便使用者直接进行类如Excel的表格操作,由此来实现最终的数据库操作。

SQL(Structured Query Language)是结构化查询语言,可以用来和数据库通讯,绝大部分DBMS都支援SQL,简单的说就是通过编写SQL语句来操作数据库。

在下面的操作中,笔者也将以MySQL+Navicat作为基础开发环境,以SQL语法为说明。

实战演练

对数据库DB,数据库管理系统DBMS,结构化查询语言SQL有所了解后,让我们继续回到开篇讲的四个问题。

将这四个步骤拼接在一起,可以得出一个最简单的使用者账户注册、登入、修改、登出的流程。

这四部分对应到数据库的相关操作就是增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)。

1. 事前准备

我们先在Navicat中跟一个已存在的数据库进行连线,然后建立一张名为user_test的表,表中分别有字段:ID(作为主键)、account(账户名)、password(密码)、source(注册来源)、name(真实姓名)、age(年龄)、job(职业)。

2. 注册步骤及其SQL

在使用者注册时,会在注册界面填写相应的资讯,点选页面底部的注册按键,系统将执行数据库记录插入操作,其通用SQL语法为:

最后,所有SQL语法中都以 “;”作为语句结尾,这个不要漏了。

在本例中,对应的SQL为:

经过插入操作后,数据库中表的结果为

在这里,因为我们的表中的ID字段设定为主键,并且由数据库进行自增操作,所以我们不会对其进行额外操作。

3. 登陆步骤及其SQL

假设当前数据库中user_test表的资料如下:

在使用者登入时,系统会根据使用者输入的账户名去数据库中检索,如果没有查询到相应的账户名,则提示账户不存在;如果查询到账户名,则再根据数据库中该账户名的密码去跟使用者登入时输入的密码进行匹配,如果匹配失败,则提示密码输入错误,反之登陆成功。

所以在这个步骤中,执行的是数据库的查询操作,其通用的SQL语句为:

在本例中,假设是RD李四登陆,则根据李四的账户名“使用者2”查询其密码,年龄,注册来源,职业,姓名这几个字段资讯的SQL为:

经过查询操作后,得出的查询结果为:

4. 更新步骤及其SQL

假设当前数据库中user_test表的资料如下:

在使用者登入成功后,可以对密码进行更改,系统根据当前登陆账户,将旧密码更改为新密码。

所以在这个步骤中,执行的是数据库的更新操作,其通用的SQL语句为:

其中[WHERE Clause]表示你要更新这张表时,所约束的条件。在这里注意一点,进行UPDATE操作时,一定要跟上[WHERE Clause],不然将会把整张表的资料更新。

在本例中,假设我们要对QA王五的密码和职业进行更新,则SQL为:

经过更新操作后,数据库中表的结果变为:

5. 登出步骤及其SQL

假设当前数据库中user_test表的资料如下:

当使用者试图登出自己的账号时,系统会根据相应的账户名对使用者的资讯进行删除。至于删除哪些资讯,取决于业务要求。有些应用会将使用者资讯全部删除,有些则会保留一些基础资讯,方便使用者二次注册的时候,可以快速完成。

所以,在这个步骤执行的是数据库的删除操作,其通用的SQL为:

在本例中,假设我们要将RD李四的账户登出,并且删除其所有资料,则SQL为:

创新型数据库 1. 时序数据库

时序数据库(Time Series Database,简称TSDB)是非关系型数据库中的一种,也是很重要的一种。

随着目前AI智慧的发展,在很多场景下,特别是将来的工业互联网中,我们需要收集海量的过去式资料,借此来分析和预测将来可能发生的事情。例如:金融交易股票走势,物联网感测器装置的测量资料,气温或日湿度预测等等。

以股票走势预测为例,单靠目前股票的位点是无法分析的,只有结合股票在前十分钟,前一个小时,甚至前几天的走势,才能更加精准的预测出未来某一时刻的具体情况。

时序数据库就是专门用来储存海量时序资料的。而时序资料就是基于时间的一系列资料。

简单地可以理解成,它以时间为主座标轴,以需要被记录的资料作为纵轴,通过规则的时间间隔或者是不规则的时间间隔去表征一系列资料的规律性或异常性变化。

时序数据库包含以下几个基础部分:

有的小伙伴可能会说,直接在一般的数据库中,加入一个代表时间的列,不就可以完成吗。在资料比较少,数据库操作不频繁的时候,这种方法还是可以的。

随着资料储存量的增多,如果想要达到跟时序数据库一样的效果,那就会频繁的操作数据库,这会造成极大的开销,从而极大的降低读写速度。

总的来说,时序数据库具有大规模资料支援,多精度资料储存,多标签资料查询等特点。

2. 图数据库

非关系型数据库NoSQL大致可以分为四类:

图数据库就是NoSQL其中的一种,它以图这种资料结构储存和查询资料。图由两个主要元素组成:节点和关系。

节点代表一个实体(时间,地点,人或其他资料),关系则代表两个节点之间的关联方式。

相比于NoSQL中的其他型别数据库而言,图数据库具有更加丰富的模型表现能力和更加高效的索引。

在实际应用中,业务逻辑往往十分复杂,如果用关系型数据库来表示各个实体之间的潜在关系,则需要建立十分多的关联表。数据库需要通过关联表间接地维护实体间的关系,导致数据库的执行效能低下,同时也会引起关联表的数量急剧上升。

例如:在一个订单系统中,要清楚表现出使用者、订单、商品之间的逻辑关系,需要建立四张关联表,这显得十分复杂,开发效率也很低。

而在图数据库中,我们只需要建立四个节点,并用关系来表示节点之间的逻辑,最后用任意两个节点之间的关系去索引,即可提升效率。随着业务逻辑性愈发的复杂,资料量的增多,关联表数量会急剧上升,这时图数据库的优势愈发明显。

小结

随着大资料,AI智慧的发展,为解决不同业务需求,越来越多的创新数据库随之出现,时序数据库和图数据库就是其中之一。时序数据库解决了时间序列资料储存,索引的问题;图数据库则解决了复杂逻辑下,各个实体之间相互表征,索引的问题。

数据库攻击及防护

对于每个应用而言,数据库为其提供了前后台资料互动的作用。对于企业而言,数据库储存了海量的使用者资料,一旦数据库被攻击或被破坏,将会导致使用者资讯泄露,进而导致一系列无法弥补的损失。因而,数据库的保护工作极其重要,特别是一些涉及金融,-层面的资料。

在云端计算领域中,数据库还被作为一种资源进行出售。例如:亚马逊的AWS数据库、腾讯云数据库、阿里云数据库、百度云数据库等等。通过租用有实力公司的云数据库,不仅能免除小企业自身架设机房,采购物理硬件,招聘专业运维人员的成本,还能享受高效能云数据库服务以及高质量的防护措施。

常见的数据库攻击方式及其防护措施如下:

1. 对弱口令或预设使用者名称/口令的破解

在早期的数据库中,有些数据库在安装时会有一个预设的口令,有些管理人员偷懒,干脆就延用了预设口令,那么黑客就可能从这个口令出发去获取攻击数据库。

措施:采用安全程度高的口令,避免使用预设口令。

2. SQL注入

SQL注入指通过任意SQL程式码插入数据库查询,使攻击者能够绕过应用程序安全措施,完全控制Web应用程序后面的数据库服务器,对资料进行CRUD操作。

措施:尽量避免直接将使用者的输入放到SQL语句中,使用准备好的语句和引数化查询,并且定期测试与数据库互动的Web应用程序,检视后台日志资讯。

3. 特权提升

数据库会被许多人共同使用,有测试人员、开发人员、产品经理等等,每个人员分配的许可权是不一样的。

最高阶的root许可权一般只开放给高阶别的Leader。如果在许可权配置中,一个使用者被误授予超过其实际需要的访问许可权。那么攻击者只需要得到少许特权使用者的口令,就可以毫无阻碍的进入数据库系统。

措施:定期审查每个使用者的许可权,通过后台日志分析及时更改误授人员的许可权。

总结

至此为止,相信大家对数据库以及相关知识已经有了一个感性的认知。

数据库的知识比较多,不是一两篇文章就能讲清楚的。笔者整体写的也比较粗糙,希望能给各位同行带来一些帮助。承蒙大家不嫌弃的话,笔者愿意在后续再写几篇相关的,与大家一同学习和进步。

文中部分内容参考网上资料。

本文由 @pm_SWolf 原创释出于人人都是产品经理。未经许可,禁止转载

题图来自Unsplash,基于CC0协议

文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 笔记本价格 小米手机价格 华为手机价格 红米手机价格 降噪耳机价格