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

发布于 2024-07-30 10:04:08 字数 273 浏览 7 评论 0原文

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

我的要求只是:

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

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

I like an idea of document oriented databases like CouchDB. I am looking for simple analog.

My requirements is just:

  1. persistance storage for schema less data;
  2. some simple in-proc quering;
  3. good to have transactions and versioning;
  4. ruby API;
  5. map/reduce is aslo good to have;
  6. should work on shared hosting

What I do not need is REST/HTTP interfaces (I will use it in-proc). Also I do not need all scalability stuff.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

望笑 2024-08-06 10:04:08

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

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

示例:

将数据插入商店:

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

更多信息在此博客文章

A very simple solution would be PStore from Ruby's Standard Library. It should meet almost all your requirements:

  1. PStore stores Ruby object hierarchies in files, so you can easily use the Hash-like structures, you would have in CouchDB
  2. You can access the contents of the PStore with a simple API
  3. It has transactions, but no versions as far as I know
  4. yes
  5. You can use Ruby's map and inject functions
  6. All you need is access to the file system

Example:

Insert data into the store:

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

Query the sum of the prices of all products:

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

More information in this blog-post

南街九尾狐 2024-08-06 10:04:08

听起来您需要 Berkeley DB。 它会执行您列出的所有操作,除了映射/归约之外。

Sounds like you need Berkeley DB. It does everything you list except for map/reduce.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文