Quando utilizzare archivi a colonne larghe invece di archivi basati su documenti

3

Ho una certa esperienza con i negozi basati su documenti (MongoDB e CouchDB) e sono interessato ad esplorare database a colonne larghe.

Sulla base della mia esplorazione iniziale, posso comprendere una comprensione di base su come gli archivi a colonne sono diversi, ma non capisco in che tipo di operazioni siano più adatti di un archivio di documenti indicizzati.

La mia impressione iniziale è che gli archivi di colonne siano migliori se le combinazioni di colonne per le query sono altamente dinamiche (nessuna vista indicizzata è realmente necessaria) e / o se c'è un'alta percentuale di scrittura (che innesca gli indici di riduzione della mappa in un documento memorizzare).

Per quanto riguarda le prestazioni, sembra che gli archivi di colonne potrebbero essere migliori se ho documenti con molte proprietà, ma non tutti sono necessari. I negozi di documenti sembrano promuovere che l'intero documento verrà recuperato, ma non è sicuro di quale impatto abbia realmente. Forse il documento deve avere molte colonne filtrate per fare la differenza?

Ho anche avuto l'impressione che gli archivi di colonne "potrebbero" essere più performanti per i sistemi multi-tenant che hanno condiviso il database in cui una delle colonne contiene l'id titolare e forse un altro i ruoli.

E ho la sensazione che gli archivi a colonne larghi siano molto utili per le query eseguite dalle applicazioni di analisi dei dati, dove c'è una grande serie di dati raccolti per ogni voce, solo pochi campi devono essere estratti e la combinazione di colonne è totalmente casuale.

La mia domanda: quali tipi di query sono gestiti meglio negli archivi a colonne piuttosto che negli archivi di documenti?

    
posta SystematicFrank 04.09.2014 - 16:24
fonte

1 risposta

-1

Non posso rispondere a questa domanda per te, e nessun altro può, perché "Gorilla vs Shark", come notato nei commenti sopra. Ma ti aiuterò comunque.

Hai omesso una domanda precedente importante:

What are the characteristics of the data set I am querying?

Questo è altrettanto importante, se non di più, delle query specifiche che vuoi eseguire. Alcune domande utili da porre sui tuoi dati sono:

  • Quanti dati ho? Si adatta alla memoria? Su un server? In un cluster?
  • Come cambiano i miei dati? Ottiene aggiornamenti di massa su una frequenza prevedibile? Frequenza imprevedibile? Riceve aggiornamenti in streaming? Aggiornamenti delle transazioni ingannevoli? Nessun aggiornamento?
  • Qual è la struttura delle entità nei miei dati? Esistono relazioni "uno-a-molti"? È tutto tabulare? È principalmente tabellare?
  • Qual è la sparsità dei miei dati? È ragionevolmente completo? È per lo più vuoto?

Se stai considerando questo in astratto e non hai in mente alcun set di dati specifico, non c'è una risposta ragionevole alla tua domanda.

E anche con un insieme specifico e ben definito di dati e risposte a tutte queste domande, potresti non saperlo senza fare un bakeoff di particolari implementazioni.

    
risposta data 03.11.2018 - 15:18
fonte

Leggi altre domande sui tag