Análogo incorporado de CouchDB, igual que sqlite para SQL Server
-
10-07-2019 - |
Pregunta
Me gusta una idea de bases de datos orientadas a documentos como CouchDB. Estoy buscando un análogo simple.
Mis requisitos son solo:
- almacenamiento de persistencia para datos sin esquema;
- algunas consultas simples en proceso;
- bueno tener transacciones y versiones;
- ruby ??API;
- map / reduce también es bueno tener;
- 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.
Solución
Una solución muy simple sería PStore de la Biblioteca estándar de Ruby. Debe cumplir con casi todos sus requisitos:
- 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
- Puede acceder al contenido de PStore con una API simple
- Tiene transacciones, pero no hay versiones que yo sepa
- sí
- Puedes usar el mapa de Ruby e inyectar funciones
- 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