Database design 允许写入和删除的键值存储 问题

Database design 允许写入和删除的键值存储 问题,database-design,hashtable,bigdata,key-value-store,Database Design,Hashtable,Bigdata,Key Value Store,难以找到允许写入和删除的键值存储 细节 需要一个好的键值存储来存储非常大的哈希表。这些哈希表用作索引,非常“活跃”。对它们执行了很多删除和写入操作 目前,我们将这些哈希表存储在大型(128gb RAM)Redis服务器中。Redis表现出色。但考虑到Redis将所有东西都存储在RAM中,这并不奇怪。我们尝试过的其他数据库,如Cassandra和MongoDB,在写操作(尤其是删除操作)过重时,会遭受巨大的性能损失 我们推测,应该有一个数据库,它将使用SSD(固态驱动器)而不是依赖RAM来包含整个

难以找到允许写入和删除的键值存储

细节 需要一个好的键值存储来存储非常大的哈希表。这些哈希表用作索引,非常“活跃”。对它们执行了很多删除和写入操作

目前,我们将这些哈希表存储在大型(128gb RAM)Redis服务器中。Redis表现出色。但考虑到Redis将所有东西都存储在RAM中,这并不奇怪。我们尝试过的其他数据库,如Cassandra和MongoDB,在写操作(尤其是删除操作)过重时,会遭受巨大的性能损失

我们推测,应该有一个数据库,它将使用SSD(固态驱动器)而不是依赖RAM来包含整个数据

这是我们的标准:

  • 允许大量写入和删除
  • 使用SSD而不是将所有内容都包含在RAM中(如Redis)表现良好
  • 不需要很多“搜索功能”,比如创建有序索引。实际上,只需按键
    获取
    设置
我一直在四处搜索,但我遇到的大多数信息似乎主要集中在功能上(clusterable、map reduce等)。有一些关于性能的参考,比如“低延迟”,我希望它是从键值存储中得到的。通过搜索诸如“delete-tolerant key-value store”之类的术语,我没能找到多少答案

问题:
  • 我应该如何着手寻找正确的数据库
  • 是否有任何“关键”术语我应该搜索?(如“低延迟”)
  • 是否有数据库类在某种程度上适合此用例

你可以考虑

专业人士

  • 保存到磁盘。专为高写入率而设计,如高滴答的市场数据,如options Opera feed
  • 小条目的典型延迟约为1微秒。读和写
  • 比redis快得多。大约2个数量级
  • 在带有SSD存储的128 GB机器(我定期测试)上,支持每秒超过2000万次的写入速率,数据集为500 GB
  • 支持在128 GB计算机上持久化5亿个密钥值
  • Apache2.0OSS
  • 无GC设计。i、 e.可在不产生任何垃圾的情况下使用
缺点

  • 仅支持Java7+
  • 在128 GB计算机上测试了25亿个条目,但在这一点及以上的性能不一致。e、 g.写入速率从每秒2600万下降到130万
编年史地图没有墓碑或压缩。一旦它增长到一个特定的大小,它就不会减少磁盘使用量,尽管它试图以一种有效的方式重用已删除的条目

更多链接

考虑一下RocksDb

它是一个简单的键值存储,并针对SSD进行了优化

他们在基准测试中使用了800 GB的数据库:

要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题对于堆栈溢出来说是离题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决该问题所做的工作。嘿,Kermit,这个问题是在寻求有关搜索正确数据库的策略方面的帮助。它不是要求具体的建议。例如,我应该搜索哪些关键术语?是否有数据库类在某种程度上适合此用例?我熟悉术语“低延迟”,但不确定哪一个术语适用于允许删除的数据库。