Analogue incorporé de CouchDB, identique à sqlite pour SQL Server
-
10-07-2019 - |
Question
J'aime bien les bases de données orientées documents telles que CouchDB. Je cherche un analogue simple.
Mes exigences sont simplement:
- stockage persistant pour le schéma sans données;
- des requêtes simples in-proc;
- bon d'avoir des transactions et des versions;
- API ruby;
- mapper / réduire est également utile;
- devrait travailler sur l'hébergement partagé
Ce dont je n’ai pas besoin, c’est des interfaces REST / HTTP (je l’utiliserai in-proc). De plus, je n'ai pas besoin de tout ce qui concerne l'évolutivité.
La solution
Une solution très simple serait PStore de la bibliothèque standard de Ruby. Il devrait répondre à presque toutes vos exigences:
- PStore stocke les hiérarchies d’objets Ruby dans des fichiers, ce qui vous permet d’utiliser facilement les structures de type hachage que vous auriez dans CouchDB
- Vous pouvez accéder au contenu de PStore avec une simple API
- Il y a des transactions, mais pas de version à ma connaissance
- oui
- Vous pouvez utiliser la carte de Ruby et injecter des fonctions
- Tout ce dont vous avez besoin est un accès au système de fichiers
Exemple:
Insérer des données dans le magasin:
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
Interrogez la somme des prix de tous les produits:
store.transaction do
store['products'].map {|p| p[:price]}.inject {|sum, p| sum + p}
end
Plus d'informations dans ce blog-post
Autres conseils
On dirait que vous avez besoin de la base de données Berkeley . Il fait tout ce que vous listez à l'exception de mapper / réduire.