我喜欢像 CouchDB 这样的面向文档的数据库的想法。我正在寻找简单的模拟。
我的要求只是:
- 无模式数据的持久存储;
- 一些简单的进程内查询;
- 有事务和版本控制很好;
- 红宝石API;
- map/reduce 也不错;
- 应该在共享主机上工作
我不需要的是 REST/HTTP 接口(我将在进程中使用它)。我也不需要所有可扩展性的东西。
我喜欢像 CouchDB 这样的面向文档的数据库的想法。我正在寻找简单的模拟。
我的要求只是:
我不需要的是 REST/HTTP 接口(我将在进程中使用它)。我也不需要所有可扩展性的东西。
一个非常简单的解决方案是来自 Ruby 标准库的PStore 。它应该满足您几乎所有的要求:
例子:
将数据插入存储:
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
查询所有产品的价格总和:
store.transaction do
store['products'].map {|p| p[:price]}.inject {|sum, p| sum + p}
end
听起来您需要Berkeley DB。它会执行您列出的所有操作,除了 map/reduce。