繁体   English   中英

mongodb中的交易担保

[英]Transactional guarantee in mongodb

因此,我正在对MongoDB进行研究,以符合高层管理人员的决策,即采用开放源代码并将现有产品数据库从SQL Server迁移到MongoDB并进行整体改进。 请注意,我们的数据库应侧重于数据一致性事务保证

我发现这篇文章: 单击此处 帖子摘要如下:

MongoDB声称是高度一致的,但是最近有大量证据表明,在某些情况下(当发生网络分区时,这可能会在高负载下发生)并非如此。 这意味着您可能会丢失MongoDB确认为“成功写入”的记录。

就您的应用程序而言,如果您需要事务保证(这意味着如果无法进行持久写入,则需要使事务失败),则应避免使用MongoDB。 强一致性和持久性至关重要的示例方案包括“在银行帐户中存款”或“创建出生记录”。 换句话说,在这些情况下,如果您指示操作成功而没有成功,那么您的客户就会被打在脸上。

因此,我的问题如下:
1)在当前版本的MongoDB中,“丢失的数据”仍然有效到什么程度?
2)可以采取什么方法来确保MongoDB中的交易担保?

我非常确定,如果像PayPal这样的公司确实使用MongoDB,肯定有解决这些问题的方法。

该帖子中的参考资料之前已经在这里进行了讨论(例如,这里是其中之一: MongoDB:Write Concern是否保证在primary上至少写入一个Secondary上的内容 )。 无需重复您的问题。

博客“ Aphyr”主要使用这些文章来宣传自己的技术(如果您阅读了整个博客,您将意识到他们拥有自己的数据库,他们正在营销)。 他们显示的每个数据库都会丢失自己的数据库。

2)可以采取什么方法来确保MongoDB中的交易担保?

我同意您应该在客户端代码中处理数据库问题,如果不能,那么在发生分区的情况下客户端将如何保持一致?

由于您不是Harry Potter(是吗?),我会说您需要检查客户端代码中引发的异常,并根据需要对它们做出反应。

1)在当前版本的MongoDB中,“丢失的数据”仍然有效到什么程度?

至于他在2.4.3中提到的错误:正如我在链接文章中提到的那样,他未能再次陈述该错误参考,所以仍然没有评论。

另外2写6,000? 这比我在分区上的MySQL中看到的数据丢失少! 所以不要太破旧。

我没有在自己的应用程序中注意到这种行为,并且从小型站点到超大型站点,我都没有注意到有人复制了该文章中显示的基准类型方案,我非常怀疑您会这样做。

我非常确定,如果像PayPal这样的公司确实使用MongoDB,肯定有解决这些问题的方法。

他们将使用严格的编码来确保分布式环境中的一致性。

当然,他们会从针对情况选择合适的技术开始...

写关注参考

写关注描述了MongoDB请求对独立mongod或副本集或分片群集进行写操作的确认级别。 在分片群集中,mongos实例会将写关注事项传递给分片。

https://docs.mongodb.org/v3.0/reference/write-concern/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM