gpt4 book ai didi

mongodb - NoSQL:MongoDB 或 BigTable 并不总是 "Available"意味着什么

转载 作者:IT老高 更新时间:2023-10-28 13:06:55 25 4
gpt4 key购买 nike

阅读 Nathan Hurst 的 Visual Guide to NoSQL Systems ,他包括 CAP 三角形:

  • C一致性
  • A可用性
  • P分区容差

enter image description here

SQL Server 是 AC 系统,MongoDB 是 CP 系统。

这些定义来自 UC Berkley professor Eric Brewer, and his talk at PODC 2000 (分布式计算原理):

Availability

Availability means just that - the service is available (to operate fully or not as above). When you buy the book you want to get a response, not some browser message about the web site being uncommunicative. Gilbert & Lynch in their proof of CAP Theorem make the good point that availability most often deserts you when you need it most - sites tend to go down at busy periods precisely because they are busy. A service that's available but not being accessed is of no benefit to anyone.

在 MongoDB 或 BigTable 的上下文中,系统不“可用”是什么意思?

您是否进行连接(例如通过 TCP/IP),但服务器没有响应?您是否尝试执行查询,但查询从不返回 - 或返回错误?

不可用是什么意思

最佳答案

在这种情况下的可用性意味着在网络分区的情况下,客户​​端连接的服务器可能无法保证客户端期望的一致性级别(或系统配置为提供)。

假设您在假设的分布式系统中有 3 个节点 A、B 和 C。 A、B 和 C 各自运行在自己的服务器机架中,它们之间有 2 个交换机:

[Node A] <- Switch #1 -> [Node B] <- Switch #2 -> [ Node C ]

现在假设所述系统已设置,因此可以保证任何写入在被视为已提交之前将至少到达 2 个节点。现在,让我们假设交换机#2 被拔掉,并且一些客户端连接到节点 C:

[Node A] <- Switch #1 -> [Node B]                 [ Node C ] <-- Some client

该客户端将无法发出一致性写入,因为分布式系统当前处于分区状态(即节点 C 无法联系足够多的其他节点以保证所需的 2 节点一致性)。

我要补充一点,一些 NoSQL 数据库允许非常动态地选择 CAP 属性。例如,Cassandra 允许客户端指定在每次写入之前写入必须到达的服务器数量。写入单个服务器是“AP”,写入仲裁(或所有)服务器更多的是“CA”。

编辑 - 来自以下评论:

在 MongoDB 中,您只能在副本集中进行主/从配置。这意味着 AP 与 CP 的选择是由客户端在查询时做出的。客户端可以指定slaveOk,它将从任意选择的slave(可能有陈旧数据)中读取:mongodb.org/display/DOCS/…。如果客户端对陈旧数据不满意,请不要指定 slaveOk,查询将转到主服务器。如果客户端无法访问主服务器,那么您将收到错误消息。我不确定这个错误到底是什么。

关于mongodb - NoSQL:MongoDB 或 BigTable 并不总是 "Available"意味着什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7339374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com