
1
前言
分布式数据库系统是大多数企业和绝大多数应用程序不可或缺的一部分。这些应用程序
提供业务逻辑和用户界面,而数据库系统则负责确保数据的完整性、一致性和冗余性。
回到 2000 年,那时如果你要选择一个数据库,则只有少数几个选项,而且其中大部分
都属于关系型数据库,因此它们之间的差异相对较小。当然,这并不是说所有数据库都
是完全相同的,只是它们的功能和使用场景都非常相似。
其中一些数据库专注于
水平扩展
(scale out),即通过运行多个数据库实例(表现得像是
一个单一逻辑单元)来提高性能并增加容量,例如:Gamma 数据库机器项目、Teradata、
Greenplum、Parallel DB2 等。如今,水平扩展仍然是客户期望的最重要的数据库特性之
一,云服务的日益普及诠释了这一点。相较于将数据库迁移至更大型、功能更强大的计
算机进行
垂直扩展
(scale up),启动一个新实例并将其添加到集群中通常要容易得多。
因为迁移可能会耗时冗长且令人痛苦不堪,还可能会导致停机。
在 2010 年左右,一类新型的
最终一致性
数据库开始逐步涌现,并且一些诸如 NoSQL、
大数据
等术语也日益流行。在过去的 15 年间,开源社区、大型互联网公司和数据库供
应商构建了众多的数据库和工具,以至于当人们在试图理解它们的使用场景、细节和规
范时很容易迷失方向。
Amazon 团队于 2007 年发布的 Dynamo 论文 [DECANDIA07] 对数据库社区产生了相
当巨大的影响,在短时间内它便激发出了许多变体和实现。其中最突出的是诞生于 ...