产品经理必懂的技术那些事儿--3--数据库

数据库

用户注册功能环节要新增几个用户基本信息,技术上是如何实现的呢?

当我们知道这个信息,只需要在数据库中,新增几个数据项,就能和研发轻松的就这个问题进行讨论。所以,了解了数据库,我们就知道数据是以什么方式进行的存储,比如你的钱存在的工商银商,是以活期存的。知道这个信息后,就能从数据的角度出发来思考应该如何调整我们的数据模型。比如,你想把活期变成3个月的定期,或者6个月的定期。

那什么是数据库呢?数据库是运行在服务器中,类似于一个进行数据存储的仓库,数据按照一定的规则存储,可以对数据库中的数据进行增删改查。

数据库就两种,一种是关系型数据库,一种是非关系型的数据库。我们先说说关系型的数据库。


关系型数据库

关系型数据库是一种基于关系模型的数据库,关系模型折射着现实世界中的实体关系,将现实世界中各种实体之间的关系,通过关系模型表达出来。例如,人是一个实体,人与人之间的关系,这种实体和关系间的对应,就可以表达为一个关系模型。当然,实体有很多,车子,房子,钱,都是实体。实体是一系列属性的集合,人作为一个实体有姓名/年龄/性别等等属性,还有职业,爱好,性格,各种各样的属性。而这里面,每一个属性,都可以是单独的实体。比如,性别也可以是单独的一个实体,这个实体在现在的互联网数据中,包括的属性有三种,男、女、未知。有些公司,还会定义更多种,毕竟这是一个政治正确的东西。

再回来说人,一个人,在一定的时间段内,只能有一个性别,所以任何性别这两个实体之间的关系是一对一的。将这种现实世界中的实体和关系通过关系模型表达出来,就可以形成一种数据存储的方式,通过这种方式表达的数据库就叫做关系型数据库。

通过这种实体关系模型,就可以将现实世界中的实物表示成数据村粗模型。关系型数据库,是现在应用比较多的数据库。主流的关系型数据库有这么几个:

MySQL     SqlServer     Oracle

对于产品经理而言,不用考虑用那种数据库,我们只是要明白,产品背后的数据库结构式是如何设计的。

说到这里,我们要引入另一个概念,叫做表。

关系型数据库中可以通过数据库表和表之间的关系具象表示这种模型,表就是我们常用的二维表格,有表的名字,表的各项标题名。

还是比如人这个实体。我们可以建立一个如图所示的表:

这两个数据库表,对应人这个实体的表叫做people,对应的性别这个表叫做sex。这两个表里面都装着一些属性,我们给这些属性取了名字。在people表中,第一个属性的名字叫做peopleID,这是唯一标识,在数据库表中,这个叫做主键,表示在数据库表中的一条唯一数据,理论上,每一个数据库表的属性里面都有一个用来做唯一标记的ID,这里我们用peopleID来唯一标记一个人,意思就是这个人只会在这个表里出现一次。对应的职业表profession中,我们也用了一个professionID的属性名,来表示唯一性。在people表中,有一个表示职业的属性叫profession,通过这个属性就可以和profession表产生关联关系。

然后呢,我们来介绍一下数据库是如何通过字段进行关联——数据库字段和字段类型,

属性在数据库表里就叫做字段,一个数据库表有表名,也有字段名。理论上说,一个数据库表可以有无限个字段,每一个字段名都不重复,且表名和字段名都只能用英文表示。

我们来看一个数据库表结构图:

典型的关系型数据库就是一个二维表,通过这两个表,可以一眼就知道张三的职业是建筑师,李四的职业是工程师。同时,如果我们把profession表里的字段“建筑师”改成“园艺师”,那么张三的职业就会变成园艺师。

一般而言,产品经理不需要考虑数据库怎么建立,不过如果你的研发不是特别给力,在产品从0到1的时候,最好能够一起讨论数据库表如何建立。一定要留下文档,要不然,这波研发走了之后,后面接手的人,会好难受的。

增删改查

有了数据库之后,我们就需要一个操作数据库的东西,现在通用的就是SQL,structured query language 即结构化查询语言,是一种用来操作关系型数据库的编程语言,可以理解为对数据库的操作命令。我们可以通过SQL对数据库进行增删改查。如图所示。:

一般产品经理,用的最多的就是“查”,而在SQL语言中,查找的命令语是select,还是非常简单明了的吧,哈哈。语句就是 Select * from X,就是从哪个表里去查某某东西。掌握一点点SQL,还是对我们非常有帮助的。

我们在工作的时候,会经常研发说数据库索引。对于关系型数据库而言,一个索引,就像是字典的目录。数据库索引,就是数据库的目录,根据索引,能够快速的定位到这个数据所在的位置,省去了对全表进行查询和匹配的过程。就像我们查字典,找一个字,有目录索引,就能快速的去翻到某一页,找到这个字。而没有索引的话,那得一页一页的去翻数,一个一个的去检查。效率大大的降低了。因此,数据库索引,就是一项能提高查询效率的技术。

非关系型数据库

聊完了关系型数据库,我们再来聊聊非关系型的数据库。关系型数据库是有规则的,有结构的数据库。非关系型数据库就是没啥规则,没啥结构的数据库。一般叫做nosql,not only SQL。主流的非关系型数据库有MongoDB 和couchDB。这种数据的存储一般是以类似于文档的方式存储,每一个文档都有对应的唯一标识和版本号。

在MongoDB里面,一般是用json包来进行数据表示和存储的。比如,people这个数据结构,就是这么表示的:

{

“peopleid”:“001”,

“name”:“张三”,

“sex”:“男”,

“age”:“28”,

“profession”:“建筑师”

}

这就是一种json结构,一共有五个数据在这个json结构里,他们以键值对的形式存储,就是key—value,左边是key,右边是value。意思是 姓名name这个关键词的值是张三。

比如

{

“id”:”001”,

“name”:“张三”,

“profession”:{“id”:”1”,”professionname”:“建筑师”}

}

键“profession”对应的值,也是一个json结构,通过这种嵌套的方式可以灵活地扩展数据表,数据存储方式也更灵活。非关系型数据库适合应用在一些对存取要求比较高并且并发处理比较高的场合,比如对网站访问数据的统计,统计PV UV这种。不过,现在很多产品的后台,都是同时使用这两种,关系型和非关系型,都有。

数据存储和恢复

我们再聊聊数据库的存储和恢复,一般数据是存储在数据库中的,而数据库,在物理上是位于服务器的数据磁盘中的,在数据磁盘中通常划分为两个区域,一个是索引区,一个是数据区。

一般删掉一个数据,只是把索引删了,如果在没有新数据存进来的时候,是可以恢复的。如果有新数据来了,那就会覆盖,没法恢复了,当然,存的时候,还可以更保险一些,做点特殊的标记,做一些假删除的动作。就是仅仅是删除标记,而不是会删除数据。通常情况是有些数据永远不会删除,有些数据会隔一段时间删除,看具体情况。这个产品经理要明确好,要和研发沟通,哪些数据要一直保留,哪些多长时间可以删除。毕竟存数据,也是需要花钱的。买个U盘存数据都要花钱,更何况,要存那么多数据。

数据流转

最后我们来说一个数据视角,直接看一张图,这个流程上,实际上有很多数据,就在这个流程,一层一层的被传递了下去,生产出来,并存储好。每操作一次,数据量就越来越大。

好了,今天要介绍的就是编程和数据库知识了。

之后我们开始学习客户端技术和服务器端的技术。客户端就是通常说的前端,服务器端也就是通常说的后端。看看这两个端,有多大的区别。

你可能感兴趣的:(产品经理必懂的技术那些事儿--3--数据库)