Rub*_*rgh 28 key-value redis key-value-store node.js leveldb
Node.js支持多个进程的最快的非内存键值存储是什么?
我需要存储简单的键值字符串/字符串对(不是文档或JSON,只是字符串).
以下是一些示例(将有数百万个):
我试过了:
LevelDB的解决方法是多级的,它通过HTTP公开单个LevelDB进程.
但那当然需要付出代价; 我需要快速的东西.
是否有任何键值存储:
我只关心阅读.快速的多进程读取是必要的,但不是写入.
我对LevelDB的当前速度感到满意,只是因为它是单进程的事实.
额外细节:
您可以尝试ssdb
使用基于leveldb的redis协议兼容数据库.
https://github.com/ideawu/ssdb
您可以使用现有node-redis
客户端,但某些命令可能会有所不同.
基准:
Redis (100.000x)
13,540 op/s ? set small
13,289 op/s ? set medium
13,279 op/s ? set large
13,651 op/s ? get large
13,681 op/s ? get medium
14,428 op/s ? get small
SSDB (100.000x)
12,252 op/s ? set small
11,824 op/s ? set medium
11,720 op/s ? set large
13,810 op/s ? get large
13,593 op/s ? get medium
12,696 op/s ? get small
lmdb (100.000x)
4,616 op/s ? set small
11,104 op/s ? set medium
17,283 op/s ? set large
13,778 op/s ? get large
16,002 op/s ? get medium
50,562 op/s ? get small
multilevel (100.000x)
6,124 op/s ? set small
5,900 op/s ? set medium
5,944 op/s ? set large
6,215 op/s ? get large
6,125 op/s ? get medium
6,310 op/s ? get small
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,ssdb
几乎与redis一样快,并且它专为持久存储而设计.lmdb
提到@ didier-spezia对于获取小数据非常快,但设置一个很慢.
FaceBook 的RocksDB应该很快(特别是在 SSD 存储上),还有其他的,例如 LMDB(已经提到)和WiredTiger
您提到 Redis - 如果您想使用 Redis API,但使用上述键/值数据库之一作为存储而不是 RAM,我知道有两个项目(尽管尚未测试它们):LedisDB (用 Go 编写)和ardb(用 C++ 编写)。
我最近开始测试一个看起来非常有前途但鲜为人知(尽管我确信这会改变)的名为CuttDB的键值数据库库。它具有非常快的性能,旨在处理 HDD 上的大量数据。它甚至包括 Memcached 服务器接口。
您将遇到的问题是“闪电般的速度”和磁盘不能混合,特别是如果您像在键值系统中那样进行随机访问读取。您需要将尽可能多的数据放入内存,因为从内存读取比从磁盘读取要快很多数量级。
您想要最小化内存的原因是因为这将是一个嵌入式数据库吗?如果是这样,您可能想看看 Empress - http://www.empress.com。已经在几个项目中使用过它,您可以配置加载的数量。然而,它有 RDBMS 的开销,所以不确定它是否会像您想要的那样精简。
您还可以考虑使用带有 Memcache 插件的 MySQL。这允许您使用 MySQL 作为键值存储。因为跳过了 SQL 层处理,所以比常规 MySQL 快得多。此外,使用 MySQL,您可以转动旋钮来控制使用了多少内存。
Firebird 是另一个低内存使用数据库 - http://www.firebirdnews.org/docs/fb2min.html。
无论如何,希望这会有所帮助。如果没有对您的需求进行更深入的解释(这是嵌入式的,为什么需要节省内存,如果内存很宝贵,您认为低内存消耗是什么,您是否需要酸,冗余,您认为闪电速度是什么,等等)很难提供更多的分析。
归档时间: |
|
查看次数: |
18979 次 |
最近记录: |