简介:数据库通常用于存储结构化数据,它有一个定义良好的格式。在过去的几年里,已经发布了许多数据库,可供我们选择的数据库每年都在增加。这些数据库中有许多是为特定类型的数据模型和任务而设计的。其中一些支持多种模型,通常被归类为多模型数据库。

了解数据库的各种分类将有助于您在设计应用程序时选择正确的数据库。

01键值数据库

通常,您只需要使用主键甚至一些键来检索应用程序数据。键/值数据库可以看作是一个非常大的哈希表,它在唯一键下存储一些值。可以通过键或部分键有效地检索存储的值。因为这个值对数据库是不透明的,所以如果需要按值查找记录,就需要逐个扫描。

键/值数据库中的键可以包含多个元素,甚至可以排序以提高查询效率。一些键/值数据库允许使用键的前缀进行搜索,因此可以使用复合键。如果数据可以通过一些简单的关键字嵌套来查询,那么关键字/值数据库将是一个很好的选择。

例如,我们将客户xyz的订单存储在键/值数据库中,我们可以使用客户标识作为键的前缀,并结合订单编号形成键“xyz-1001”来存储订单。您可以使用整个键来检索特定订单,也可以使用“xyz”前缀来检索客户xyz的所有订单。

注意:键/值数据库通常很便宜,并且具有高度可伸缩的数据存储。键值数据库可以根据键值对数据进行分区甚至重新分区。在使用键/值数据库时,选择键很重要,因为它会对数据存储的规模和读写的性能产生很大的影响。

02文档数据库

文档数据库类似于键/值数据库,因为它也通过主键存储文档。与键/值数据库不同,文档数据库中的文档需要符合一些已定义的结构,键/值数据库几乎可以存储任何值。这使得文档数据库能够实现诸如维护辅助索引和基于文档查询数据之类的功能。

通常存储在文档数据库中的值是哈希映射和列表的组合。JSON格式通常用于文档数据库,尽管许多数据库引擎使用更高效的内部存储格式,例如MongoDB的BSON。

建议:当你从关系型数据库转换到基于文档的数据库时,你需要考虑如何组织数据。许多人需要时间来过渡到这种不同的数据建模方法。

存储在传统关系数据库中的大部分数据也可以存储在文档数据库中。它们变得越来越受欢迎。与关系数据库不同,这些存储的文档可以很好地映射到编程语言中的对象,并且不需要对象关系映射工具。

这些数据库通常不需要定义一个数据模式,这在软件连续交付过程中需要更新数据模式时有一定的优势。

注意:不需要模式定义的数据库通常被称为“读取时模式”,因为虽然数据库不需要模式,但是在使用数据的应用程序中存在固有的模式,并且需要知道如何转换读取的数据。

03关系数据库

关系数据库将数据组织成二维结构,称为表,由列和行组成。一个表中的数据可以和另一个表中的数据关联,数据库系统可以保证这种关联。关系数据库通常实施严格的模式,也称为“写入时模式”,其中写入数据库的数据必须符合数据库中定义的结构。

关系数据库已经存在很久了,很多开发人员都有使用它们的经验。到目前为止,最流行和最常用的数据库仍然是关系数据库。这些数据库非常成熟,可以处理包含大量关系的数据,并且拥有大量知道如何使用它们的工具和应用生态系统。

在文档数据库中使用多对多关系可能很困难,但在关系数据库中却非常简单。如果应用的数据有很多关系,特别是事务需要,那么这些数据库可能是合适的。

04图数据库

图形数据库存储两种类型的信息:边和节点。边定义了节点之间的关系,您可以将节点视为实体。节点和边都有属性,其中存储了节点或边的一些信息。边缘通常定义关系的方向或性质。

图形数据库可以很好的分析实体之间的关系。图形数据也可以存储在任何其他数据库中,但是当图形的遍历变得越来越复杂时,其他类型的存储可能很难满足图形数据的性能和可扩展性要求。

05列系列数据库

列族数据库将数据组织成行和列,乍一看可能与关系数据库非常相似。您可以将列族数据库视为由行和列组成的表格数据,但列是分组的,称为列族。

每个列族包含一组逻辑上相关的列,这些列通常作为一个单元进行检索或操作。可以单独访问的数据可以存储在单独的列族中。在列族中,可以动态添加新列,行可以是稀疏的。

06时间序列数据库

时间序列数据库是针对时间优化的数据库,可以根据时间存储值。这些数据库通常需要支持大量的写操作。它们通常用于从大量数据源中实时收集大量数据。这些数据很少更新,删除操作通常是批量进行的。写入时间序列数据库的记录通常很少,但记录量很大。

时间序列数据库非常适合存储遥测数据。流行的应用包括用于应用/系统的物联网传感器或计数器。时间序列数据库通常根据数据使用模式的配置提供数据保留、下采样和将数据保存到其他存储器的功能。

07搜索引擎

搜索引擎数据库通常用于搜索存储在其他商店和服务中的数据。搜索引擎数据库可以索引大量数据,并提供近乎实时的索引查询。

除了搜索网页等非结构化数据之外,许多应用程序还使用它为其他数据库中的数据提供结构化和即时搜索功能。有些数据库还可以提供全文索引功能,但搜索数据库也有通过词干和泛化将词归根的功能。

关于作者:Boris Scholl是Azure Computing Team的产品架构师,专注于下一代分布式系统平台和应用模型的研究,在云计算和分布式系统方面拥有多项专利。

特伦特·斯旺森是一名专注于云和边缘技术的软件架构师。他已经帮助许多主要的微软客户将他们的应用程序迁移到云中或者在云中构建应用程序。

Peter Jausovec是一名软件工程师,在软件开发和技术方面有10多年的经验。近年来,他一直致力于在分布式系统上开发云本地解决方案。

本文摘自经出版商授权的《云原生:利用容器、函数计算和数据构建下一代应用》。

云原语的扩展阅读

转载请联系微信:DoctorData

推荐:本书首先介绍了分布式系统的一些基本原理及其与云原生应用的关系,然后进一步介绍了容器、函数等相关技术。然后,本书将介绍服务之间的通信模式、服务的灵活性和数据模式,并讨论在什么情况下应该使用这些技术。最后会总结一些经验性的东西,比如如何结合DevOps方法,如何兼顾可移植性,以及一些最佳实践。

PPT|阅读|书单|硬核|干货|解释清楚

大数据|云计算|数据库| Python|可视化|神操作

人工智能|机器学习|深度学习|神经网络

5G|中台|用户画像| 1024|大神|数学|秘密

1.《如何选择数据库 数据库有哪些分类?应该怎样选择?终于有人讲明白了》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《如何选择数据库 数据库有哪些分类?应该怎样选择?终于有人讲明白了》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guoji/1767622.html