2011-01-31 11 views
5

Ho bisogno di scegliere un database per la memorizzazione di dati statistici (in realtà si tratta di una serie di dati di valore di data/ora). Capisco che praticamente qualsiasi database può gestire questo, ma ci sono un paio di requisiti:Miglior database per la memorizzazione delle statistiche da Erlang

  • dovrebbe essere veloce;
  • dovrebbe essere in grado di gestire MOLTO i dati (10s di gigabyte) e unire veloce;
  • dovrebbe avere una stabile, mantenuta e una comoda interfaccia per Erlang;
  • dovrebbe essere disponibile da Python;
  • dovrebbe essere in grado di fare qualcosa di come la cosa chiamata "capped collezioni" in mongodb: collezione con la dimensione ridotta, con i vecchi dati essere riscritti se la dimensione raggiunge il limite .

Ho pensato a mongo, ma emongo sembra essere un po 'morto - l'ultimo commit è stato fatto 7 mesi fa.

+0

Hai esaminato CouchDB? –

+0

Sì, ma sarò lieto di conoscere altre alternative. – lambdadmitry

risposta

1

Penso che postgresql e driver pgsql sarà la soluzione migliore per voi.

+1

puoi spiegare il tuo consiglio per favore? – lambdadmitry

+0

Io uso mnesia e couchdb nel mio progetto e questo db non è molto adatto per grandi serie di dati. Quindi postgresql ha un driver per Python.Io uso pgsql/erlang nel mio lavoro in pesante server dei messaggi e postgresql non è stato ancora lamentato – 0xAX

+0

non penso che sia una buona idea usare i database relazionali per gestire i dati statistici, è solo un approccio completamente diverso – keymone

1

I file su disco, ruotati, soddisfano le vostre esigenze. Il punto è che non vuoi cercare velocemente i dati.

0

redis è un concorrente abbastanza vicino.

L'unica limitazione corrente è la dimensione del set di dati, che deve essere memorizzato completamente nella memoria o utilizzare il metodo VM, in cui deve essere inserito solo lo spazio chiave nella memoria (tuttavia un po 'di spazio per i dati reali sarebbero belli) ma ha un tempo di avvio molto lento.

Antirez, lo sviluppatore, sta riscrivendo il backend in qualcosa chiamato diskstore che dovrebbe risolvere il problema. Non è ancora pronto, ma ho molta fiducia in questo progetto.

Informazioni sulle collezioni limitate, le redis non hanno un modo diretto per gestirle. Ma la funzione LTRIM può aiutarti.

3

Riak può essere una buona scelta (ecco uno Riak comparison to MongoDB). È scritto in Erlang, è distribuito, fault tolerant e scala linearmente. Ha clients per Erlang, Javascript, Java, PHP, Python, Ruby. Un'interfaccia REST, un'interfaccia protobuf e tanti altri gadget (riduci mappa, collegamenti, replica, hook pre/post commit, ...). È open source e viene creato gestito da Basho. Basho ha anche commercial offering di Riak con alcune funzionalità extra (come la replica multi-sito, il monitoraggio SNMP, ecc.) Ma c'è un valore stupendo nella versione del sistema operativo.

A seconda delle esigenze, può essere opportuno combinare un paio di tecnologie. Ad esempio, è possibile far fronte al sistema con un archivio in memoria come Redis per la velocità e utilizzare Riak per mantenere i dati. Redis + Riak è una pila piuttosto dolce.

+0

Basho ha delle persone intelligenti che lavorano per loro. Rusty Klophaus di fama di azoto e la gente di Webmachine. Oh yea e rebar uscì anche da Basho (dizzyd!). –

Problemi correlati