NoSQL come meta database di file

2

Sto cercando di implementare una struttura di file system virtuale di fronte a un archivio di oggetti (Openstack). Per motivi di disponibilità, inizialmente abbiamo scelto Cassandra, tuttavia durante la progettazione del modello di dati del file system, sembrava una struttura ad albero simile a un modello relazionale. Ecco il dilemma per la disponibilità e la tolleranza delle partizioni abbiamo bisogno di NoSQL, ma il nostro modello di dati è relazionale.

Il file system desiderato deve essere in grado di gestire la ricerca filtrata in base a data, nome, ecc. il più velocemente possibile. Quindi quale percorso dovrei prendere? Attenersi alle relazioni con un meccanismo di indicizzazione supportato da 3 strumenti come Apache Solr o scavare più in profondità in NoSQL e trovare un modello e un database adatti a soddisfare il modello?

P.S: Attualmente da NoSQL Cassandra o MongoDB sono scelte proposte dai miei colleghi.

    
posta fgakk 04.12.2012 - 13:15
fonte

1 risposta

4

Come ho potuto vedere dalle tue domande, devi prima pensare a ciò di cui hai bisogno e a cosa è fatto NoSql.

NoSQL - creato per una grande quantità di dati distribuiti. Scala bene dalla performance una quantità di dati. e, a seconda del tipo di sistema NoSQL, puoi semplicemente mettere e ottenere oggetti molto velocemente o anche eseguire lavori di lunga durata sui dati distribuiti, non è fatto per ricerche / query veloci.

Cerca - è fatto per cercare velocemente i riferimenti ai dati. A seconda del sistema, si adatta bene ai dati e alle prestazioni. non è fatto per interrogare un'enorme quantità di dati né relazioni tra dati.

RDBMS: è fatto per memorizzare dati che hanno relazioni tra loro. Il sistema si adatta in base al sistema stesso e in base alla progettazione dei dati. significa che anche le soluzioni di rdbms più veloci potrebbero funzionare con una progettazione dati / query errata. Non è fatto per la ricerca veloce su enormi quantità di dati. E il ridimensionamento dipende dal prodotto rdmbs, non è una funzionalità predefinita.

Quindi, se vuoi cercare dati da una quantità enorme, scegli il sistema creato per questo: Motore di ricerca.

Se vuoi immagazzinare enormi quantità di dati, dove i dati devono essere distribuiti (a causa della quantità) e le prestazioni di ottenere i dati dovrebbero essere indipendenti dalla quantità di dati: scegli un sistema NoSQL.

Se non si dispone di molti dati, ma i dati devono avere relazioni reciproche, quindi scegliere un RDBMS e pensare bene alla progettazione dei dati.

Se hai bisogno di una ricerca che ha archiviato l'indice distribuito, combina un prodotto di ricerca con spazio di archiviazione distribuito (filesystem).

Se hai bisogno di un filesystem distribuito, dai un'occhiata ad Apache Hadoop .

Se hai bisogno di un sistema NoSQL come Google Big Table, che è in qualche modo comparabile a un RDBMS, dai un'occhiata a Apache Hbase: hbase.apache.org o Hypertable .

Cassandra è più simile a Amazon Dynamo. È distribuito, ma più lontano da rdbms.
e MongoDB, è più vicino a LotusNotes. È una buona memoria per Documenti / Oggetti.

E MAIN POINT per risolvere il problema, pensare in base alla soluzione, significa: NON pensare come RDBMS quando si utilizza un sistema NoSQL, è necessario pensare in quello specifico sistema NoSQL (sono tutti molto diversi tra loro).

    
risposta data 04.12.2012 - 14:41
fonte

Leggi altre domande sui tag