ACID与基础数据存储

时间:2020-02-23 14:33:25  来源:igfitidea点击:

关系数据库系统的一个标志是称为ACID合规性的东西。
正如我们可能猜到的那样,ACID是一个缩写 ,意味着描述个体数据库事务的特征,可以如此列表中所述扩展:

  • 原子性(Atomicity):数据库事务必须完全成功或者完全失败。不允许部分成功。

  • 一致性(Consistency):在数据库事务期间,RDBMS从一个有效状态进行了另一个。国家永远不会无效。

  • 隔离(Isolation):客户端的数据库事务必须与尝试与RDBMS交易的其他客户端隔离。

  • 耐久性(Durability):作为交易的一部分的数据操作必须反映在非易失性存储(即使在不适用于硬盘时也可以检索存储信息的计算机内存)并在事务成功完成后持续。事务失败不能以部分承诺的状态留下数据。

RDBMSS的某些用例,如在线事务处理,依赖于客户端与系统的RDBMS之间的酸兼容事务,以便正确运行。
符合酸性交易的一个很好的例子是将资金从一个银行账户转移到另一个银行账户。

这将分为两个数据库事务,原始帐户显示提款,目的地帐户显示存款。
显然,这两个交易必须绑在一起,以便有效,以便如果其中任何一个失败,整个操作必须无法确保两个余额保持有效。

Hadoop本身没有交易的概念(甚至对此问题甚至记录),因此它显然不是符合酸的系统。
更具体地思考整个Hadoop生态系统中的数据存储和处理项目,它们都不是符合完全酸性的。
但是,他们确实反映了我们经常在NoSQL数据存储中看到的属性,因此Hadoop方法有一些先例。

NoSQL数据存储背后的一个关键概念是,并非每个应用程序都真正需要符合酸的交易。
放松某些酸性(并远离关系模型)已经开辟了丰富的可能性,这使得一些NoSQL数据存储能够实现其利基应用的大量可扩展性和性能。

虽然酸定义了可靠的交易处理所需的关键特性,但NoSQL世界需要不同的特性来实现灵活性和可扩展性。
这些反对特性在首字母缩略词中巧妙地捕获:

  • 基本可用:该系统保证可供所有用户查询。 (这里没有隔离。)

  • 软状态:存储在系统中的值可能因最终的一致性模型而变化,如下一个子弹中所述。

  • 最终一致:随着数据被添加到系统中,系统的状态逐渐复制到所有节点上。例如,在Hadoop中,当文件被写入HDF时,在写入原始数据块之后在不同的数据节点中创建数据块的副本。在复制块之前的短时间内,文件系统的状态并不一致。

首字母缩略词基数有点编辑,因为大多数NoSQL数据商店并不完全放弃所有的酸特征 - 这不是众所周知的极性相反的概念,换句话说。
此外,软状态和最终一致的特征金额相同,但点是通过放松一致性,系统可以水平缩放(许多节点)并确保可用性。

没有提及帽定理就没有讨论NoSQL,这代表了建筑师旨在在其系统中提供的三种保证:

  • 一致性:与酸中的C类似,系统中的所有节点都会随时对数据相同的视图。

  • 可用性:系统始终响应请求。

  • 分区公差:如果系统节点之间存在网络问题,系统将在线保持联机。

CAP定理指出,在分布式网络系统中,架构师必须选择这三个保证中的两个 - 我们无法保证用户所有三个。
这让我们带来了三种可能性:

  • 使用传统关系技术的系统通常不会宽容,因此他们可以保证一致性和可用性。简而言之,如果这些传统关系技术系统的一部分是脱机的,则整个系统是离线的。

  • 分区公差和可用性主要重要的系统无法保证一致性,因为可以在分区的两侧进行更新(一致性的驱动器)。键值存储Dynamo和CouchDB和Colume-Family Store Cassandra是分区容忍/可用性(PA)系统的流行示例。

  • 分区公差和一致性主要重要性的系统无法保证可用性,因为系统返回错误,直到分区状态已解决。
    基于Hadoop的数据存储被认为是CP系统(一致和分区容忍)。通过冗余存储在许多从节点上的数据,可以容忍到Hadoop集群的大量部分(分区)的中断。 Hadoop被认为是一致的,因为它具有中央元数据存储(NameNode),其维护存储在群集中的单个,一致的数据视图。