Panoramica di Bigtable

Bigtable è una tabella sparsa che può scalare fino a miliardi di righe e migliaia di colonne, per archiviare terabyte o perfino petabyte di dati. In ogni riga viene indicizzato un singolo valore. questo valore è noto come riga chiave. Bigtable è ideale per archiviare grandi quantità di con bassa latenza. Supporta un'elevata velocità effettiva di lettura e scrittura latenza ed è un'origine dati ideale per le operazioni MapReduce.

Bigtable è esposto alle applicazioni tramite più client librerie Apache HBase, inclusa un'estensione supportata alla libreria Apache HBase per Java. Si integra quindi con l'ecosistema Apache esistente di software per big data open source.

I potenti server di backend di Bigtable offrono diversi vantaggi chiave su un'installazione HBase autogestita:

  • Scalabilità incredibile. Bigtable è scalabile in modo diretto in proporzione al numero di macchine nel tuo cluster. Un HBase autogestito ha un collo di bottiglia nella progettazione che limita le prestazioni dopo viene raggiunta una determinata soglia. Bigtable non dispone di questo collo di bottiglia, così puoi fare lo scale up del tuo cluster per gestire più letture scrive.
  • Amministrazione semplice. Bigtable gestisce gli upgrade si riavvia in modo trasparente e mantiene automaticamente nel tempo. Per replicare i dati, aggiungi un secondo il cluster all'istanza e la replica verrà avviata automaticamente. Mai più la gestione di repliche o regioni; devi solo progettare gli schemi delle tabelle Bigtable si occuperà di tutto il resto.
  • Ridimensionamento dei cluster senza tempi di inattività. Puoi aumentare le dimensioni di Cloud Bigtable per alcune ore per gestire un carico di grandi dimensioni, quindi ridurre nuovamente le dimensioni del cluster, senza tempi di inattività. Dopo la modifica dimensione di un cluster, in genere questa operazione richiede solo pochi minuti Bigtable per bilanciare le prestazioni tra tutti i nodi nel tuo cluster.

Per cosa è utile

Bigtable è ideale per le applicazioni che richiedono una velocità effettiva elevata scalabilità per i dati di coppie chiave-valore, dove ciascun valore solitamente non è superiore a 10 MB Bigtable eccelle anche come motore di archiviazione per MapReduce in batch operazioni, elaborazione/analisi dei flussi e applicazioni di machine learning.

Puoi utilizzare Bigtable per archiviare ed eseguire query su tutti i seguenti tipi di dati:

  • Dati di serie temporali,ad esempio l'utilizzo di CPU e memoria nel tempo per più server web.
  • Dati di marketing,ad esempio cronologie degli acquisti e preferenze dei clienti.
  • Dati finanziari come cronologie delle transazioni, prezzi delle azioni e tassi di cambio delle valute.
  • I dati di Internet of Things,ad esempio i report sull'utilizzo dei misuratori di energia e elettrodomestici.
  • Dati grafici,ad esempio informazioni su come gli utenti sono connessi a un un'altra.

Modello di archiviazione Bigtable

Bigtable archivia i dati in tabelle ad altissima scalabilità, ciascuna delle quali è una mappa chiave-valore ordinata. La tabella è composta da righe, ciascuna delle quali in genere descrive una singola entità e le colonne, che contengono singole per ogni riga. Ogni riga è indicizzata da una singola chiave di riga e colonne che sono correlate tra loro sono generalmente raggruppate in una famiglia di colonne. Ciascuna è identificata da una combinazione della famiglia di colonne e di una colonna qualificatore, un nome univoco all'interno della famiglia di colonne.

Ogni intersezione di una riga e di una colonna può contenere più celle. Ogni cella contiene una versione univoca con timestamp dei dati relativi a quella riga e colonna. L'archiviazione di più celle in una colonna fornisce un record del modo in cui i dati archiviati per la riga e la colonna sono cambiate nel tempo. Le tabelle Bigtable sono sparsa; Se una colonna non viene utilizzata in una determinata riga, non occupa spazio.

Diagramma del modello di archiviazione Bigtable

Alcuni aspetti da notare in questa illustrazione:

  • Le colonne possono non essere utilizzate in una riga.
  • Ogni cella in una determinata riga e colonna ha un timestamp univoco (t).

Architettura di Bigtable

Il seguente diagramma mostra una versione semplificata di Bigtable dell'architettura complessiva:

dell'architettura complessiva
Bigtable.

Come illustrato nel diagramma, tutte le richieste del client passano attraverso un server frontend prima di essere inviati a un nodo Bigtable. (Nel Bigtable, questi nodi sono chiamati "server tablet". La i nodi sono organizzati in un cluster Bigtable, che appartiene a un Istanza Bigtable, un container per il cluster.

Ogni nodo nel cluster gestisce un sottoinsieme delle richieste al cluster. Di aggiungendo nodi a un cluster, puoi aumentare il numero di richieste simultanee gestibili dal cluster. L'aggiunta di nodi aumenta anche la velocità effettiva massima per il cluster. Se abiliti la replica aggiungendo altri cluster, possono anche inviare diversi tipi di traffico a cluster differenti. Quindi, se se un cluster diventa non disponibile, puoi eseguire il failover su un altro cluster.

Una tabella Bigtable viene partizionata orizzontalmente in blocchi di righe contigue, denominate tablet, per aiutare a bilanciare il carico di lavoro delle query. I tablet sono simili a regioni HBase). I tablet vengono archiviati su Colossus, il file system di Google, in SSTable formato. Una tabella SSTable fornisce una mappa permanente, ordinata e immutabile dalle chiavi in cui sia le chiavi che i valori sono stringhe di byte arbitrarie. Ogni tablet è associati a uno specifico nodo Bigtable. Oltre alla sezione File SSTable, tutte le scritture vengono archiviate nel log condiviso di Colossus non appena sono riconosciuti da Bigtable, offrendo una maggiore durabilità.

È importante sottolineare che i dati non vengono mai archiviati nei nodi Bigtable; ogni nodo ha puntatori a un insieme di tablet archiviati su Colossus. Come risultato:

  • Il ribilanciamento dei tablet da un nodo all'altro avviene rapidamente, poiché i dati effettivi non vengono copiati. Bigtable aggiorna per ciascun nodo.
  • Il recupero dall'errore di un nodo Bigtable è rapido, poiché occorre eseguire la migrazione solo dei metadati sul nodo sostitutivo.
  • In caso di errore di un nodo Bigtable, non viene perso nessun dato.

Per ulteriori informazioni, consulta Istanze, cluster e nodi informazioni su come lavorare con questi componenti di base fondamentali.

Bilanciamento del carico

Ogni zona Bigtable è gestita da un processo principale che bilancia dei carichi di lavoro e dei dati all'interno dei cluster. Questo processo si suddivide in più o in più i tablet a metà e unisce i tablet con meno accesso/i tablet più piccoli, e ridistribuirle tra i nodi in base alle esigenze. Se un determinato tablet riceve un picco di il traffico, Bigtable divide il tablet in due, quindi sposta una delle nuovi tablet su un altro nodo. Bigtable gestisce la suddivisione, unendo e ribilanciando automaticamente, risparmiando per l'amministrazione dei tablet. Informazioni sul rendimento offre ulteriori i dettagli di questa procedura.

Per ottenere le migliori prestazioni di scrittura da Bigtable, è importante distribuire le scritture nel modo più uniforme possibile tra i nodi. Un modo per farlo è l'utilizzo di chiavi di riga che non seguono un ordine prevedibile. Ad esempio: i nomi utente tendono a essere distribuiti in modo più o meno uniforme nell'alfabeto, includendo un nome utente all'inizio della chiave di riga tendono a distribuire le scritture in modo uniforme.

Allo stesso tempo, è utile raggruppare le righe correlate in modo che siano vicine a una. un'altra, rendendo molto più efficiente la lettura di più righe alla stessa nel tempo. Ad esempio, se memorizzi diversi tipi di dati meteo nel tempo, la chiave di riga potrebbe essere la posizione in cui sono stati raccolti i dati, seguita da timestamp (ad esempio WashingtonDC#201803061617). Questo tipo di chiave di riga raggruppare tutti i dati di una singola località in un intervallo contiguo di righe. Per in altre posizioni, la riga inizierà con un identificatore diverso; con molti da più località che raccolgono dati alla stessa velocità, le scritture sarebbero comunque distribuite in modo uniforme sui tablet.

Consulta Scelta di una chiave di riga per ulteriori dettagli sulla scelta di una chiave di riga appropriata chiave di riga per i dati.

Tipi di dati supportati

Bigtable tratta tutti i dati come stringhe di byte non elaborati per la maggior parte degli scopi. L'unica volta in cui Bigtable tenta di determinare il tipo di incremento, in cui la destinazione deve essere un numero intero a 64 bit codificato come Valore big-endian a 8 byte.

Utilizzo di memoria e disco

Le sezioni seguenti descrivono come diversi componenti di Bigtable influisce sull'utilizzo del disco e della memoria per l'istanza.

Colonne non utilizzate

Le colonne che non vengono utilizzate in una riga Bigtable non occupano spazio spazio in quella riga. Ogni riga è essenzialmente una raccolta di voci chiave-valore, in cui la chiave è una combinazione di famiglia di colonne, qualificatore di colonna e timestamp. Se una riga non include un valore per una colonna specifica, non è presente una coppia chiave-valore.

Qualificatori di colonna

I qualificatori di colonna occupano spazio in una riga, poiché ogni qualificatore di colonna utilizzato in un viene archiviata in questa riga. Di conseguenza, spesso è efficiente usare colonne qualificatori come dati.

Per ulteriori informazioni sui qualificatori di colonna, consulta Colonne.

Compattazioni

Bigtable riscrive periodicamente le tabelle per rimuovere quelle eliminate e per riorganizzare i dati in modo che le letture e le scritture siano in modo efficace. Questo processo è noto come compattazione. Nessuna configurazione impostazioni per le compattazioni—Bigtable compatta i dati automaticamente.

Mutazioni ed eliminazioni

Le mutazioni o le modifiche a una riga occupano spazio di archiviazione aggiuntivo, Bigtable archivia le mutazioni in sequenza e le compatta solo periodicamente. Quando Bigtable compatta una tabella, rimuove i valori che non sono più necessari. Se aggiorni il valore in una cella, sia il valore originale e il nuovo valore verrà archiviato su disco per un certo periodo di tempo finché la compattazione dei dati.

Le eliminazioni occupano anche spazio di archiviazione aggiuntivo, almeno nel breve periodo, perché sono in realtà un tipo specializzato di mutazione. Finché la tabella non viene compatta, un'eliminazione utilizza più spazio di archiviazione invece di liberare spazio.

Compressione dati

Bigtable comprime i dati automaticamente dell'algoritmo. Non puoi configurare le impostazioni di compressione per la tabella. Tuttavia, è utile sapere come archiviare i dati in modo che possano essere compressi in modo efficiente:

  • I dati casuali non possono essere compressi con la stessa efficienza dei dati con pattern. I dati creati con pattern includono testo, ad esempio la pagina che stai leggendo in questo momento.
  • La compressione funziona meglio se i valori identici sono vicini tra loro nella stessa riga o in righe adiacenti. Se disponi le chiavi di riga in modo che con blocchi di dati identici sono uno accanto all'altro, i dati possono essere è compresso in modo efficiente.
  • Bigtable comprime valori che raggiungono una dimensione massima di 1 MiB. Se memorizzi valori superiori a 1 MiB, comprimili prima scriverli in Bigtable, in modo da poter salvare i cicli di CPU, memoria e larghezza di banda di rete.

Durabilità dei dati

Quando utilizzi Bigtable, i tuoi dati vengono archiviati su Colossus, file system interno a elevata durabilità, che usa dispositivi di archiviazione nei dati di Google center. Non è necessario eseguire un cluster HDFS o qualsiasi altro file system per utilizzare Bigtable. Dietro le quinte, Google utilizza lo spazio di archiviazione di proprietà per ottenere una durabilità dei dati che va al di là di quanto offerto dallo standard Replica a tre vie HDFS.

La durabilità viene ulteriormente migliorata quando si utilizza la replica. Bigtable conserva una copia separata dei tuoi dati nella località che selezioni per ciascun cluster di un'istanza replicata.

Modello di coerenza

Le istanze Bigtable a cluster singolo offrono elevata coerenza. Di per impostazione predefinita, le istanze che hanno più di un cluster forniscono coerenza finale, ma per alcuni casi d'uso possono essere configurati forniscono coerenza in operazioni di lettura/scrittura o elevata coerenza, a seconda del le impostazioni del carico di lavoro e del profilo dell'app.

Sicurezza

L'accesso alle tabelle Bigtable è controllato da Google Cloud e ai ruoli IAM (Identity and Access Management) che assegni utenti. Ad esempio, puoi assegnare ruoli IAM che impediscono per i singoli utenti, ad esempio leggendo dalle tabelle, scrivendo nelle tabelle o creando di Compute Engine. Se qualcuno non ha accesso al tuo progetto o non dispone di ruolo IAM con le autorizzazioni appropriate per Bigtable non possono accedere alle tue tabelle.

Puoi anche controllare l'accesso ai dati della tabella creando una vista autorizzata di una tabella che rappresenta un sottoinsieme dei dati della tabella. Quindi puoi concedere autorizzazioni a livello di vista autorizzate per alcuni utenti senza concedendo loro le autorizzazioni a livello di tabella.

Puoi gestire la sicurezza a livello di progetto, istanza, tabella ai livelli di visualizzazione autorizzati. Bigtable non supporta a livello di riga, colonna o cella.

Crittografia

Per impostazione predefinita, tutti i dati archiviati in Google Cloud, inclusi quelli presenti in Bigtable è crittografia at-rest tramite gli stessi sistemi di gestione delle chiavi rafforzati che usiamo per i nostri dati criptati.

Se vuoi un maggiore controllo sulle chiavi utilizzate per criptare i tuoi Dati inattivi di Bigtable, puoi utilizzare la crittografia gestita dal cliente (CMEK).

Backup

I backup di Bigtable consentono di salvare una copia lo schema e i dati della tabella per poi ripristinarli in una nuova tabella in un secondo momento. Utilizzo backup e copie di backup, puoi eseguire il ripristino in una nuova tabella in qualsiasi regione in cui è presente un'istanza Bigtable, indipendentemente da dove della tabella di origine.

Change Data Capture (CDC)

Bigtable offre Change Data Capture (CDC) sotto forma di modifica di streaming. Le modifiche in tempo reale consentono di acquisire e trasferire le modifiche ai dati in una tabella man mano che le modifiche vengono apportate. Puoi leggere un flusso di modifiche utilizzando un servizio come Dataflow per supportare casi d'uso tra cui analisi dei dati, controlli, requisiti di archiviazione e attivare la logica downstream dell'applicazione. Per ulteriori informazioni informazioni, consulta la Panoramica delle streaming.

Routing delle richieste con i profili delle app

I criteri di routing dei profili delle app ti consentono di controllare quali cluster per gestire le richieste in arrivo dalle tue applicazioni. Opzioni per i criteri di routing include:

  • Routing a cluster singolo: invia tutte le richieste a un singolo cluster.
  • Routing multi-cluster a qualsiasi cluster: invia le richieste al cluster più vicino cluster disponibile in un'istanza, incluse le opzioni seguenti:
      .
    • Qualsiasi cluster: qualsiasi cluster nell'istanza può ricevere richieste.
    • Routing dei gruppi di cluster: un gruppo specificato di cluster nell'istanza può ricevere richieste.

Altre opzioni di archiviazione e database

Bigtable non è un database relazionale. Non supporta SQL query, join o transazioni su più righe.

  • Se hai bisogno del supporto SQL completo per un'elaborazione delle transazioni online (OLTP, Online Transaction Processing) di sistema, prendi in considerazione Spanner o Cloud SQL.
  • Se hai bisogno di eseguire query interattive in un'elaborazione analitica online (OLAP) consideriamo BigQuery.
  • Se devi archiviare oggetti altamente strutturati in un database di documenti, con per le transazioni ACID e le query di tipo SQL, prendi in considerazione Firestore.
  • Per l'archiviazione di dati in memoria con bassa latenza, prendi in considerazione Memorystore
  • Per sincronizzare dati tra utenti in tempo reale, prendi in considerazione l'uso di Firebase Realtime Database.

Per ulteriori informazioni sulle altre opzioni di database, consulta la panoramica dei servizi di database. Google Cloud offre anche opzioni di archiviazione.

Passaggi successivi