这是我参与「第三届青训营 -后端场」笔记创作活动的第二篇笔记
在进行抖音大项目的实现时,最先进行的不是代码的实现,而是数据库的各个数据表的统一,以及相应的数据项的设计,由于我们组是采取分工的形式来进行大项目的实现,因此把整个项目分成了不同的部分,每个人分工合作,这样做提高了工作效率,但是也带来了一些问题,首先就是数据的统一,因为最后必须使用相同的数据。
数据库的选用 数据库本身功能非常单一,仅可作为数据的存储介质,但错误的数据库选型带来的代价可能就是项目性能的大幅下降,对于很多企业应用来说这也是致命的伤害,另外,选择不同数据库类型同样会决定系统中其他模块的设计,因此,数据库选型对于整个项目非常重要,对于数据库,主要需要考虑如下三点因素:
- 数据结构
- 查询模式
- 数据规模
对于抖音大项目来说主要的存储就是视频文件以及一些文本描述,需要存储大量图像、视频等数据,仅仅一个数据库可能并不能满足我们的需求,因为这时需要存储的是文件而非一般的数据信息,数据库本质依然只能用来查询信息数据而已,而文件本身也并不用“查询”,只需要按需拿到这整个文件即可,而在同一个 MySQL 数据库服务器中可以创建多个数据库,如果把每个数据库看成是一个“仓库”,那么网站中的内容数据就存储在这个仓库中。而对数据库中数据的存取及维护等,都是通过数据库管理系统软件进行管理的。同一个数据库管理系统可以为不同的网站分别建立数据库,但为了使网站中的数据便于维护、备份及移植,最好为一个网站创建一个数据库(在大数据量时则采用分库分表)。并且MySQL 数据库可以称得上是目前运行速度最快的 SQL 语言数据库之一。除了具有许多其他数据库所不具备的功能外,MySQL 数据库还是一种完全免费的产品,用户可以直接通过网络下载 MySQL 数据库,而不必支付任何费用。
数据表的设计
对于不同分工的部分来说,都需要设计自己的数据表,我们组设计了用户,视频,点赞以及评论四张数据表,在设计数据表时,由于之前没有做过相关工作,确实无从下手。数据表由表结构和表内容两部分组成,先建立表结构,然后才能输入数据。
数据表结构设计主要包括字段名称、字段类型、和字段属性的设置。 在关系数据库中,为了确保数据的完整性和一致性,在创建表时除了必须指定字段名称、字段类型、字段属性外,还需要使用约束(constraint)、索引(index)、主键(primary key)和外键(foreign key)等功能属性。由于本项目实现的功能比较基础,因此只需要考虑各个表的主键即可。
数据值和列类型(字段的类型): 对MySQL中数据值的分类:有数值型、字符型、日期型和空值等。 MySQL中的列类型有三种:数值类、字符串类和日期/时间类。 数值分整型和浮点型两种。 本项目用到的数值型的数据比较简单,只是一些序号即可,因此选择整型,相对来说字符型就需要多加注意。而对于日期和时间类型,选择datatime即可,要注意在存储日期时,我们可以使用整型来进行存储时间戳,这样做便于我们进行日期的计算。
字符串类型注意事项: CHAR和VARCHAR类型的长度范围都在0~255之间 在使用CHAR和VARCHAR类型时,当我们传入的实际的值的长度大于指定的长度,字符串会被截取至指定长度 在使用CHAR类型时,如果我们传入的值的长度小于指定长度,实际长度会使用空格补至指定长度 在使用VARCHAR类型时,如果我们传入的值的长度小于指定长度,实际长度即为传入字符串的长度,不会使用空格填补 CHAR要比VARCHAR效率更高,但是占用空间较大
**总结 **
在数据表的设计上目前只需要设计好对应所需的数据类型,就可以进行简单的项目运行,目前并没有对性能进行优化的考虑以及数据安全相关的设计,会继续学习。