与 有什么不同?
发表于 : 2023-11-01 16:51:26
CAP 与 ACID 可能是数据工程领域最被广泛误解的问题之一。 今天,我们将着手消除任何误解,并为您提供可操作的实用指南,帮助您为实际应用程序选择正确的数据存储框架。 我们将把一些相当复杂的计算机科学理论分解为具有现实世界适用性的见解——包括查看实践中关键原理的示例。我们还将检查一些符合不同模型的现成数据库。 最后,我们将通过研究 Budibase 如何帮助团队将各种数据转化为行动来结束。 最后,您将对 CAP 与 ACID 有深入的了解,这样您就可以就如何为下一个项目构建完美的数据模型做出更明智的决定。 开始! ACID 与 CAP 定理:基本定义 我们首先了解 CAP 和 ACID 的基本定义。这是数据存储解决方案中事务如何发生的两种不同模型。 正如我们稍后将看到的,两者之间存在一定程度的重叠 - 但从根本上来说,它们处理的想法和问题略有不同。 我们还应该预先声明,当我们比较 CAP 定理与 ACID 时,它们并不是完全竞争的模型 - 因此并不总是选择其中之一的情况。 相反,CAP 是一个描述性定理,涉及所有数据存储解决方案的现实及其局限性。ACID 是一个实现特定标准的规范性模型 - 但它并不会使 CAP 失效。 让我们依次看看 ACID 和 CAP 定理各自的含义。
什么是CAP模型? CAP 代表一致性、可用性、分区容错性。该理论指出,在分布式数据存储中,只能以最佳方式实现其中三个特征中的两个。 该模型由 Eric Brewer 于 2000 年开发,作为一个定理,指出分布式数据库系统中这三个因素之间存在固有的折衷。 例如,我们可以具有一致性和分区容错性,但它们会以牺牲数据库管理系统的可用性为代价。 更具体地说,以下是我们所说的每个特征的含义: 一致性——无论从系统中的哪个节点检索数据,都会返回相同的数据——所以总的来说 Back link : 葡萄牙手机号码清单 我们在分布式计算中拥有一个一致的系统。 可用性- 每个请求都会返回数据,即使系统中的一个或多个节点发生故障也是如此。 分区容错性——即使由于网络分区或节点故障而导致各个节点之间的通信中断,整个系统仍然可以继续工作。 在写入操作被视为完成之前,通过立即将更改复制到所有其他节点来实现一致性。在实践中,可用性意味着系统中的所有工作节点都必须返回有效的响应。 分区容错可以通过不同的方式实现 - 例如将系统的某些部分指定为只读或允许节点独立运行,然后在解决中断后重新同步。
请记住,重点是我们只能针对其中三分之二进行优化。我们总是需要在其中之一上做出妥协。 我们还应该再次强调 CAP 定理适用于分布式系统。但这些是什么? 基本上,我们在这里指的是跨多个节点(可能是物理位置、虚拟机或容器)而不是在单个数据库中存储数据的任何系统。 这不仅限于大数据或物联网等高级用例。 相反,几乎所有基于云的 Web 应用程序都符合分布式系统的定义。因此,在开始构建 Web 应用程序之前,必须充分理解 CAP 定理。 稍后我们将回到如何围绕特定数据库做出决策。 数据准确性 (埃德Q ) 什么是 ACID 模型? 不过,首先让我们看看我们想要了解的另一个模型。ACID是一组规则,旨在在事务期间出现问题时确保数据的有效性。 这些规则是: 原子性- 事务的所有部分都必须成功,否则整个事务都会失败 - 无论是读取操作、写入操作还是更复杂的功能。 一致性——只有遵循指定的内部规则的交易才能完成。 隔离性——事务可以同时发生而不会相互影响。 持久性- 成功交易后保存数据。即使发生断电或其他网络故障,系统也会继续运行。 我们编写了专门的ACID 合规性指南 ,您可以在其中了解有关每项原则的更多信息。 现在,我们主要关注这与 CAP 定理有何不同。
什么是CAP模型? CAP 代表一致性、可用性、分区容错性。该理论指出,在分布式数据存储中,只能以最佳方式实现其中三个特征中的两个。 该模型由 Eric Brewer 于 2000 年开发,作为一个定理,指出分布式数据库系统中这三个因素之间存在固有的折衷。 例如,我们可以具有一致性和分区容错性,但它们会以牺牲数据库管理系统的可用性为代价。 更具体地说,以下是我们所说的每个特征的含义: 一致性——无论从系统中的哪个节点检索数据,都会返回相同的数据——所以总的来说 Back link : 葡萄牙手机号码清单 我们在分布式计算中拥有一个一致的系统。 可用性- 每个请求都会返回数据,即使系统中的一个或多个节点发生故障也是如此。 分区容错性——即使由于网络分区或节点故障而导致各个节点之间的通信中断,整个系统仍然可以继续工作。 在写入操作被视为完成之前,通过立即将更改复制到所有其他节点来实现一致性。在实践中,可用性意味着系统中的所有工作节点都必须返回有效的响应。 分区容错可以通过不同的方式实现 - 例如将系统的某些部分指定为只读或允许节点独立运行,然后在解决中断后重新同步。
请记住,重点是我们只能针对其中三分之二进行优化。我们总是需要在其中之一上做出妥协。 我们还应该再次强调 CAP 定理适用于分布式系统。但这些是什么? 基本上,我们在这里指的是跨多个节点(可能是物理位置、虚拟机或容器)而不是在单个数据库中存储数据的任何系统。 这不仅限于大数据或物联网等高级用例。 相反,几乎所有基于云的 Web 应用程序都符合分布式系统的定义。因此,在开始构建 Web 应用程序之前,必须充分理解 CAP 定理。 稍后我们将回到如何围绕特定数据库做出决策。 数据准确性 (埃德Q ) 什么是 ACID 模型? 不过,首先让我们看看我们想要了解的另一个模型。ACID是一组规则,旨在在事务期间出现问题时确保数据的有效性。 这些规则是: 原子性- 事务的所有部分都必须成功,否则整个事务都会失败 - 无论是读取操作、写入操作还是更复杂的功能。 一致性——只有遵循指定的内部规则的交易才能完成。 隔离性——事务可以同时发生而不会相互影响。 持久性- 成功交易后保存数据。即使发生断电或其他网络故障,系统也会继续运行。 我们编写了专门的ACID 合规性指南 ,您可以在其中了解有关每项原则的更多信息。 现在,我们主要关注这与 CAP 定理有何不同。