这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记
这篇笔记记录在抖音后端开发过程中学习到关于数据库的相关知识点
引言
在学习项目过程中,接触到了数据库,数据库有分为关系型数据库和非关系型数据库,其在使用上有一些不同和优缺点,因此这里对数据库相关知识进行总结。
数据库对比
关系型数据库:是指采用了关系模型来组织数据的数据库。简单来说,关系模式就是二维表格模型。主要代表:SQL Server,Oracle,Mysql,PostgreSQL
非关系型数据库:NoSQL非关系型数据库,主要指那些非关系型的、分布式的,且一般不保证ACID的数据存储系统,主要代表MongoDB,Redis、CouchDB。以键值来存储,且结构不稳定,每一个元组都可以有不一样的字段,这种就不会局限于固定的结构,可以减少一些时间和空间的开销。
关系型优点
- 容易理解。因为它采用了关系模型来组织数据
- 可以保持数据的一致性。
- 数据更新的开销比较小。
- 支持复杂查询(带where子句的查询)
非关系型数据库的优点
- 不需要经过SQL层的解析,读写效率高。
- 基于键值对,数据的扩展性很好。
- 可以支持多种类型数据的存储,如图片,文档等等
索引
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。索引的一个主要目的就是加快检索表中数据,亦即能协助信息搜索者尽快的找到符合限制条件的记录ID的辅助数据结构。
使用索引的作用
- 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
- 可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
- 帮助服务器避免排序和临时表
- 将随机IO变为顺序IO。
- 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
数据库索引为什么使用B+树
数据库是需要较大的存储,也就是说,不可能全部存储在内存中,故需要存储到磁盘上
索引,则为了数据的快速定位与查找,那么索引的结构组织要尽量减少查找过程中磁盘I/O的存取次数,因此B+树相比B树更为合适;数据库系统巧妙利用了局部性原理与磁盘预读原理,将一个节点的大小设为等于一个页,这样每个节点只需要一次I/O就可以完全载入
B+树还有一个最大的好处:方便扫库。
B树必须用中序遍历的方法按序扫库,而B+树直接从叶子结点挨个扫一遍就完了,B+树支持range-query非常方便,而B树不支持,这是数据库选用B+树的最主要原因
B+tree的查询效率更加稳定:由于内部结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引,所以,任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当
小结
数据库在我们实际项目开发中是不可或缺的一部分,对于后端来说更是需要对数据库操作熟悉,这样才能不断优化项目性能,达到让用户满意的程度。