Question

J'aime bien les bases de données orientées documents telles que CouchDB. Je cherche un analogue simple.

Mes exigences sont simplement:

  1. stockage persistant pour le schéma sans données;
  2. des requêtes simples in-proc;
  3. bon d'avoir des transactions et des versions;
  4. API ruby;
  5. mapper / réduire est également utile;
  6. 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é.

Était-ce utile?

La solution

Une solution très simple serait PStore de la bibliothèque standard de Ruby. Il devrait répondre à presque toutes vos exigences:

  1. 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
  2. Vous pouvez accéder au contenu de PStore avec une simple API
  3. Il y a des transactions, mais pas de version à ma connaissance
  4. oui
  5. Vous pouvez utiliser la carte de Ruby et injecter des fonctions
  6. 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top