Quali sono i limiti pratici per una famiglia di colonne in Cassandra?


10

A Cassandra, non è consigliabile avere più di qualche migliaio di famiglie di colonne , diciamo 2.000 per motivi di discussione. Nei casi in cui è necessario persistere più di 2.000 tipi di dati, un approccio sarebbe quello di suddividere più tipi di dati non correlati in ciascuna famiglia di colonne.

Ad esempio, un singolo CF potrebbe contenere ordini, fatture e clienti, a condizione che le loro chiavi di riga fossero distinte (ad esempio con il prefisso del tipo di oggetto, ovvero le chiavi di un singolo CF potrebbero includere sia Order|1234e che Customer|1234). Un secondo CF può contenere dire Addresses, LineItems e OrderTypes. Data la fattibilità di base di questo approccio, quali sono i limiti pratici ad esso? Ad esempio, cosa ci sarebbe di sbagliato nel mettere tutti i 10.000 tipi di oggetti in un singolo CF? Per quanto ne so dal wiki di Cassandra , non vi è alcuna limitazione per quanto riguarda le dimensioni di un CF.

Risposte:


6

Non sono un fan. Si tratta di un'idea altrettanto valida della creazione di una tabella relazionale denominata OrdersOrCustomers con colonne definite per entrambi. La penalità del motore di archiviazione è leggermente inferiore in Cassandra a causa della conservazione delle celle sparse sotto il cofano, ma è ancora una cattiva pratica.

Questo ti morde in seguito quando vuoi mappare / ridurre i tuoi dati; ogni attività dovrà eseguire la scansione di tutti i tuoi dati e filtrare le righe che non corrispondono a ciò a cui sei realmente interessato (ad esempio, i clienti). E buona fortuna per dare un senso alle statistiche che Cassandra traccia per-CF. ("Questa CF è la fonte dell'80% della mia domanda di lettura a causa dei dati dell'ordine? O a causa delle sessioni dei clienti con cui è combinata? O degli altri cinque tipi di dati che ho inserito?")

Se hai assolutamente bisogno di decine o centinaia di migliaia di CF? Anche allora preferirei eseguire Cassandra senza allocazione nell'arena, piuttosto che mutilare il mio modello di dati in questo modo.


Grazie per la tua risposta, Jonathan. Dovrò leggere sull'allocazione nell'arena per capire l'ultima frase. L'uso dell'allocazione nell'arena è un'opzione di configurazione?
Andrew Swan,

O se al giorno d'oggi l'allocazione dell'arena viene inserita in Cassandra, quanto sarebbe difficile deallocare le arene di tutte le famiglie di colonne alle quali non è stato effettuato l'accesso entro un periodo di tempo configurabile? Vale la pena registrarmi un biglietto JIRA su questo?
Andrew Swan,

1
Cassandra è già intelligente riguardo al lavaggio per alleviare la pressione della memoria. Il problema è con gli scenari peggiori in cui tutto è attivo.
jbellis

In quale caso è l'unica soluzione per avere un secondo squillo?
Andrew Swan,
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.