Qual è il punto delle famiglie di colonne?


9

Ho visto che i sistemi di database NoSQL come RocksDB offrono una funzione chiamata famiglie di colonne . Credo di capire a cosa si riferisce il concetto, ma quali sono i vantaggi (pratici) effettivi del loro utilizzo? Presumo che possano migliorare le prestazioni di ricerca in alcuni casi, o almeno la località spaziale dei valori-chiave. Non sembrerebbe influenzare la semantica effettiva dell'accesso al database, tuttavia, per quanto ho capito. È corretto? C'è qualcosa che mi manca?

Risposte:


3

Ho appena scoperto alcune informazioni interessanti dalle FAQ di RocksDB . (RocksDB è un negozio KV.)

Ecco alcuni estratti rilevanti.

D: A cosa servono le famiglie di colonne?

A: Le ragioni più comuni dell'utilizzo delle famiglie di colonne: (1) utilizzare impostazioni di compattazione, comparatori, tipi di compressione, operatori di unione o filtri di compattazione diversi in diverse parti di dati; (2) rilasciare una famiglia di colonne per eliminare i suoi dati; (3) una famiglia di colonne per memorizzare i metadati e un'altra per memorizzare i dati.

D: Qual è la differenza tra l'archiviazione dei dati in più famiglie di colonne e in più database rocksb?

A: Le differenze principali saranno il backup, le scritture atomiche e le prestazioni delle scritture. Il vantaggio di utilizzare più database: il database è l'unità di backup o checkpoint. È più semplice copiare un database su un altro host rispetto a una famiglia di colonne. Vantaggi dell'utilizzo di più famiglie di colonne: (1) i batch di scrittura sono atomici su più famiglie di colonne in un database. Non è possibile ottenere questo risultato utilizzando più database RocksDB. (2) Se si emettono scritture di sincronizzazione su WAL, troppe banche dati potrebbero compromettere le prestazioni.

D: Ho diversi spazi chiave. Devo separarli per prefissi o utilizzare diverse famiglie di colonne?

A: Se ogni spazio chiave è ragionevolmente grande, è una buona idea inserirli in diverse famiglie di colonne. Se può essere piccolo, dovresti considerare di raggruppare più spazi chiave in una famiglia di colonne, per evitare il problema di mantenere troppe famiglie di colonne.


2

So che non stai cercando un parallelo con SQL, ma questo articolo spiega semplicemente lo scopo e il vantaggio pratico delle famiglie di colonne.

Dalla comprensione del modello di dati Cassandra da una prospettiva SQL su RubyScale:

A cosa serve una famiglia di colonne? Solo un prefisso da tavolo? Una famiglia di colonne ha una serie di impostazioni che ne derivano che ne alterano il comportamento. Esistono impostazioni della cache per le chiavi (gli UUID in questo esempio), le impostazioni della cache per le intere righe (l'intera tabella in questo esempio) e, soprattutto, l'ordinamento. In Cassandra non c'è OFFSET, solo LIMIT e l'equivalente di TRA . In questo esempio, i nomi delle colonne sono solo stringhe ma potrebbero anche essere numeri interi o timestamp e sono sempre archiviati nell'ordinamento. Una famiglia di colonne potrebbe avere dati ordinati in base al timestamp in cui si interrogano le cose in base alla fascia oraria e un'altra potrebbe essere i dati della rubrica in cui si eseguono query in ordine alfabetico. L'unico ordinamento che puoi fare dopo il fatto è invertire una particolare porzione.


Interessante. Come dici tu, non risponde completamente alla domanda, ma fornisce un suggerimento. Grazie.
Noldorin
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.