Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

Похоже, тебе нужно Беркли ДБ.Он делает все, что вы перечислите, кроме карты/сокращения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top