mongodb - Differenza tra database basati su documenti e basati su valori/valori?




couchdb cassandra (2)

Le principali differenze sono il modello di dati e le capacità di interrogazione.

Negozi a valore-chiave

Il primo tipo è molto semplice e probabilmente non necessita di ulteriori spiegazioni.

Modello di dati: più che negozi di valore-chiave

Anche se c'è qualche discussione sul nome corretto per database come Cassandra, mi piacerebbe chiamarli negozi di famiglia di colonne . Sebbene le coppie chiave-valore siano una parte essenziale di Cassandra, non si limita a questo. Consente di nidificare coppie chiave-valore, quindi una chiave potrebbe fare riferimento a più coppie di sottoclassi-valore.

Tuttavia, non è possibile nidificare coppie chiave-valore indefinitamente. Sei limitato a tre livelli (famiglie di colonne) oa quattro livelli di nidificazione (famiglie di super colonne). Nel caso in cui il termine famiglia di colonne non suoni un campanello, vedi il WTF è un articolo di SuperColumn , è una buona spiegazione del modello di dati di Cassandra.

I database di documenti , come CouchDB e MongoDB, memorizzano interi documenti sotto forma di oggetti JSON . Puoi pensare a questi oggetti come coppie chiave-valore nidificate. A differenza di Cassandra, puoi nidificare coppie chiave-valore quanto vuoi. JSON supporta anche gli array e comprende diversi tipi di dati, come stringhe, numeri e valori booleani.

Interrogazione

Credo che gli archivi di famiglie di colonne possano essere interrogati solo con la chiave o scrivendo funzioni di riduzione della mappa. Non puoi interrogare i valori come faresti in un database SQL. Se l'applicazione richiede query più complesse, l'applicazione dovrà creare e mantenere gli indici per accedere ai dati desiderati.

I database di documenti supportano le query anche per le funzioni di riduzione delle mappe e delle chiavi, ma consentono anche di eseguire query di base in base al valore, ad esempio "Consenti a tutti gli utenti di avere più di 10 post". I database dei documenti sono più flessibili in questo modo.

So che ci sono tre diversi tipi popolari di database non SQL.

  • Chiave / Valore: Redis, Tokyo Cabinet, Memcached
  • ColumnFamily: Cassandra, HBase
  • Documento: MongoDB, CouchDB

Ho letto lunghi blog a riguardo senza capire così tanto.

Conosco database relazionali e mi occupo di database basati su documenti come MongoDB / CouchDB.

Qualcuno potrebbe dirmi quali sono le principali differenze tra queste e le 2 precedenti della lista?


Ayende ha fornito una bella spiegazione sulla differenza tra il database di valori-chiave e il database dei documenti:

Un database di documenti è, al suo interno, un archivio di chiavi / valori con un'eccezione principale. Invece di archiviare qualsiasi blob in esso, un documento db richiede che i dati vengano archiviati in un formato comprensibile al database (ad es. JSON, XML ecc.). Nella maggior parte dei doc dbs, ciò significa che ora possiamo consentire le query sui dati del documento.





non-relational-database