Progettazione di uno schema
Lo schema ideale per una tabella Bigtable dipende fortemente da una serie di fattori, tra cui il caso d'uso, i pattern di accesso ai dati e i dati che prevedi di archiviare. Questa pagina fornisce una panoramica del processo di progettazione dello schema Bigtable.
Prima di leggere questa pagina, dovresti comprendere i concetti e le best practice della progettazione dello schema. Se applicabile, leggi anche Progettazione dello schema per i dati delle serie temporali.
Prima di iniziare
Crea o identifica un'istanza Bigtable che puoi utilizzare per testare lo schema.
Raccogliere informazioni
- Identifica i dati che prevedi di archiviare in Bigtable.
Ecco alcune domande da porre:
- Quale formato utilizzano i dati? I formati possibili sono byte non elaborati, stringhe, protobuf e json.
- Che cosa costituisce un'entità nei tuoi dati? Ad esempio, memorizzi visualizzazioni di pagina, quotazioni, posizionamenti degli annunci, misurazioni dei dispositivi o altri tipi di entità? Da cosa sono composte le entità?
- I dati sono basati sull'ora?
- Identifica e classifica le query che utilizzi per ottenere i dati di cui hai bisogno. Considerando le entità che archivierai, pensa a come vuoi che i dati vengano ordinati e raggruppati quando li utilizzi. La progettazione dello schema potrebbe non soddisfare tutte le query, ma idealmente quelle più importanti o più utilizzate. Ecco alcuni esempi di query:
- Letture della temperatura di un mese per gli oggetti IoT.
- Visualizzazioni di annunci giornaliere per un indirizzo IP.
- La posizione più recente di un dispositivo mobile.
- Tutti gli eventi delle applicazioni al giorno per utente.
Design
Decidi la progettazione iniziale dello schema. Ciò significa che devi pianificare il pattern che le chiavi di riga seguiranno, le famiglie di colonne che la tabella avrà e i qualificatori di colonna per le colonne che vuoi all'interno di quelle famiglie di colonne. Segui le linee guida generali per la progettazione dello schema. Se i dati sono basati sul tempo, segui anche le linee guida per i dati delle serie temporali.
Test
- Crea una tabella utilizzando le famiglie di colonne e i qualificatori di colonna indicati per lo schema.
- Carica la tabella con almeno 30 GB di dati di test utilizzando le chiavi di riga identificate nella bozza del piano. Rimani al di sotto dei limiti di utilizzo dello spazio di archiviazione per nodo.
- Esegui un test di carico elevato per diversi minuti. Questo passaggio offre a Bigtable la possibilità di bilanciare i dati tra i nodi in base ai pattern di accesso osservati.
- Esegui una simulazione di un'ora delle letture e delle scritture che normalmente invierai alla tabella.
Esamina i risultati della simulazione utilizzando Key Visualizer e Cloud Monitoring.
Lo strumento Key Visualizer per Bigtable fornisce analisi che mostrano i pattern di utilizzo per ogni tabella in un cluster. Key Visualizer ti aiuta a verificare se il design dello schema e i pattern di utilizzo causano risultati indesiderati, ad esempio hotspot su righe specifiche.
Monitoring consente di controllare le metriche, come l'utilizzo della CPU del nodo più attivo in un cluster, per determinare se la progettazione dello schema sta causando problemi.
Perfeziona
- Rivedi la struttura dello schema come necessario, in base a ciò che hai imparato con Key Visualizer. Ad esempio:
- Se noti la presenza di hotspot, utilizza chiavi di riga diverse.
- Se noti la latenza, scopri se le righe superano il limite di 100 MB per riga.
- Se ritieni di dover utilizzare i filtri per ottenere i dati di cui hai bisogno, valuta la possibilità di normalizzare i dati in modo da consentire letture più semplici (e più veloci), leggendo una singola riga o intervalli di righe per chiave di riga.
- Dopo aver rivisto lo schema, testa e rivedi di nuovo i risultati.
- Continua a modificare la progettazione e il test dello schema finché un'ispezione in Key Visualizer non ti comunica che la progettazione dello schema è ottimale.
Passaggi successivi
- Guarda una presentazione sul processo di progettazione iterativa utilizzato da Twitter per Bigtable.
- Scopri di più sulle prestazioni di Bigtable.