【发布时间】:2016-02-05 06:20:55
【问题描述】:
如果我的服务器断电,假设所有对磁盘的写入都成功,我会丢失多少“已确认”的写入?
Redis:10k 写入或 15 分钟中的较小值。见config
MongoDB:journaling enabled
RethinkDB:0,见How does RethinkDB handle write durability?
CouchDB:0,见setting
FoundationDB:0。声称是带有密钥库和 SQL 接口的 ACID。
MySQL:~0(见 cmets)
每个问题的答案都是:“视情况而定”。那么它取决于什么,以及默认值是什么。不是一个更好,我只需要知道它们的区别:-)
从下面的 cmets 更新
嘿,有一个人在这方面写博客。剧透警告:every database sucks 请注意,有些文章是关于以前发布的版本。
【问题讨论】:
-
MongoDB 在现实中更接近 30ms。它被编入目录,因为这是文件系统可以同步的最大值
-
MySQL 也可能在整个事务二进制文件发送到服务器之前丢失数据(在这种情况下 MySQL 会丢弃部分更改),它不完全为 0,如果您添加了复制它可以与 MongoDB 损失一样长。
-
@Sammaye,你有更多信息的链接吗?
-
大约30ms,没有;这是从 10gen 员工那里学到的东西。关于复制,嗯,实际上是阅读有关复制类型(默认为异步)的 MySQL 文档以及在多种情况下多次实际使用 MySQL berak 的经验。
-
不能代表其他数据库,但是对于 MongoDB,您可以通过在副本集中将写入关注设置为
w:majority或w:2将其减少为 0。对于生产数据,无论如何你都需要一个副本集。
标签: mongodb redis couchdb rethinkdb foundationdb