2022-10-27 441
你如何选择一个数据库?也许,您评估用例是否需要一个关系数据库。根据答案,您可以选择您喜欢的SQL或NoSQL数据存储,并使其工作。这是一个谨慎的策略:已知的魔鬼比一个未知的天使更好。
挑选正确的数据存储可以简化您的应用程序。错误的选择可以增加摩擦。本文将帮助您扩展您的已知恶魔列表。它涵盖以下内容:
对数据库工作原理有助于评估替代方案的高级了解。数据库有5个组件:接口,查询处理器,元数据,索引和存储:
查询处理器为每个传入请求执行以下步骤:
要确定数据存储区匹配您的应用程序需求,您需要仔细检查:
在下一节中,让我们在数据存储中检查各种数据类型的数据存储中的操作和索引。
文件系统是最简单和最旧的数据存储。我们每天都使用它来存储各种数据。Blob Storage是一种用于存储非结构化数据的超级分布式版本文件系统。
目录或文件路径是索引。
因此,您可以快速查找并读取文件。但是在文件中找到某些内容需要顺序扫描。文档,图像,音频和视频文件存储在Blob中。
表格数据存储适用于存储结构化数据。每个记录(行)具有相同类型的属性(列)的相同类型。
有两种应用:
OLTP应用程序需要数据存储,支持低延迟读取和单个记录的写入。OLAP应用程序需要支持高吞吐量的数据存储读取大量(只读)记录。
关系数据库管理系统(RDBMS)是最早的数据存储之一。数据在表中组织。表格归一化以降低数据冗余和更好的数据完整性。
表可能具有主要和外键:
关系数据库针对事务操作进行了优化。事务通常更新多个表中的多个记录。索引针对频繁的低延迟写作ACID进行了优化:
有很多可供选择:
虽然交易是行(记录),但在列(属性)上计算分析属性。OLAP应用程序需要在表上进行优化的列读取操作。
通过将面向列的索引添加到关系数据库来实现它的一种方法。例如:
但是,主RDBMS操作是低延迟的高频率酸事务。这不会扩展到分析应用程序中常见的大数据规模。
对于大数据,存储在Blob存储数据湖中变得流行。部分分析摘要计算并维持在OLAP多维数据集中。列储存的规模和性能的进步使OLAP多方面过时。但概念仍然与设计数据管道有关。
现代数据仓库是基于列存数据库构建的。数据由列而不是行存储。可用选择是:
Databricks Delta Lake在数据湖泊中的数据上提供类似列存性能。
非关系NoSQL数据存储有两个原因:
NoSQL数据存储在各种CAP定理权衡中提供水平刻度。根据CAP定理,分布式数据存储可以在以下3个保证中提供最多2个保证:
请注意,CAP定理和ACID事务中的一致性定义是不同的。ACID一致性是关于数据完整性的(数据是一致的w.r.t.每个交易后的关系和约束)。CAP是关于在任何给定时间彼此一致的所有节点的状态。
只有少数NoSQL数据存储是ACID。大多数NoSQL数据存储支持基础模型:
NoSQL和SQL数据库之间的差异是:
NoSQL用于半结构化数据类型:
NoSQL数据存储迎合半结构数据:键值,宽柱,文档(树)和图形。
键值存储是字典或哈希表数据库。它专为CRUD操作而设计,每个记录都有一个唯一的键:
值没有固定的模式,并且可以是从原始值到复合结构的任何内容。键值存储是高度分区的(因此水平缩放)。Redis是一个受欢迎的钥匙价值商店。
宽列商店具有表,行和列。但是列的名称及其类型对于同一表中的每一行可能是不同的。逻辑上,它是一个具有多维映射的版本的稀疏矩阵(行 – 值,列值,时间戳)。它就像一个二维键值存储,每个单元格值都有一个时间戳。
宽列数据存储是高度分区的。它具有存储在一起的列族的概念。单元格的逻辑坐标是:(行键,列名,版本)。物理查找如下:区域字典⇒列族目录⇒行键⇒列姓名⇒列限定符⇒版本。因此,宽列存储实际上是面向行的数据库。
Apache HBase是第一个开源广域数据存储。在实践中查看HBase,用于宽柱数据存储的核心概念。
文档存储用于存储和检索由嵌套对象组成的文档。树结构,如XML,JSON和YAML。
在键值存储中,该值是不透明的。但是文档存储利用该值的树结构来提供更丰富的操作。MongoDB是文档商店的一个流行示例。
图表数据库就像文档存储,但是为图形而不是文档树设计。例如,图形数据库将适合存储和查询社交连接网络。
neo4j是一个突出的图表数据库。在宽列商店上使用Janusgraph类型的索引也是很常见的。
各种类型的NoSQL数据存储之间的样本是模糊的。偶尔,即使是SQL和NOSQL之间的线条是模糊的(PostgreSQL作为键值存储和PostgreSQL为JSON文档DB)。
数据存储可以通过为该数据类型添加索引和操作来传动以提供另一种类似的数据类型。初始柱状OLAP数据库是具有列存储索引的RDBMS。NoSQL商店相同,用于支持多种数据类型。
这就是为什么要考虑用例并选择适合您的应用程序的数据存储。用于多个用例的数据存储可能有助于减少开销。
具有适用于用例的内置操作的数据存储是首选(而不是在每个应用程序中实现这些操作)。
与键值存储相同,但数据位于内存而不是磁盘上。它消除了磁盘IO开销,并用作快速缓存。
时间序列是一系列数据点,由时间戳索引和订购。时间戳是时间序列数据存储中的关键。
时间序列可以建模:
具有来自编程语言的日期时间函数的宽专栏存储通常用作时间序列数据库。
在分析应用程序中,柱状数据库也可用于时间序列数据。
不可变分类帐用于维护中央可信任权限所拥有的不变和(加密)可验证的交易日志。
从存储角度来看,一个宽的列商品就足够了。但是数据存储行动必须是不可变和可验证的。很少有数据存储(例如Amazon QLDB和Hyperlowger Fabric)目前满足这些要求。
地理空间数据库是一个数据库,用于存储地理数据(例如国家,城市等)。它针对地理空间查询和几何操作进行了优化。
具有地理空间查询的宽列,键值,文档或关系数据库通常用于此目的:
非结构化(自然)或半结构化文本的文本搜索是许多应用程序中的常见操作。文本可以是普通或富有的(例如pdf),存储在文档数据库中,或存储在Blob Store中。弹性搜索是一个流行的解决方案。
鉴于这么多的数据类型,使用案例,选择,应用程序注意事项和云/ inum / insum约束,它可能会耗时来分析所有选项。下面的决策流程图是帮助您快速签名少数候选人。
等待学习做出选择所需的一切是不切实际的。这个作弊表将很少有合理的选择开始。它是通过设计简化的,并且不存在一些细微差别和选择。它针对召回而不是精度进行了优化。
本文通过各种数据存储选择,并解释了如何根据以下方式选择:
资源:
原文链接:https://77isp.com/post/10430.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态