【发布时间】:2011-06-02 15:57:11
【问题描述】:
我需要存储数十万(现在,可能是数百万)文档,这些文档一开始是空的,并且经常被附加,但从未以其他方式更新或删除。这些文档没有任何关联,只需要通过某个唯一 ID 访问即可。
读取访问是文档的某个子集,它几乎总是从某个索引位置的中途开始(例如“文档 #4324319,将 #53 保存到末尾”)。
这些文档开始时非常小,只有几 KB。它们通常达到大约 500KB 的最终大小,但许多达到 10MB 或更多。
我目前正在使用 MySQL (InnoDB) 来存储这些文档。每个增量保存都只是转储到一个带有其所属文档 ID 的大表中,因此读取文档的一部分看起来像“select * from saves where document_id=14 and save_id > 53 order by save_id”,然后手动连接它全部在代码中。
理想情况下,我希望存储解决方案易于水平扩展,具有跨服务器的冗余(例如,每个文档存储在至少 3 个节点上),并且可以轻松恢复崩溃的服务器。
我已经将 CouchDB 和 MongoDB 视为 MySQL 的可能替代品,但我不确定它们中的任何一个对于这个特定的应用程序是否有很大的意义,尽管我愿意被说服。
关于一个好的存储解决方案有什么意见吗?
【问题讨论】:
-
你得到了很多 cmets。如果您认为其中一个可以接受,请将其标记为答案。
标签: mongodb couchdb storage database