CouchDB的嵌入式模拟,与SQL Server的sqlite相同

Mik*_*liy 5 ruby database document-oriented-db

我喜欢像CouchDB这样的面向文档的数据库.我正在寻找简单的模拟.

我的要求就是:

  1. 持久存储模式较少的数据;
  2. 一些简单的进程中查询;
  3. 很高兴有交易和版本;
  4. ruby API;
  5. map/reduce也很好;
  6. 应该在共享主机上工作

我不需要的是REST/HTTP接口(我将在进程中使用它).此外,我不需要所有可扩展性的东西.

jgr*_*gre 4

一个非常简单的解决方案是Ruby 标准库中的PStore 。它应该满足您几乎所有的要求:

  1. PStore 在文件中存储 Ruby 对象层次结构,因此您可以轻松使用 CouchDB 中的类似哈希的结构
  2. 您可以使用简单的 API 访问 PStore 的内容
  3. 它有交易,但据我所知没有版本
  4. 是的
  5. 您可以使用 Ruby 的映射和注入函数
  6. 您所需要的只是访问文件系统

例子:

将数据插入存储:

require 'pstore'
store = PStore.new("/tmp/store")
store.transaction do
  store["products"] = [{:name => "Test", :price => 100}
                       {:name => "Bla", :price => 120}
                       {:name => "Oink", :price => 300}]
end
Run Code Online (Sandbox Code Playgroud)

查询所有商品的价格总和:

store.transaction do
  store['products'].map {|p| p[:price]}.inject {|sum, p| sum + p}
end
Run Code Online (Sandbox Code Playgroud)

这篇博文中有更多信息