Pregunta

Me gusta una idea de bases de datos orientadas a documentos como CouchDB. Estoy buscando un análogo simple.

Mis requisitos son solo:

  1. almacenamiento de persistencia para datos sin esquema;
  2. algunas consultas simples en proceso;
  3. bueno tener transacciones y versiones;
  4. ruby ??API;
  5. map / reduce también es bueno tener;
  6. debería funcionar en hosting compartido

Lo que no necesito son las interfaces REST / HTTP (lo usaré en el proceso). Además, no necesito todas las cosas de escalabilidad.

¿Fue útil?

Solución

Una solución muy simple sería PStore de la Biblioteca estándar de Ruby. Debe cumplir con casi todos sus requisitos:

  1. PStore almacena las jerarquías de objetos de Ruby en archivos, por lo que puede usar fácilmente las estructuras tipo Hash que tendría en CouchDB
  2. Puede acceder al contenido de PStore con una API simple
  3. Tiene transacciones, pero no hay versiones que yo sepa
  4. Puedes usar el mapa de Ruby e inyectar funciones
  5. Todo lo que necesitas es acceder al sistema de archivos

Ejemplo:

Insertar datos en la tienda:

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

Consulta la suma de los precios de todos los productos:

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

Más información en esta blog-post

Otros consejos

Parece que necesita Berkeley DB . Hace todo lo que enumera, excepto el mapa / reducir.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top