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

我的要求只是:

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

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

有帮助吗?

解决方案

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

  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

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

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

更多信息在此 博客文章

其他提示

听起来像你需要 伯克利数据库. 。它会执行您列出的所有操作,除了映射/归约之外。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top