数据库种类有哪些?他们各自对应怎样的应用场景?

01月19日 收藏 0 评论 2 测试开发

数据库种类有哪些?他们各自对应怎样的应用场景?

转载声明:文章来源https://www.zhihu.com/question/432781043/answer/1604375728

一般来说,数据库按照组织式分为两大类:关系型数据库和非关系型数据库。

1.关系型数据库是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过这些关联的表格分类、合并、连接或选取等运算来实现数据的管理。

2.非关系型数据库又称NoSQL由于数据类型多种多样,关系型数据库并不适用于所有的数据,因此针对不同的数据类型,出现了不同的 NoSQL,NoSQL的产生并不是要彻底否定关系型数据库,而是作为传统数据库的有效补充。

关系型SQL与非关系型NoSQL对比表注:关系型数据库的ACID:

A (Atomicity) 原子性:就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。比如银行转账,从A账户转5元至B账户,分为两个步骤:①从A账户取5元;②存入5元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了5元。

C (Consistency) 一致性:一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。例如现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。

I (Isolation) 独立性:是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。例如:现有有个交易是从A账户转5元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的5元的。

D (Durability) 持久性:指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。

CAP理论的C就是一致性(Consistency),A就是可用性(availability),可以理解为是否可获取数据,以及获取数据的速度;P就是分区容忍度(partion tolerance),指的是系统中的数据分布性的大小对系统的正确性,性能的影响(一定程度上就是可扩展性)。

2.1关系数据库
关系数据库是使用最广泛的数据库,采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。主要结构为:库+表+表之间的关系+字段。

关系数据库表示例表
关系数据库把复杂的数据结构归结为简单的二元关系(二维表),如上图所示是一个二维表的示例,通常该表第一行为字段名称,描述该字段的作用,下面是具体的数据。在定义该表时需要指定字段的名称及类型。目前主流的关系型数据库有OracleL、SQL Server、DB2、MySQL、PostgreSQL等。

2.2非关系数据库
常见的非关系型数据库有键值数据库、列存储数据库、文档数据库、图数据库、时序数据库、搜索引擎数据库等,这些常见数据库的主要特点及应用场景如下表所示。

几种常见非关系数据库的主要特点及应用场景

2.2.1 键值数据库
键值数据库可以被看作一个非常大的哈希表,该表在唯一的键下存储了一些值。存储的值可以通过键或者部分键高效地检索到。键值数据库使用简单的键值方法来存储数据。键值数据库将数据存储为键值对集合,其中键作为唯一标识符。键值数据库中的键可以包含多个元素,甚至可以排序以提高查询效率。一些键值数据库允许使用键的前缀进行查找,从而可以使用复合键。

例如,我们将客户ABC的订单存储在键/值数据库中,可以使用客户ID作为键的前缀,结合订单号组成键“ABC-001”来存储订单。可以使用整个键来检索特定的订单,也可以使用“ABC”前缀检索客户ABC的所有订单。

2.2.2 列存储数据库
列存储数据库又被称为面向可扩展性的分布式数据库,它反转了传统的行存储数据库,将数据存储存在列族中,一个列族存储经常被一起查询的相关数据。如下表所示为人员信息表:

对于行存储数据库,表中的数据是以行为单位逐行存储在磁盘上的;而对于列存储数据库,表中的数据则是以列为单位逐列存储在磁盘中。下图是传统行数据库和列数据库表中数据在磁盘上的存储形式的差异对比。

列存储解决的主要问题是数据查询问题,这部分数据库通常用来应对分布式存储的海量数据,典型的产品应用如Hbase。

2.2.3 文档数据库
文档数据库是一种非关系数据库,将半结构化数据存储为文档,其中文档包括 XML、YAML、JSON、BSON、office 文档等不同格式。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。

简而言之,就是将数据保存到以上类似格式的文档中,数据库中的每个记录都是以文档形式存在的,相互之间不再存在关联关系。文档数据库所存放的文档,就相当于键值数据库所存放的“值”。

2.2.4 图数据库图数据库
顾名思义,就是一种存储图形关系的数据库,而图模型是图数据库中的重要概念。图模型由两个要素组成:节点和边,每个节点代表一个实体(人、地点、事物等),每条边代表两个节点之间的连接,这种通用结构可以对各种场景进行建模,如社交网络以及由关系定义的任何其他事物。如下所示的图模型中包含 3个节点:中国、北京、长城。其两条边分别是:长城是北京的著名景点、北京属于中国。

从上面的图模型可以看出,图数据库的目标就是基于图模型以一种直观的方式模拟这些关系,可以很好地分析实体之间的关系。

2.2.5 时序数据库
在介绍时序数据库前先了解下时序数据,时序数据是按照时间顺序记录系统、设备状态变化的数据,普遍存在于IT基础设施、运维监控系统和物联网中。在有时间的坐标中将这些数据点连成线,往前看可以做成多纬度报表,揭示其趋势性、规律性、异常性;往后看可以建立数学模型、做统计分析,预测事物发展趋势。

时序数据库就是存放时序数据的数据库,并且需要支持时序数据的快速写入、持久化、多纬度的聚合查询等基本功能。相比于传统数据库仅仅记录了数据的当前值,时序数据库则记录了所有的历史数据。同时时序数据的查询也总是会带上时间作为过滤条件。

下面对时序数据库的数学模型做下简单介绍:
metric:度量的数据集,类似于关系型数据库中的table
point:一个数据点,类似于关系型数据库中的row
timestamp:时间戳,表征采集到数据的时间点
tag:维度列,代表数据的归属、属性,表明是哪个设备/模块产生的,一般不随着时间变化,供查询使用
field:指标列,代表数据的测量值,随时间平滑波动,不需要查询 

时序数据库基本概念图
如上表中,度量为Wind,每一个数据点都具有一个timestamp,其中有两个field:风向、速度,两个tag:设备编号、城市。根据表中第一行和第三行的数据可知,存放的都是sensor号码为95D8-791的设备,属性城市是北京。随着时间的变化,风向和风速都发生了变化,风向从24.2变成25.6,风速从3.6变成了3.3。

2.2.6 搜索引擎数据库
搜索引擎数据库通常用于搜索保存在其他存储和服务中的数据。搜索引擎数据库可以对大量的数据建立索引,并提供近实时的索引查询。搜索引擎数据库是应用在搜索引擎领域的数据存储形式,由于搜索引擎会爬取大量的数据,并以特定的格式进行存储,这样在检索的时候才能保证性能最优。

搜索引擎数据库除了搜索像网页这样的非结构化的数据,许多应用程序还使用它为其他数据库中的数据提供结构化和即时搜索功能。有一些数据库也能提供全文索引功能,但是搜索数据库还具备通过词干和泛化将单词缩减为词根的功能。

C 2条回复 评论
壁虎极点多

哎呀,我居然把他看完了,谢谢大佬的文章

发表于 2023-02-11 21:00:00
0 0
匀斋

感谢分享!

发表于 2023-01-01 21:00:00
0 0