2012-10-17 18 views
5

Impostazione di un progetto di data mining mining su un server cloud Linux. La lingua principale è Python.Una buona soluzione blobstore/memcache

vorrebbero utilizzare questo modello per l'interrogazione sui dati e l'archiviazione dei dati:

  • SQL Database - database SQL viene utilizzato per eseguire query sui dati. Tuttavia, il database SQL memorizza solo i campi che devono essere cercati, NON memorizza il "blob" dei dati stessi. Invece memorizza una chiave che fa riferimento a quel "blob" completo di dati nel valore chiave di Blobstore.
  • Blobstore - Un valore chiave Blobstore viene utilizzato per memorizzare "documenti" o "blob" di dati.

Il problema che stiamo riscontrando è che vorremmo ricevere più frequentemente blob di dati da archiviare automaticamente nella RAM. Stavamo pensando di usare Redis per questo. Tuttavia, vorremmo una soluzione che tenta automaticamente di estrarre prima i dati dalla RAM, se non riesce a trovarli lì, quindi va al blobstore.

C'è una buona libreria o una soluzione pronta per questo che possiamo usare senza il nostro? Inoltre, saranno apprezzati anche commenti e critiche sull'architettura proposta.

Grazie mille!

+0

Cosa c'è di sbagliato con l'utilizzo di Google App Engine? – RLH

+0

A causa del modo in cui si caricano e delle limitazioni sul database che impongono determinati tipi di query, il costo diventa astronomico. Anche le limitazioni sul database non consentono determinati tipi di query molto importanti senza grossi problemi. –

risposta

3

Piuttosto che usare Redis o Memcached per la memorizzazione nella cache, oltre a un pacchetto "blobstore" per archiviare le cose su disco, suggerirei di dare un'occhiata a Couchbase Server che fa esattamente ciò che si desidera (ad esempio servendo hot blob dalla memoria, ma comunque memorizzandoli su disco).

Nella società per cui lavoro, comunemente utilizziamo il modello che hai descritto (cioè l'indicizzazione in un database relazionale, più memoria BLOB) per i nostri server di archiviazione (terabyte di dati). Funziona bene quando l'I/O fatto per scrivere i BLOB viene mantenuto sequenziale. I BLOB non vengono mai riscritti, ma semplicemente aggiunti alla fine di un file (va bene per un'applicazione di archiviazione).

Lo stesso approccio è stato utilizzato anche da altri. Per esempio:

1

Qualsiasi database SQL lavorerà per la prima parte. Il Blobstore potrebbe anche essere ottenuto, essenzialmente, "off the shelf" usando cbfs. Questo è un nuovo progetto, costruito su couchbase 2.0, ma sembra essere in uno sviluppo piuttosto attivo.

CouchBase tenta già di fornire i risultati dalla cache RAM prima di controllare il disco ed è completamente distribuito per supportare set di dati di grandi dimensioni.

CBFS mette un filesystem in cima a quello, e già c'è un modulo FUSE scritto per questo.

Poiché i fileststem sono effettivamente il minimo comune denominatore, dovrebbe essere davvero facile per l'utente accedervi da python e ridurre la quantità di codice personalizzato che è necessario scrivere.

post del blog: http://dustin.github.com/2012/09/27/cbfs.html

Progetto Repository: https://github.com/couchbaselabs/cbfs

Problemi correlati