Встроенный аналог CouchDB, такой же, как sqlite для SQL Server - PullRequest
5 голосов
/ 03 августа 2009

Мне нравится идея баз данных, ориентированных на документы, таких как CouchDB. Я ищу простой аналог.

Мои требования просто:

  1. постоянное хранилище для данных без схемы;
  2. некоторые простые внутрипроцессные запросы;
  3. хорошо иметь транзакции и управление версиями;
  4. ruby ​​API;
  5. карта / уменьшить также хорошо иметь;
  6. должен работать на виртуальном хостинге

Что мне не нужно, так это интерфейсы REST / HTTP (я буду использовать их в процессе) Также мне не нужны все вещи для масштабирования.

Ответы [ 2 ]

4 голосов
/ 31 августа 2009

Очень простым решением будет PStore из стандартной библиотеки Ruby. Он должен соответствовать практически всем вашим требованиям:

  1. PStore хранит иерархии объектов Ruby в файлах, поэтому вы можете легко использовать Hash-подобные структуры, как в CouchDB
  2. Вы можете получить доступ к содержимому PStore с помощью простого API
  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

Больше информации в этом блоге

0 голосов
/ 04 августа 2009

Звучит так, как вам нужно Беркли DB . Он выполняет все, что вы перечисляете, кроме карты / уменьшения.

...