Gestione avanzata delle tabelle in Cassandra

Sommario
Nei tutorial passati siamo entrati a pieno titolo con CQL e il modo in cui ci aiuta a gestire Cassandra, abbiamo visto le operazioni di base per il spazi delle chiavi e le tabelle in Cassandra, potremmo applicarle per creare una struttura iniziale nel database, tuttavia ci sono una quantità considerevole di concetti avanzati che dobbiamo conoscere per ottenere il massimo da Cassandra.
Questi concetti o caratteristiche per chiamarli in qualche modo, ci consentono di ottenere diverse funzionalità nelle nostre tabelle, dandoci una gamma di possibilità molto maggiore rispetto al resto degli altri. Database NoSQL.
In precedenza abbiamo creato alcune tabelle e utilizzato valori come testo o data per le nostre colonne, ma non è tutto qui CQL ha a disposizione, vediamo i tipi di dati che abbiamo per le nostre operazioni:
asciiStringa di caratteri US-ASCII.
bigintUn valore intero lungo a 64 bit.
blobTipo di dati espresso in esadecimale nella console di comando di CQLInoltre, non ha alcuna convalida e si basa su byte arbitrari.
booleanoIl classico tipo di dati booleano in cui i suoi valori possono essere true o false.
contatorecounter è un nuovo tipo di dati per quelli di noi che provengono dal mondo relazionale e indica che è distribuito a 64 bit.
decimaleUn altro tipo di dati che possiamo riconoscere, che ci dà la precisione decimale per le nostre informazioni.
DoppioTipo di dati in virgola mobile ma basato su 64 bit.
galleggianteCome il precedente, è un tipo di dati in virgola mobile ma basato su 32 bit.
inetQuesto tipo è abbastanza particolare e molto utile allo stesso tempo e ci permette di memorizzare una stringa di caratteri di un indirizzo IP, supporta sia il formato IPV4 Che cosa IPV6.
intIl classico tipo di dati intero che supporta numeri fino a 32 bit.
elencoUn altro tipo di dati che fa il suo debutto in Cassandra e ci permette di archiviare una raccolta ordinata di elementi.
carta geograficaCome l'elenco, è un altro tipo di nuovi dati e ci consente di memorizzare un array associativo, molto utile per lo sviluppo di applicazioni.
impostatoSimile al tipo di dati elenco, memorizza una raccolta di elementi ma senza un ordine specifico.
testoMemorizza una stringa di caratteri codificata.
marca temporaleTipo di dati che memorizza data e ora, codificato come numero intero a 8 byte.
varianteTipo di dati di precisione per numeri interi arbitrari.
Come si vede, sono tante le tipologie di dati che possiamo riconoscere se veniamo dal mondo relazionale, come altri che vedremo per la prima volta e che rendono Cassandra si distingue dagli altri database.
Nel Cassandra non abbiamo solo tipi di dati per le nostre tabelle, grazie a CQL Possiamo assegnare alle tabelle all'interno del nostro Database delle proprietà che ci aiutano enormemente nelle attività di manutenzione e sviluppo, vediamo cosa abbiamo a disposizione.
memorizzazione nella cacheQuesta proprietà ci fornisce l'ottimizzazione della memoria cache. I livelli disponibili per questa proprietà sono o tutti, chiavi_solo o solo chiavi, righe_solo o solo righe e nessuno o nessuno. Tutte le opzioni sono abbastanza utili, comunque riga_solo deve essere usato con cura in quanto Cassandra mettere una notevole quantità di dati in memoria quando viene utilizzata tale opzione.
CommentoUn'opzione che è presente nel modello relazionale e viene utilizzata da amministratori o sviluppatori per prendere appunti ed evidenziare dettagli importanti nelle tabelle.
compattazioneQuesta proprietà permette di definire la strategia per la gestione del menta, possono essere dei seguenti tipi: Il primo TagliaTiered che viene attivato quando la tabella supera un limite, il vantaggio dell'utilizzo di questa strategia è che non degrada le prestazioni di scrittura, tuttavia ha uno svantaggio è che occasionalmente utilizza il doppio della dimensione dei dati sul disco, con conseguente scarso rendimento lettura. La seconda strategia è Compattazione livellata e funziona a diversi livelli nel tempo, unendo le tabelle con quelle più lunghe, ottenendo prestazioni di lettura piuttosto buone.
CompressioneQuesta proprietà determina come verranno compresse le informazioni. Possiamo scegliere di ottenere vantaggi in termini di velocità o spazio, dove maggiore è la velocità, minore è lo spazio su disco risparmiato.
Gc_grace_secondsQuesta proprietà definisce il tempo di attesa per rimuovere le informazioni dalle lapidi. Per impostazione predefinita è 10 giorni.
Populate_io_cache_on_flushQuesta proprietà è disabilitata per impostazione predefinita e dovremmo attivarla solo se speriamo che tutte le informazioni rientrino nella memoria cache.
Read_repair_chanceUna proprietà molto interessante che indica un numero compreso tra 0 e 1.0 specificando la probabilità di riparare l'informazione quando il quorum non viene raggiunto. Il valore predefinito è 0,1.
Replica_in_scritturaQuesta proprietà si applica solo alle tabelle di tipo contatore. Quando definite, le repliche scrivono su tutte le repliche interessate, ignorando il livello di coerenza specificato.
Quindi sappiamo già cosa abbiamo, sia a livello di tipi di dati che di proprietà, è ora di applicare alcune delle cose apprese alle nostre tabelle in Cassandra.
Per prima cosa creeremo una semplice tabella a cui applicheremo la proprietà dei commenti, vediamo la sintassi che useremo per essa:
 CREA articoli TABELLA (titolo del testo, contenuto del testo, categoria del testo, CHIAVE PRIMARIA (titolo)) CON commento = 'Tabella per memorizzare le informazioni sull'articolo';
Apriamo la nostra console di comando CQL e creiamo la nostra tabella con la proprietà menzionata, vediamo come si presenta:

Come già sappiamo, la console dei comandi non restituisce nulla se non che non ci sono errori, ma se vogliamo vedere queste modifiche possiamo andare sul nostro Centro operativo e verifica che tutto sia andato a buon fine:

INGRANDIRE

Come possiamo vedere, possiamo vedere il nostro commento e altre proprietà con i loro valori predefiniti. È importante ricordare che la definizione del resto delle proprietà in Cassandra è abbastanza semplice, come abbiamo potuto vedere con l'esempio precedente, usando la sintassi INSIEME A possiamo farlo senza alcun problema.
Faremo un altro esempio in cui andremo a definire le proprietà compressionecompattazione ma per questo è importante sapere che hanno una serie di opzioni secondarie per il loro utilizzo, vediamo per compressione che dovremmo sapere:
Sstable_compressionQuesta opzione specifica l'algoritmo di compressione da utilizzare, i suoi valori sono: LY4Compressor, SnappyCompressor, Sgonfia Compressore.
Chunck_length_kbLe tabelle sono compresse per blocchi. Valori più lunghi forniscono generalmente una migliore compressione ma aumentano la dimensione delle informazioni da leggere. Per impostazione predefinita, questa opzione è impostata su 64 kb.
La manipolazione delle opzioni di compressione può portare a un significativo aumento delle prestazioni, incluse molte implementazioni di Cassandra Sono con quei valori di default, ma per la perfezione è necessario usare questi valori. Vediamo ora cosa dobbiamo sapere per compattazione:
AbilitatoDetermina se la proprietà verrà eseguita nella tabella sebbene per impostazione predefinita tutte le proprietà abbiano compattazione abilitato.
ClasseQui definiremo il tipo di strategia per la gestione delle tabelle.
min_sogliaQuesto valore è disponibile con la strategia TagliaTiered y rappresenta il numero minimo di tabelle necessarie per avviare un processo di compattazione. È definito di default a 4.
soglia_maxDisponibile allo stesso modo nella strategia TagliaTiered y definisce il numero massimo di tabelle elaborate nel compact. È definito di default a 32.
Queste sono alcune delle opzioni più importanti per queste proprietà, ciò che è importante menzionare è che per la definizione di queste opzioni dobbiamo usare una sintassi JSON Per essere valido, vediamo un esempio dell'inclusione di queste due proprietà:
 CREATE TABLE table_for_properties (id int, nome testo, proprietà testo, numero variante, CHIAVE PRIMARIA (id)) WITHcompression = {'sstable_compression': 'DeflateCompressor', 'chunk_length_kb': 64} ANDcompaction = {'class': 'SizeTieredCompactionStrategy', 'min_soglia': 6};
Come possiamo vedere, abbiamo cambiato il tipo di compressione e ne abbiamo definito la dimensione, inoltre per compattazione abbiamo lasciato la solita strategia con il valore classe e abbiamo definito il min_soglia come 6 ha aumentato il valore predefinito in questo modo, per finire vediamo come appare quando lo eseguiamo nella nostra console di comando:

Nell'ultimo tutorial abbiamo potuto vedere che come risultato della definizione di più di una chiave primaria, queste vengono create come chiavi di clustering e dicci la strada Cassandra ordina le informazioni, per impostazione predefinita l'ordine è definito in ordine crescente e fare una query in ordine decrescente potrebbe causare problemi di prestazioni, tuttavia Cassandra ha una soluzione per qualsiasi problema ed è con la frase CLUSTERING ***** PER. Vediamo come usarlo.
 CREATE TABLE utenti_ordinati (testo utente, data timestamp, float stipendio, testo reparto, testo supervisore, CHIAVE PRIMARIA (utente, data)) CON CLUSTERING ***** BY (data DESC);
Eseguiamo la nostra sintassi nella console dei comandi e vediamo come appare:

Come abbiamo potuto vedere, è stato abbastanza facile risolvere questo problema con una semplice riga, ma, cosa più importante, siamo stati in grado di ampliare le nostre conoscenze quando si tratta di gestire le tabelle in Cassandra, con cui finiamo questo tutorial, in cui abbiamo coperto tutto ciò che dobbiamo sapere per la creazione ottimale della tabella in Cassandra.
wave wave wave wave wave