Domanda

Mi piace l'idea di database orientati ai documenti come CouchDB. Sto cercando un semplice analogo.

Le mie esigenze sono solo:

  1. memoria a persistenza per schema meno dati;
  2. alcune semplici richieste in-proc;
  3. buono per avere transazioni e versioning;
  4. API ruby;
  5. map / ridurre è anche bello avere;
  6. dovrebbe funzionare su hosting condiviso

Ciò di cui non ho bisogno sono le interfacce REST / HTTP (lo userò in-proc). Inoltre non ho bisogno di tutte le cose di scalabilità.

È stato utile?

Soluzione

Una soluzione molto semplice sarebbe PStore dalla libreria standard di Ruby. Dovrebbe soddisfare quasi tutti i tuoi requisiti:

  1. PStore archivia le gerarchie di oggetti Ruby in file, in modo da poter usare facilmente le strutture simili a hash, come avresti in CouchDB
  2. Puoi accedere al contenuto del PStore con una semplice API
  3. Ha transazioni, ma nessuna versione per quanto ne so
  4. Si
  5. Puoi usare la mappa di Ruby e inserire funzioni
  6. Tutto ciò che serve è l'accesso al file system

Esempio:

Inserisci i dati nel negozio:

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

Richiedi la somma dei prezzi di tutti i prodotti:

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

Ulteriori informazioni in questo blog-post

Altri suggerimenti

Sembra che tu abbia bisogno di Berkeley DB . Fa tutto ciò che elenchi tranne la mappa / riduzione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top