对 MongoDB 的“丢失数据”批评在多大程度上仍然有效? 我指的是以下几点:
1. MongoDB 问题以不安全的方式写入 默认情况下,以便 赢得基准
如果您没有发出 getLastError () ,MongoDB 不会等待任何 从数据库确认命令已处理。 这至少引入了两类问题:
- 在并发环境(连接池等)中,您可以 在写操作“完成”之后,有一个后续的读操作失败; 没有障碍条件知道在什么点 数据库将识别一个写承诺
- 任何未知数量的保存操作都可以丢到地板上 由于在不同的地方排队,事情突出的 TCP 缓冲区等,当您的连接数据库下降是杀死或 赛格错误,硬件崩溃,应有尽有
MongoDB 会以许多惊人的方式丢失数据
以下是我们个人经历过的唱片丢失的方式:
- 他们只是偶尔消失,原因不明。
- 对损坏数据库的恢复不成功, 交易前日志交易前日志。
- 主从之间的复制在 oplog 中有 差距, 导致奴隶丢失了主人的记录,是的, 没有校验和,而且是的,复制状态具有 现役奴隶
- 复制有时会停止,没有错误 你的复制状态!
... [其他批评]
如果这些批评仍然有效,那么在一定程度上将令人担忧。本文主要引用 v1.6和 v1.8,但是从那时起 v2已经发布了。本文中讨论的缺点在当前版本中是否仍然突出?