【发布时间】:2011-04-01 00:04:25
【问题描述】:
我们部署了一个由 Comet 服务器提供服务的(基于 AJAX 的)即时通讯工具。为了满足法律保留要求,我们需要将发送的消息存储在数据库中以供长期存档。
哪个数据库引擎在这种一次写入、从不读取(极少数例外)要求中提供最佳性能?
我们需要至少 5000 次插入/秒。我假设既不是 MySQL 也不是 PostgreSQL 可以满足这些要求。
有更高性能解决方案的建议吗? HamsterDB、SQLite、MongoDB ...?
【问题讨论】:
-
我正在将一些应用程序重组为 mongoDB。您在列表中忘记了 CouchDB,但根据我所学到的,我也会选择 mongoDB...
-
谢谢,这意味着我会以正确的方式使用 MongoDB,还有更多的 MongoDB 投票吗? :-)
-
在我最近的测试中,我在四核服务器上使用 MySQL/Innodb 实现了 14K tps,并且吞吐量在 python 中是 cpu-bound,而不是 mysql。换句话说,您对 MySQL 的假设是完全错误的。我的交易是非常简单的测试和插入,有争用,想想在许多用户之间玩的“King of the Hill”。
-
如果您需要数据一致性、密钥访问、故障转移、临时查询支持等,数据库是正确的解决方案。您的问题没有这些要求。因此,数据库是一个糟糕的选择。有一些免费或低成本的开源日志记录解决方案,但在您的性能级别上,将数据写入平面文件(可能以逗号分隔格式)是最佳选择。 JSON 或任何键值对格式将使存储需求增加大约一倍,并且由于键将重复数百万次,因此会产生大量冗余。
-
我见过 100KB 插入/秒 gce mysql 4CPU 内存 12GB 和 200GB ssd 磁盘。
标签: mysql sqlite postgresql mongodb