打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
一文了解数据库

  数据库几乎是每一个软件系统中最重要的系统组件。我们常说的某某数据库,其实是数据库管理系统。数据库是按照特定的数据结构组织和存储数据的集合。

  数据集合中最重要的就是数据的逻辑关系。我们最常见的数据模型有关系模型、列模型、多维模型、键值对模型和文档模型。

  关系模型是最“循规蹈矩”的一种模型。关系模型采用表格的形式组织数据,每一行是一条完整的记录,每一列是此记录的一个属性。每个表格中唯一标识记录的单列或多列的集合,称为主键。表格中存储其它表格的主键,称为外键。表格与表格之间用主键和外键相关联。


表关联示意图

  关系数据库的设计通过范式进行指导和约束,进而保证数据库中数据的完整性和一致性。其中BCNF范式强调所有的属性信息只依赖于完整的主键。

主键示意图

  为了解决关系模型行存储在海量数据情况的性能瓶颈问题,采用列模型的分布式数据库应运而生。数据不再按行进行顺序存储,而是把数据记录打散,把多条记录相同列的内容连续存储在一起。

行列存储示意图

  多维模型是解决关系模型分析性能瓶颈的解决方案。通过预先处理不同维度的分析数据,把二维表转换成三维或更多维的数据结构。当维度表只有一层时,数据组成星型结构。当维度表中嵌套维度信息时,维度表的关系就像雪花的花瓣一样不断往外延伸,数据结构就形成了雪花结构。

星型和雪花型示意图

数据立方示意图

  一个指标与三个维度的数据加工处理之后,可以按各个维度的组合直接获取数据。之后每增加一个维度,数据量会成指数型膨胀,数据处理时间也会随之延长。

  键值对模型和文档模型是两个相对简单的数据模型,它们都是以键值为唯一标识。键值对模型的值在数据库看来只是数据并没有数据结构含义,但是文档模型的值包含文档结构信息可以被数据库所理解并进行数据处理。所以文档数据库比关系数据库更灵活,可以根据业务变化随时改变数据信息的结构。

键值对和文档模型示意图

  结构化查询语言(Structured Query Language)简称SQL,是访问关系数据库数据的编程语言。当移动互联网飞速发展的时期,各种非结构化的数据需要被处理和存储。非关系数据模型的数据库也进入百家争鸣的时代,并提出了NoSQL的概念。最开始NoSQL的概念是不再需要SQL,由于SQL语言在数据领域使用广范、影响力巨大,最终逐渐演变为Not only SQL。最终,擅长处理非结构化数据的大数据计算平台都以支持SQL编程语言作为功能卖点。虽然SQL语言是一门比较简单的语言,但是也包含很多使用技巧。编程人员需要根据不同情景,充分利用这些技巧发挥SQL的最大作用。

  各种各样的数据模型是为了在数据一致性和大数据量处理的灵活度两个方面找到一个平衡。关系模型可以提供数据的强一致性(数据内容每时每刻都是一致的)。而其它的数据模型为了数据处理的灵活性,多采用最终一致性(到某一时刻,数据内容都是一致的)。

数据模型对比示意图

  选择数据库管理系统时,需要考虑很多因素。本文受限于篇幅,只介绍了数据库中最重要的数据模型。最后,给出数据库使用的两个建议:

  • 理解数据模型原理,只有选对数据模型才能找到合适的数据库。

  • 数据库设计决定性能上限,代码编写的质量决定性能的下限。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
搞懂数据库看这篇就够了!
SQL VS. NoSQL:你需要知道些什么?
SQL vs NoSQL:你需要知道什么?
NoSQL数据库的35个应用场景
Java Redis系列1 关系型数据库与非关系型数据库的优缺点及概念
mongodb,redis,hbase三者的定位和区别
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服