Ruby程序的持久哈希表?

我的 Ruby脚本需要一个小的非结构化数据库.不是sqlite,更像是持久性哈希表的东西可以完美地工作,只要它可以存储基本的Ruby结构(数组,字符串,哈希等 – 所有可序列化的)并且在Ruby脚本崩溃时不会被破坏.

我知道Perl和Tie :: Hash有很多类似的解决方案,所以对于Ruby来说可能有类似的宝石.那是什么宝石?

编辑:据我所知,PStore和yaml解决方案基于读取,解组,重新编组和在每次更改时编写整个数据库.这不仅要求所有它都适合内存,它是O(n ^ 2).所以它们都不是一个特别好的解决方案.

解决方法

也许 FSDB(文件系统数据库)将满足您的需求.

FSDB is a file system data base. FSDB provides a thread-safe,process-safe Database class which uses the native file system as its back end and allows multiple file formats and serialization methods. Users access objects in terms of their paths relative to the base directory of the database. It’s very light weight (the state of a Database is essentially just a path string,and code size is very small,under 1K lines,all ruby).

$sudo gem install fsdb

以下是文档中的示例:

require 'fsdb'

db = FSDB::Database.new('/tmp/my-data')

db['recent-movies/myself'] = ["LOTR II","Austin Powers"]
puts db['recent-movies/myself'][0]              # ==> "LOTR II"

db.edit 'recent-movies/myself' do |list|
  list << "A la recherche du temps perdu"
end

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...