3

我多次听到像 HBase 强一致性这样的公司。我读过 HBase 并喜欢它。然后我想到了mongodb write和那时的区别。查了一下MongoDB似乎也有很强的一致性。但它是一致的吗?看起来 HBase 有事务,而 MongoDB 没有。我有点困惑。我发现的只是它们的简单插入和更新,以及它们如何复制的解释。我没有看到交易。

MongoDB 和 HBase 一致性有什么区别?我相信 HBase 有 ACID 事务,mongodb 是否有任何东西可以处理多个插入,或者是否期望所有内容都应该在一个文档中?(我想不出atm不够好的原因)。

出于一致性和复制的原因,有什么区别?为什么有人会选择另一种?

4

3 回答 3

3

我只能回答 MongoDB。

MongoDB 没有服务器端事务。这并不意味着所有插入都应该是一个文档,因为 3 或 5 层深的文档的多级嵌套可能会变得难以管理。更重要的是,它目前根本不受支持,使用 MongoDB 的社区个人选择投票并支持不同的功能。

话虽这么说 MongoDB 可以进行客户端事务:http ://docs.mongodb.org/manual/tutorial/perform-two-phase-commits/但是由于这不是与数据库服务器本身隔离的,因此它仍然对某些失败开放可能影响其创建完整事务的能力的场景。

话虽如此,如果您要编写一个可以跨集群管理事务查询的守护程序,我看不出它比 HBase 提供的持久性差的任何原因。

我不能说 HBase 一致性,因为我个人实际上并没有在生产环境中使用 HBase,但是 MongoDB 确实具有所有正常级别的单个查询的读写一致性,您期望 HBase 和 SQL 允许安全插入级别,实际上可以在您的应用程序获得操作的成功回调之前复制到集群的其他节点。事实上,MongoDB 的默认设置最终并不一致,但是您可以这样做。

我个人在这里和其他地方听说过,两者之间的一致性和复制之间的偏好是主观的,归结为您的场景、硬件、平台和其他细节,我们可能无法在这里完全讨论。

于 2012-10-25T08:47:47.003 回答
0

从 v4.0(2018 年夏季推出)开始,MongoDB 将支持多文档 ACID 事务。在以下位置注册测试版程序:https ://www.mongodb.com/transactions

于 2018-02-22T14:41:13.880 回答
0

我可以回答 hbase 方面的问题。首先,每行只能在 hbase 中进行事务。你有两种原子操作。

  1. 检查并放置。

  2. 原子计数器

如果您希望能够为多行编写事务。我可以为您推荐 2 个开源:1. https://github.com/VCNC/haeinsa。我认为这个开源是我目前发现的最好的。它使用 check & put 并在行上执行某种 2 阶段提交。

  1. https://github.com/caskdata/tephra。这个开源结合了客户端服务器和协处理器。在我看来,这可能不是规模,因为服务器是一个瓶颈。

还有2阶段提交。而且我猜对于非常快速的交易,它可能比海印快。

于 2015-07-23T19:28:49.223 回答