Applicazione del tipo di dati in Bigtable

Lo schema flessibile di Bigtable ti consente di archiviare dati di qualsiasi tipo, stringhe, date, numeri, documenti JSON o persino immagini o PDF, in una tabella Bigtable.

Questo documento descrive quando Bigtable applica il tipo, richiedendo di codificarlo o decodificarlo nel codice dell'applicazione. Per un elenco dei tipi di dati Bigtable, consulta Type nella documentazione di riferimento dell'API Data.

Tipi applicati

Il tipo di dati viene applicato ai seguenti dati:

  • Aggrega famiglie di colonne (contatori)
  • Timestamp
  • Viste materializzate

Aggregati

Per il tipo di dati aggregato, la codifica dipende dal tipo di aggregazione. Quando crei una famiglia di colonne aggregate, devi specificare un tipo di aggregazione.

Questa tabella mostra il tipo di input e la codifica per ogni tipo di aggregazione.

Tipo di aggregazione Tipo di input Codifica
Somma Int64 BigEndianBytes
Min Int64 BigEndianBytes
Max Int64 BigEndianBytes
HLL Byte Zetasketch HLL++

Quando esegui query sui dati nelle celle aggregate utilizzando SQL, SQL incorpora automaticamente le informazioni sul tipo.

Quando leggi i dati nelle celle aggregate utilizzando il metodo ReadRows dell'API Data, Bigtable restituisce byte, quindi la tua applicazione deve decodificare i valori utilizzando la codifica che Bigtable ha utilizzato per mappare i dati digitati in byte.

Non puoi convertire una famiglia di colonne che contiene dati non aggregati in una famiglia di colonne aggregate. Le colonne nelle famiglie di colonne aggregate non possono contenere celle non aggregate e le famiglie di colonne standard non possono contenere celle aggregate.

Per ulteriori informazioni sulla creazione di tabelle con famiglie di colonne aggregate, vedi Creare una tabella. Per esempi di codice che mostrano come incrementare una cella aggregata con valori codificati, consulta Incrementare un valore.

Timestamp

Ogni cella Bigtable ha un timestamp Int64 che deve essere un valore in microsecondi con una precisione massima di un millisecondo. Bigtable rifiuta un timestamp con precisione in microsecondi, ad esempio 3023483279876543. In questo esempio, il valore accettabile per il timestamp รจ 3023483279876000. Un timestamp รจ il numero di microsecondi trascorsi dall'epoca Unix, 1970-01-01 00:00:00 UTC.

Viste materializzate continue

Le viste materializzate continue sono risorse di sola lettura che puoi leggere utilizzando SQL o con una chiamata API ReadRows Data. I dati in una vista materializzata sono tipizzati in base alla query che la definisce. Per una panoramica, vedi Viste materializzate continue.

Quando utilizzi SQL per eseguire query su una vista materializzata continua, SQL incorpora automaticamente le informazioni sul tipo.

Quando leggi da una vista materializzata continua utilizzando una richiesta dell'API Data ReadRows, devi conoscere il tipo di ogni colonna e decodificarlo nel codice dell'applicazione.

I valori aggregati in una vista materializzata continua vengono archiviati utilizzando la codifica descritta nella tabella seguente, in base al tipo di output della colonna della definizione della vista.

Tipo Codifica
BOOL Valore di 1 byte, 1 = true, 0 = false
BYTES Nessuna codifica
INT64 (o INT, SMALLINT, INTEGER, BIGINT, TINYINT, BYTEINT) 64 bit big-endian
FLOAT64 IEEE 754 a 64 bit, escluso NaN e +/-inf
STRING UTF-8
TIME/TIMESTAMP Numero intero a 64 bit che rappresenta il numero di microsecondi trascorsi dall'epoca Unix (coerente con GoogleSQL)
Per ulteriori informazioni, consulta la sezione Codifica nel riferimento dell'API Data.

Chiavi di riga strutturate

Le chiavi di riga strutturate ti consentono di accedere ai dati utilizzando chiavi multicolonna, simili alle chiavi composite nei database relazionali.

Il tipo e la codifica delle chiavi di riga strutturate sono definiti da uno schema delle chiavi di riga che puoi aggiungere facoltativamente a una tabella Bigtable. I dati della chiave di riga strutturata vengono archiviati come byte, ma GoogleSQL per Bigtable utilizza automaticamente il tipo e la codifica definiti nello schema della chiave di riga quando esegui una query SQL sulla tabella.

L'utilizzo di uno schema di chiave di riga per eseguire query su una tabella con una richiesta ReadRows non รจ supportato. Per impostazione predefinita, una vista materializzata continua ha uno schema di chiave di riga. Per ulteriori informazioni sulle chiavi di riga strutturate, consulta Gestire chiave di riga riga.

Tipi non applicati

Se non vengono fornite informazioni sul tipo, Bigtable considera ogni cella come byte con una codifica sconosciuta.

Quando esegui query sulle famiglie di colonne create senza l'applicazione del tipo, devi fornire informazioni sul tipo al momento della lettura per assicurarti che i dati vengano letti correttamente. Ciรฒ รจ pertinente per le funzioni di database il cui comportamento dipende dal tipo di dati. GoogleSQL per Bigtable offre funzioni CAST per eseguire conversioni di tipo al momento della query. Queste funzioni convertono i byte nei tipi previsti da varie funzioni.

Sebbene Bigtable non applichi i tipi, alcune operazioni presuppongono un tipo di dati. Conoscere questo aspetto ti aiuta a garantire che i tuoi dati vengano scritti in modo da poter essere elaborati all'interno del database. Ecco alcuni esempi:

  • Gli incrementi che utilizzano ReadModifyWriteRow presuppongono che la cella contenga un numero intero con segno big-endian a 64 bit.
  • La funzione TO_VECTOR64 in SQL prevede che la cella contenga un array di byte che รจ una concatenazione dei byte big-endian di numeri in virgola mobile a 64 bit.
  • La funzione TO_VECTOR32 in SQL prevede che la cella contenga un array di byte che รจ una concatenazione dei byte big-endian di numeri in virgola mobile a 32 bit.

Passaggi successivi