【问题标题】:Fast write performance, even if reads are very slow快速的写入性能,即使读取速度非常慢
【发布时间】:2012-07-15 10:19:43
【问题描述】:

对不起,如果已经有答案,我搜索了它,但没有找到完全适合我的方案。

又是一个类似“什么是最快/最佳性能的数据库?”之类的问题。但由于答案取决于场景,我的场景是这样的:我想将许多日志写入数据库,每秒数千。但我不会经常阅读它们。事实上,其中 99,99% 将永远不会再被阅读,但有时我需要阅读。模式并不复杂,只是键/值。偶尔我会按价值阅读,如果阅读需要几分钟,我根本不在乎。读取的正确性很重要,但性能却不是。

到目前为止,最好的解决方案似乎是 MongoDB、Cassandra……也许是最好的 DynamoDB?

【问题讨论】:

  • 真的没有“最好”;如果有,你就不需要问了,这只是常识。你的候选人都是有价值的,而且更多的是品味问题而不是任何事实。就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、参考资料或特定专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。
  • 你打算写结构化的日志吗?您希望它们在很长一段时间内的延迟有多大?
  • 好吧,我认为如果我说对于非常具体的场景(如所描述的那样)来说什么是最好的,那将是一个很好的问题。即使答案是一组产品,而不是最重要的一个。
  • 非结构化。这是你能想象到的最简单的数据结构:key:value。一个有 2 列的表。而且很大。事实上,考虑到我们可能发现的限制,它将尽可能大。您可以想象:每秒数千次插入。我们从不更新。我们很少会做阅读。对我们来说,重要的是不要删除任何东西,除非真的很旧。我们只需要知道以后,如果我们需要通过键读回其中一个值,即使读取需要很长时间,也是可以做到的。我们可能会每月阅读一次,但它会为我们节省很多钱,所以值得。

标签: database performance insert scalable


【解决方案1】:

我想说,任何 DBMS 都切换到最低隔离级别并且没有索引。如果你把它和一个好的存储系统放在一起,也许是一个带有 SSD 的 RAID 0。永远禁食。

很难说哪个 DBMS 是最好的,通常你想要最好的 dbms,它特别擅长做某事,但你需要一个基本上只写限制最少的东西的 dbms,我听说 mysql 在这方面可以做得很好.

【讨论】:

  • 很高兴知道,但我认为 MongoDB 或 DynamicDB 之类的东西会比我用 mySql 做的任何事情都更快,特别是更具可扩展性。顺便说一句,你不觉得使用云服务吗会比使用 RAID 之类的东西更好地扩展吗?只是我的看法,我不是这方面的专家。
【解决方案2】:

如果您追求的是快速写入,那么您有几个选择。假设您将是维护数据库的人,您可以将插入写入内存,并在它们达到一定大小后刷新它们。这样你就不会多次敲击磁盘。

如果我没记错的话,MongoDB 已经这样做了,而且如果您禁用日志记录,它可以显着提高写入性能,这正是您想要的。

无论哪种方式,缓存和批量插入都是适用于任何数据库的方式。

【讨论】:

    猜你喜欢
    • 2020-04-27
    • 1970-01-01
    • 2016-11-25
    • 2012-02-25
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多