9

我需要快速可靠的 Ruby 键值对存储。已经有类似的东西了吗?

要求是它完全在 Ruby 进程内运行,不需要任何外部进程。
它可能在内存中,具有显式磁盘刷新。
它需要最小的键值检索时间,写入时间可能不太好。
存储的数据量不会很糟糕,大约几十万个键,每个键都有 ~1kb 的文本值。

4

7 回答 7

5

事实证明,对我来说最好的选择是使用普通 Hash 和 Marshal 将其序列化到磁盘。
对于这么多对象,YAML 肯定太慢了。
感谢@ian-armit 加强了我对核心 Ruby 库的信任。

于 2012-11-14T20:15:59.927 回答
5

您还可以尝试Moneta,它允许您构建嵌入在 ruby​​ 进程中的自己的键/值存储。

于 2012-12-31T03:06:23.673 回答
2

喜欢 DBM? http://www.ruby-doc.org/stdlib-1.9.3/libdoc/dbm/rdoc/DBM.html

(垃圾邮件机器人的填充物)

DBM 类为 Unix 风格的 dbm 或数据库管理器库提供了一个包装器。

Dbm 数据库没有表或列;它们是简单的键值数据存储,就像 Ruby 哈希一样,但不驻留在 RAM 中。键和值必须是字符串。

于 2012-11-14T18:49:54.560 回答
1

你可以试试 Oria:https ://github.com/intridea/oria

Oria (oh-rye-uh) 是一个内存中的、基于 Ruby 的零配置键值存储。它旨在快速轻松地处理中等数量的数据,而不会导致部署问题或服务器问题。它使用 EventMachine 为半持久存储提供网络接口,并将内存中的数据异步写入 YAML 文件。

于 2012-11-15T05:29:43.530 回答
0

LevelDB,这里有ruby​​ bindings

于 2013-04-19T03:12:05.320 回答
0

Daybreak是一个不错的新选择。数据存储在内存中的表中,因此可以使用 Ruby 细节(每个、过滤器、映射、减少等),并且似乎比 pstore 或 dbm 更快。

有关更多信息,请参阅此博客文章

于 2013-02-01T11:49:55.260 回答
0

查看PStore。但不确定它是否足够快。

于 2013-01-27T19:00:19.500 回答