gpt4 book ai didi

mongodb - MongoDB 在插入时的安全模式有多安全?

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

我正在做一个包含一些重要数据的项目。这意味着如果灯或服务器出现故障,我们不能丢失任何东西。我们使用 MongoDB 作为数据库。我想确保插入后我的数据在数据库中,如果没有插入一个元素,则回滚整个批处理。我知道 Mongo 背后的理念是我们不需要事务,但我如何确保我的数据在插入后真正安全地存储,而不是发送到某个“黑洞”。

  • 我应该搜索一下吗?

  • 我应该使用一些特定的 mongoDB 命令吗?

  • 即使一台服务器足以满足我是否应该使用分片
    速度,顺便说一句,如果光,它不能保证任何事情
    挂了?

什么是最好的解决方案?

最佳答案

您最好的选择是使用 Write Concerns - 这些可以让您告诉 MongoDB 一条数据的重要性。最快的 Write Concern 也是最不安全的 - 在下一次计划的刷新之前,数据不会刷新到磁盘。最安全的会在返回之前确认数据已经写入多台机器上的磁盘。

您正在寻找的写入问题是 FSYNC_SAFE(至少从 Java driver 的角度来看是这样称呼的)或 REPLICAS_SAFE,它确认您的数据已被复制。

请记住,MongoDB 没有传统意义上的事务 - 您的回滚必须手动回滚,因为您无法告诉 Mongo 数据库为您执行此操作。

您需要做的另一件事是使用相对较新的 --journal 选项(它使用预写日志),或者使用副本集在多台机器之间共享您的数据,以便在发生崩溃/断电时最大限度地提高数据完整性。

在处理特别大的数据集时,分片与其说是一种防止硬件故障的保护,不如说是一种分担负载的方法 - 分片不应与副本集相混淆,副本集是一种将数据写入多个磁盘的方式不止一台机器。

因此,如果您的数据足够有值(value),那么您绝对应该使用副本集,甚至可能在其他数据中心/可用区/机架/等中设置从站,以提供您所需的弹性。

有/将(不记得暂时实现了这是否已实现)一种方法来指定复制品集中单个节点的优先级如果有这样的机器可用,则同一个数据中心(即阻止该国另一端的奴隶成为主人,除非它确实是唯一的其他选择)。

关于mongodb - MongoDB 在插入时的安全模式有多安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7027065/

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