5

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

我的要求只是:

  1. 无模式数据的持久存储;
  2. 一些简单的进程内查询;
  3. 有事务和版本控制很好;
  4. 红宝石API;
  5. map/reduce 也不错;
  6. 应该在共享主机上工作

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

4

2 回答 2

4

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

  1. PStore 将 Ruby 对象层次结构存储在文件中,因此您可以轻松使用 CouchDB 中的类似 Hash 的结构
  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

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

store.transaction do
  store['products'].map {|p| p[:price]}.inject {|sum, p| sum + p}
end

博客文章中的更多信息

于 2009-08-31T14:21:55.803 回答
0

听起来您需要Berkeley DB。它会执行您列出的所有操作,除了 map/reduce。

于 2009-08-04T07:43:56.640 回答