附录 A. NOSQL 概述
近年来,NOSQL(Not Only SQL,或更直白地说,No to SQL,"拒绝 SQL")这一系列数据存储技术的受欢迎程度急剧上升。但 NOSQL 作为一个术语,定义了这些数据存储不是什么--它们不是以 SQL 为中心的关系数据库--而不是它们是什么,这是一组有趣而有用的存储技术,其操作、功能和架构特点多种多样。
为什么要创建这些新数据库?它们能解决什么问题?在这里,我们将讨论过去十年中出现的一些新数据挑战。然后,我们将了解包括图数据库在内的四个 NOSQL 数据库系列。
NOSQL 的崛起
一直以来,大多数企业级网络应用都是在关系数据库之上运行的。但在过去十年中,我们面临的数据量更大、变化更快、结构更多样,传统的 RDBMS 部署无法应对。为了应对这些挑战,NOSQL 运动应运而生。
随着存储量的急剧增加, ,数据量已成为企业采用 NOSQL 存储的主要驱动力,这一点并不奇怪。容量可以简单定义为存储数据的大小。
众所周知,大型数据集存储在关系数据库中会变得非常笨重。特别是,随着表的大小和连接次数的增加,查询执行时间也会增加(即所谓的连接痛苦)。这并不是数据库本身的错。相反,这是底层数据模型的一个方面,该模型在筛选出正确的解决方案之前,会为查询建立一组所有可能的答案。
为了避免联接和联接痛苦,从而更好地处理超大数据集,NOSQL 世界采用了关系模型的几种替代模型。虽然这些替代模型更善于处理超大数据集,但其表现力往往不如关系模型(图模型除外,它的表现力实际上更强)。
但是,数据量并不是现代面向网络的系统需要解决的唯一问题。除了数据量大之外,如今的数据通常变化非常快。速度就是 数据随时间变化的速度。
速度很少是一个静态指标。系统的内部和外部变化以及使用环境都会对速度产生相当大的影响。由于数据量大,可变速度要求数据存储不仅要处理持续的高写入负载,还要处理峰值。
速度还有另一个方面,即数据结构的变化速度。换句话说,除了特定属性的值发生变化外,承载这些属性的元素的整体结构也会发生变化。出现这种情况通常有两个原因。首先是快速变化的业务动态。随着业务的变化,数据需求也会发生变化。其次,数据采集通常是试验性的。有些属性是为了 "以防万一 "而采集的,而其他属性则是在后期根据需求变化而引入的。对业务有价值的属性会保留下来,而其他属性则会被淘汰。在关系型世界中,这两种形式的速度都存在问题,因为高写入负载会转化为高处理成本,而高模式波动性则会带来高运营成本。
尽管后来有评论家在最初的规模追求上添加了其他有用的要求,但最后的关键方面是认识到数据远比我们在关系型世界中处理的数据更加多样。为了证明数据的存在,请想想我们表格中的所有空值和代码中的空值检查。这就导致了最后一个得到广泛认可的面--多样性,我们将其定义为数据结构规则或不规则、密集或稀疏、连接或断开的程度。
酸与碱
当我们第一次接触 NOSQL 时,往往是在我们许多人已经熟悉的关系数据库的背景下。虽然我们知道数据和查询模型会有所不同(毕竟没有 SQL),但 NOSQL 存储使用的一致性模型也可能与关系数据库采用的一致性模型大相径庭。许多 NOSQL 数据库使用不同的一致性模型,以支持前面讨论过的数据量、速度和种类方面的差异。
让我们来探讨一下有哪些一致性功能可以帮助确保数据安全,以及在使用(大多数)NOSQL 存储时需要做出哪些权衡。1
在关系数据库领域,我们都熟悉ACID事务,它已经成为一种规范。ACID 保证为我们提供了一个安全的数据操作环境:
- 原子
-
事务中的所有操作都成功,或者每个操作都回滚。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access