Progettazione di uno schema
Lo schema ideale per una tabella Bigtable dipende molto da una serie di fattori, tra cui il caso d'uso, i pattern di accesso ai dati e i dati che prevedi di memorizzare. Questa pagina fornisce una panoramica della procedura di progettazione dello schema di Bigtable.
Prima di leggere questa pagina, devi comprendere i concetti e le best practice di progettazione dello schema. Se applicabile, leggi anche Design 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 includono byte, stringhe, protobuf e json non elaborati.
- Che cos'è un'entità nei tuoi dati? Ad esempio, memorizzi visualizzazioni di pagina, prezzi di azioni, posizionamenti degli annunci, misurazioni dei dispositivi o qualche altro tipo di entità? Da cosa sono composte le entità?
- I dati sono basati sul tempo?
- Identifica e classifica le query che utilizzi per ottenere i dati di cui hai bisogno. Tenendo conto delle entità che memorizzerai, pensa a come vuoi che i dati vengano ordinati e raggruppati quando li utilizzi. Il design dello schema potrebbe non soddisfare tutte le query, ma idealmente soddisfa quelle più importanti o utilizzate più di frequente. Ecco alcuni esempi di query:
- Letture della temperatura per 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 dell'applicazione al giorno per utente.
Design
Decidi una progettazione iniziale dello schema. Ciò significa pianificare il pattern seguito dalle chiavi di riga, le famiglie di colonne della tabella e i qualificatori di colonna per le colonne che ti interessano all'interno di queste famiglie. Segui le linee guida generali per la progettazione dello schema. Se i tuoi 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 relativi qualificatori che hai scelto per lo schema.
- Carica la tabella con almeno 30 GB di dati di test utilizzando le chiavi di riga che hai identificato nel piano in bozza. 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 che osserva.
- Esegui una simulazione di un'ora delle letture e delle scritture che in genere invii alla tabella.
Esamina i risultati della simulazione utilizzando Key Visualizer e Cloud Monitoring.
Lo strumento Key Visualizer per Bigtable fornisce scansioni che mostrano i pattern di utilizzo per ogni tabella di un cluster. Key Visualizer ti aiuta a verificare se la progettazione dello schema e i pattern di utilizzo stanno causando risultati indesiderati, ad esempio hotspot in righe specifiche.
Il monitoraggio ti consente di controllare le metriche, come l'utilizzo della CPU del nodo più utilizzato in un cluster, per aiutarti a determinare se la progettazione dello schema causa problemi.
Perfeziona
- Rivedi la progettazione dello schema, se necessario, in base a quanto appreso con Key Visualizer. Ad esempio:
- Se noti prove di hotspotting, utilizza chiavi di riga diverse.
- Se noti della latenza, scopri se le righe superano il limite di 100 MB per riga.
- Se devi utilizzare i filtri per ottenere i dati di cui hai bisogno, valuta la possibilità di normalizzarli in modo da consentire letture più semplici (e più veloci): lettura di una singola riga o di intervalli di righe in base alla chiave di riga.
- Dopo aver rivisto lo schema, testa e rivedi di nuovo i risultati.
- Continua a modificare il design dello schema e a eseguire test finché un'ispezione in Visualizzatore chiavi non ti indica che il design dello schema è ottimale.
Passaggi successivi
- Guarda una presentazione sul processo di progettazione iterativo utilizzato da Twitter per Bigtable.
- Scopri di più sul rendimento di Bigtable.