Sommario:
- Utilizzo dei tasti di riga
- Creazione di famiglie di colonne
- Utilizzo di timestamp
- Gestione dei valori binari
Video: АСМР Библиотекарь ? ASMR Librarian ?? 2024
Un Bigtable ha tabelle proprio come fa un RDBMS, ma a differenza di un RDBMS, le tabelle Bigtable generalmente non hanno relazioni con altre tabelle. Invece, i dati complessi sono raggruppati in un'unica tabella.
Una tabella in un Bigtable è composta da gruppi di colonne, chiamate famiglie di colonne e una chiave di riga. Questi insieme consentono una rapida ricerca di un singolo record di dati contenuti in un Bigtable.
Utilizzo dei tasti di riga
Ogni riga deve essere identificata in modo univoco. Qui è dove arriva una chiave di riga. Una chiave di riga è una stringa univoca utilizzata per fare riferimento a un singolo record in un Bigtable. Puoi pensare a loro come essere simili a una chiave primaria o come un numero di previdenza sociale per Bigtables.
Molti Bigtables non forniscono buoni indici secondari (indici oltre i valori delle colonne stessi), quindi la progettazione di una chiave di riga che consente una rapida ricerca dei record è fondamentale per garantire buone prestazioni.
Un tasto di riga ben progettato consente di localizzare un record senza dover leggere l'applicazione e verificare da sé l'applicabilità di ciascun record. È più veloce per il database farlo.
Le chiavi di riga vengono anche utilizzate dalla maggior parte dei Bigtables per distribuire uniformemente i record tra i server. Una chiave di riga mal progettata porterà a un server nel cluster di database che riceve più carico (richieste) rispetto agli altri server, rallentando le prestazioni visibili all'utente dell'intero servizio di database.
Creazione di famiglie di colonne
Una famiglia di colonne è un raggruppamento logico di colonne. Sebbene le Bigtables consentano di variare il numero di colonne supportate in qualsiasi definizione di tabella in fase di runtime, è necessario specificare le famiglie di colonne consentite in anticipo. Questi in genere non possono essere modificati senza portare il server offline. Ad esempio, un'applicazione di rubrica può utilizzare una famiglia per l'indirizzo di casa. Questo potrebbe contenere le colonne Riga indirizzo 1, Riga indirizzo 2, Area, Città, Contea, Stato, Paese e CAP.
Non tutti gli indirizzi avranno dati in tutti i campi. Ad esempio, Indirizzo 2, Area e Contea potrebbero essere spesso vuoti. D'altra parte, potresti avere dati solo in Address Line 1 e Zip Code. Questi due esempi sono entrambi validi nella stessa famiglia di colonne Indirizzo di casa.
Avere un numero variabile di colonne ha i suoi svantaggi. Se vuoi che HBase, per esempio, elenchi tutte le colonne all'interno di una particolare famiglia, devi eseguire l'iterazione su tutte le righe per ottenere l'elenco completo delle colonne! Pertanto, è necessario tenere traccia del proprio modello di dati nella propria applicazione con un clone di Bigtable per evitare questa penalità delle prestazioni.
Utilizzo di timestamp
Ogni valore all'interno di una colonna può in genere memorizzare versioni diverse.Queste versioni sono referenziate usando un valore di timestamp.
I valori non vengono mai modificati: viene aggiunto un valore diverso con un timestamp diverso. Per eliminare un valore, aggiungi un marcatore di pietre tombali al valore, che fondamentalmente indica che il valore è stato cancellato in un determinato momento.
Tutti i valori per la stessa chiave di riga e famiglia di colonne sono memorizzati insieme, il che significa che tutte le ricerche o le decisioni relative alle versioni vengono prese in un unico punto in cui risiedono tutti i dati rilevanti.
Gestione dei valori binari
In Bigtables, i valori sono semplicemente array di byte. Ad esempio, possono essere testo, numeri o anche immagini. Ciò che conservi in loro dipende da te.
Solo pochi cloni di Bigtable supportano la digitazione dei valori. Hypertable, ad esempio, consente di impostare tipi e aggiungere indici secondari ai valori. Cassandra consente inoltre di definire tipi di valori, ma i relativi indici intervallo-query (meno e più grandi rispetto alle operazioni per ogni tipo di dati) sono limitati ad accelerare le operazioni di ricerca chiave, non alle operazioni di confronto dei valori.