Creazione e gestione delle tabelle

Questa pagina spiega come creare ed eseguire operazioni sulle tabelle Bigtable utilizzando la console Google Cloud, Google Cloud CLI o cbt.

L'interfaccia a riga di comando cbt supporta diversi comandi non descritti in questa pagina. Consulta il riferimento cbt per un elenco completo dei comandi.

Puoi anche creare e gestire le tabelle in modo programmatico con le librerie client o le API di servizio di Cloud Bigtable.

Prima di iniziare

Se prevedi di lavorare con le tabelle utilizzando strumenti a riga di comando, segui i passaggi riportati in questa sezione.

  1. Installa gcloud CLI.

  2. (Facoltativo) Se prevedi di utilizzare l'interfaccia a riga di comando cbt, segui le istruzioni per installare l'interfaccia a riga di comando cbt , incluso il passaggio per creare un file .cbtrc.

    Le istruzioni per l'interfaccia a riga di comando cbt in questa pagina presuppongono che tu abbia impostato l'ID progetto e l'ID istanza nel file .cbtrc. In alternativa, puoi utilizzare i flag -project e -instance per impostare questi valori ogni volta che esegui un comando dell'interfaccia a riga di comando cbt.

Creare una tabella

Quando crei una tabella, non è necessario specificare le famiglie di colonne da utilizzare nella tabella. Puoi aggiungere o eliminare famiglie di colonne in un secondo momento.

Console

Per creare una nuova tabella in un'istanza:

  1. Apri l'elenco delle istanze Bigtable nella console Google Cloud.

    Apri l'elenco delle istanze

  2. Fai clic sull'istanza di cui vuoi visualizzare le tabelle.

  3. Fai clic su Tables nel riquadro a sinistra.

    La pagina Tabelle mostra un elenco delle tabelle nell'istanza.

  4. Inserisci un ID per la tabella.

  5. (Facoltativo) Aggiungi famiglie di colonne.

    Puoi aggiungere colonne ora o in un secondo momento. In una tabella deve essere presente almeno una famiglia di colonne prima di potervi scrivere dati. Una tabella deve avere almeno una famiglia di colonne prima di potervi scrivere dati o leggere un flusso di modifiche.

  6. (Facoltativo) Abilita un flusso di modifiche per la tabella. Prima di abilitare un flusso di modifiche, assicurati di comprenderne le implicazioni, tra cui l'aumento dei costi di archiviazione e i requisiti di utilizzo dei profili delle app. Per esaminare questi dettagli, consulta la Panoramica delle modifiche in tempo reale.

    1. Seleziona Attiva flusso di modifiche.

    2. Nel campo Data di scadenza, inserisci un numero compreso tra 1 e 7 per specificare il numero di giorni in cui i dati delle modifiche in tempo reale devono essere conservati.

    3. Fai clic su Crea.

  7. Fai clic su Crea una tabella.

gcloud

Per creare una tabella, esegui questo comando. Consulta gcloud bigtable instances Tables create per un elenco completo delle opzioni.

gcloud bigtable instances tables create TABLE_ID \
    --instance=INSTANCE_ID \
    --project=PROJECT_ID \
    --column-families=COLUMN-FAMILIES

Sostituisci quanto segue:

  • TABLE_ID: un ID univoco per la nuova tabella
  • INSTANCE_ID: l'ID dell'istanza
  • PROJECT_ID: il progetto che conterrà la nuova tabella
  • COLUMN-FAMILIES: un elenco separato da virgole di nomi di famiglia di colonne. Puoi aggiungere altre famiglie di colonne in un secondo momento.

(Facoltativo)

  • Per impedire l'eliminazione della tabella, aggiungi il comando con --deletion-protection. Se non applichi questa impostazione, la tabella può essere eliminata. Puoi anche consentire esplicitamente l'eliminazione della tabella aggiungendo --no-deletion-protection.

  • Per abilitare un flusso di modifiche per la tabella, specifica un periodo di conservazione per i dati delle modifiche in tempo reale. Prima di abilitare un flusso di modifiche, assicurati di comprenderne le implicazioni, tra cui l'aumento dei costi di archiviazione e i requisiti di utilizzo dei profili di app. Per esaminare questi dettagli, consulta la Panoramica delle modifiche in tempo reale.

    --change-stream-retention-period=RETENTION_PERIOD
    

    Sostituisci RETENTION_PERIOD con l'intervallo di tempo durante il quale Bigtable deve conservare i dati delle modifiche in tempo reale per la tabella. L'intervallo di tempo deve essere compreso tra uno e sette giorni. Le unità accettabili sono giorni (d), ore (h), minuti (m) e secondi (s). Esempi: 48h o 6d

cbt

Utilizza il comando seguente, sostituendo [TABLE_NAME] con il nome della tabella. Non puoi utilizzare l'interfaccia a riga di comando cbt per creare una tabella con un flusso di modifiche abilitato.

cbt createtable [TABLE_NAME]

Se hai eliminato una tabella per errore, non tentare di crearla manualmente. Utilizza il comando dell'interfaccia a riga di comando gcloud bigtable instances tables undelete per recuperare la tabella.

(Facoltativo) Suddividi la tabella per chiave di riga

Una funzionalità di Bigtable come servizio completamente gestito è la suddivisione automatica delle tabelle in più nodi. Questa funzionalità ottimizza le prestazioni distribuendo uniformemente la quantità di dati archiviati su ciascun nodo e mantenendo separate le righe a cui si accede di frequente, se possibile.

Quando crei una tabella utilizzando gcloud CLI, cbt o una libreria client di Cloud Bigtable, puoi scegliere le chiavi di riga per predividere la tabella. Ad esempio, puoi designare righe specifiche per dividere la tabella prima della suddivisione se stai per scrivere molte righe nella tabella. Puoi fornire fino a 100 chiavi di riga in cui devono avvenire le suddivisioni iniziali.

La suddivisione preliminare della tabella non è essenziale, ma è utile perché fornisce informazioni Bigtable sulla posizione in cui il carico e l'impronta dei dati probabilmente arriveranno al momento della creazione della tabella. La pre-suddivisione impedisce a Bigtable di suddividere le tabelle e ribilanciare il carico contemporaneamente all'arrivo dei dati.

La tabella non rimane divisa sulle chiavi di riga su cui scegli di eseguire la pre-suddivisione quando crei la tabella. Bigtable alla fine suddivide la tabella in base a chiavi di riga diverse, in base alla quantità di dati al suo interno e alla frequenza di accesso a ogni riga.

Console

Non puoi eseguire preventivamente le righe quando crei una tabella utilizzando la console Google Cloud.

gcloud

Per suddividere una tabella per chiave di riga, esegui questo comando. Consulta gcloud bigtable instances Tables create per un elenco completo delle opzioni.

gcloud bigtable instances tables create TABLE_ID\
    --instance=INSTANCE_ID \
    --project=PROJECT_ID \
    --column-families=COLUMN-FAMILIES \
    --splits=SPLITS

Sostituisci quanto segue:

  • TABLE_ID: un ID univoco per la nuova tabella
  • INSTANCE_ID: l'ID dell'istanza
  • PROJECT_ID: il progetto che conterrà la nuova tabella
  • COLUMN-FAMILIES: un elenco separato da virgole di nomi di famiglia di colonne. Puoi aggiungere altre famiglie di colonne in un secondo momento.
  • SPLITS: le chiavi di riga in cui la tabella dovrebbe essere inizialmente suddivisa, ad esempio 10,20.

cbt

Per creare la tabella prima della suddivisione in base alla chiave di riga, utilizza la seguente sintassi. Sostituisci [TABLE_NAME] con il nome della tabella e [SPLITS] con un elenco separato da virgole di prefissi delle chiavi di riga da utilizzare per i pre-split.

```
cbt createtable [TABLE_NAME] splits=[SPLITS]
```

Ad esempio, per dividere preventivamente la tabella my-table in corrispondenza delle chiavi di riga che iniziano con 10 e 20:

```
cbt createtable my-table splits=10,20
```

Modificare le famiglie di colonne in una tabella

Puoi aggiungere famiglie di colonne in una tabella esistente. Se nella tabella non è abilitata la protezione da eliminazione, puoi eliminare le famiglie di colonne nella tabella.

Aggiungi famiglie di colonne

Console

  1. Apri l'elenco delle istanze Bigtable nella console Google Cloud.

    Apri l'elenco delle istanze

  2. Fai clic sull'istanza di cui vuoi visualizzare le tabelle.

  3. Fai clic su Tables nel riquadro a sinistra.

    La pagina Tabelle mostra un elenco delle tabelle nell'istanza.

  4. Fai clic su Modifica per la tabella da modificare.

  5. Per ogni famiglia di colonne da aggiungere, completa i seguenti passaggi:

    1. Fai clic su Aggiungi famiglia di colonne.
    2. Specifica un identificatore univoco per la famiglia di colonne.
    3. Imposta il criterio di garbage collection per la famiglia di colonne.
    4. Fai clic su Fine.
    5. Fai clic su Salva.

gcloud

Non puoi utilizzare gcloud CLI per aggiungere famiglie di colonne a una tabella.

cbt

Per aggiungere una famiglia di colonne a una tabella, utilizza il comando seguente, sostituendo [TABLE_NAME] con il nome della tabella e [FAMILY_NAME] con il nome della famiglia di colonne:

cbt createfamily [TABLE_NAME] [FAMILY_NAME]

Ad esempio, per aggiungere le famiglie di colonne cf1 e cf2 alla tabella my-table:

cbt createfamily my-table cf1
cbt createfamily my-table cf2

Elimina famiglie di colonne

Puoi eliminare famiglie di colonne in una tabella in cui non è abilitata la protezione da eliminazione.

Console

  1. Apri l'elenco delle istanze Bigtable nella console Google Cloud.

    Apri l'elenco delle istanze

  2. Fai clic sull'istanza di cui vuoi visualizzare le tabelle.

  3. Fai clic su Tables nel riquadro a sinistra.

    La pagina Tabelle mostra un elenco delle tabelle nell'istanza.

  4. Fai clic su Modifica per la tabella da modificare.

  5. Per ogni famiglia di colonne da eliminare, completa i seguenti passaggi:

    1. Passa il mouse sulla riga relativa alla famiglia di colonne da eliminare.
    2. Fai clic su .
  6. Fai clic su Salva.

  7. Per confermare di aver compreso che l'eliminazione di una famiglia di colonne è definitiva e che tutti i dati nella famiglia di colonne verranno eliminati, digita "Elimina famiglie di colonne" nella casella di testo.

  8. Fai clic su Conferma.

gcloud

Non puoi utilizzare gcloud CLI per eliminare le famiglie di colonne da una tabella.

cbt

Per eliminare una famiglia di colonne da una tabella, utilizza il comando seguente, sostituendo [TABLE_NAME] con il nome della tabella e [FAMILY_NAME] con il nome della famiglia di colonne:

cbt deletefamily [TABLE_NAME] [FAMILY_NAME]

Ad esempio, per eliminare la famiglia di colonne cf2 dalla tabella my-table:

cbt deletefamily my-table cf2

Visualizza un elenco di tabelle

Console

Per visualizzare un elenco delle tabelle in un'istanza:

  1. Apri l'elenco delle istanze Bigtable nella console Google Cloud.

    Apri l'elenco delle istanze

  2. Fai clic sull'istanza di cui vuoi visualizzare le tabelle.

  3. Fai clic su Tables nel riquadro a sinistra.

    La pagina Tabelle mostra un elenco delle tabelle nell'istanza.

    • Fai clic sulla freccia accanto all'ID della tabella per espandere un elenco di repliche della tabella.
    • Fai clic su Visualizza metriche accanto al nome di una tabella per visualizzare i dati di monitoraggio per la tabella.

gcloud

Per visualizzare un elenco di tabelle, esegui il comando gcloud bigtable instances Tables list.

gcloud bigtable instances tables list --instances=INSTANCE_IDS

Sostituisci quanto segue:

  • INSTANCE_IDS: un elenco separato da virgole di ID istanza.

cbt

Per visualizzare un elenco delle tabelle in un'istanza, esegui questo comando:

    cbt ls INSTANCE_ID

Sostituisci quanto segue:

  • INSTANCE_ID: l'identificatore permanente dell'istanza.

C++

Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.

Per eseguire l'autenticazione in Bigtable, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

namespace cbt = ::google::cloud::bigtable;
namespace cbta = ::google::cloud::bigtable_admin;
using ::google::cloud::StreamRange;
[](cbta::BigtableTableAdminClient admin, std::string const& project_id,
   std::string const& instance_id) {
  std::string instance_name = cbt::InstanceName(project_id, instance_id);

  google::bigtable::admin::v2::ListTablesRequest r;
  r.set_parent(instance_name);
  r.set_view(google::bigtable::admin::v2::Table::NAME_ONLY);

  StreamRange<google::bigtable::admin::v2::Table> tables =
      admin.ListTables(std::move(r));
  for (auto& table : tables) {
    if (!table) throw std::move(table).status();
    std::cout << table->name() << "\n";
  }
}

C#

Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.

Per eseguire l'autenticazione in Bigtable, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

// Lists tables in intance.
// Initialize request argument(s).
ListTablesRequest request = new ListTablesRequest
{
    ParentAsInstanceName = s_instanceName
};
try
{
    // Make the request.
    PagedEnumerable<ListTablesResponse, Table> response = bigtableTableAdminClient.ListTables(request);

}
catch (Exception ex)
{
    Console.WriteLine($"Error listing tables {ex.Message}");
}

Java

Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.

Per eseguire l'autenticazione in Bigtable, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

// Lists tables in the current instance.
try {
  List<String> tableIds = adminClient.listTables();
  for (String tableId : tableIds) {
    System.out.println(tableId);
  }
} catch (NotFoundException e) {
  System.err.println("Failed to list tables from a non-existent instance: " + e.getMessage());
}

Node.js

Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.

Per eseguire l'autenticazione in Bigtable, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

// List tables in current project
const [tables] = await instance.getTables();
tables.forEach(table => {
  console.log(table.id);
});

PHP

Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.

Per eseguire l'autenticazione in Bigtable, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

use Google\Cloud\Bigtable\Admin\V2\Client\BigtableInstanceAdminClient;
use Google\Cloud\Bigtable\Admin\V2\Client\BigtableTableAdminClient;
use Google\Cloud\Bigtable\Admin\V2\ListTablesRequest;

/**
 * List tables in an instance
 *
 * @param string $projectId The Google Cloud project ID
 * @param string $instanceId The ID of the Bigtable instance
 */
function list_tables(
    string $projectId,
    string $instanceId
): void {
    $instanceAdminClient = new BigtableInstanceAdminClient();
    $tableAdminClient = new BigtableTableAdminClient();

    $instanceName = $instanceAdminClient->instanceName($projectId, $instanceId);

    printf('Listing Tables:' . PHP_EOL);
    $listTablesRequest = (new ListTablesRequest())
        ->setParent($instanceName);
    $tables = $tableAdminClient->listTables($listTablesRequest)->iterateAllElements();
    $tables = iterator_to_array($tables);
    if (empty($tables)) {
        print('No table exists.' . PHP_EOL);
        return;
    }
    foreach ($tables as $table) {
        print($table->getName() . PHP_EOL);
    }
}

Python

Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.

Per eseguire l'autenticazione in Bigtable, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

tables = instance.list_tables()
print("Listing tables in current project...")
if tables != []:
    for tbl in tables:
        print(tbl.table_id)
else:
    print("No table exists in current project...")

Ruby

Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.

Per eseguire l'autenticazione in Bigtable, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

# instance_id = "my-instance"
bigtable.tables(instance_id).all.each do |t|
  puts "Table: #{t.name}"
end

Visualizzare le informazioni su una tabella

Console

Per visualizzare le informazioni su una tabella:

  1. Apri l'elenco delle istanze Bigtable nella console Google Cloud.

    Apri l'elenco delle istanze

  2. Fai clic sull'istanza di cui vuoi visualizzare le tabelle.

  3. Fai clic su Tables nel riquadro a sinistra.

    La pagina Tabelle mostra un elenco delle tabelle nell'istanza. Per ogni tabella, la console Google Cloud visualizza il numero di cluster in cui è archiviata la tabella, lo stato della tabella, l'utilizzo dello spazio di archiviazione e gli identificatori per eventuali backup correnti della tabella.

  4. Per visualizzare i nomi famiglia di colonne per la tabella, fai clic su . Per chiudere il riquadro Modifica tabella, fai clic su Annulla.

  5. Per visualizzare ulteriori dettagli sulla tabella, tra cui metriche a livello di tabella e stato di replica, fai clic sul nome della tabella.

gcloud

Per visualizzare le informazioni su una tabella, esegui il comando gcloud bigtable instances table describe.

gcloud bigtable instances tables describe TABLE_ID \
    --instance=INSTANCE_ID

Sostituisci quanto segue:

  • TABLE_ID: un ID univoco della tabella
  • INSTANCE_ID: l'ID dell'istanza

cbt

Puoi utilizzare l'interfaccia a riga di comando cbt per ottenere un elenco delle famiglie di colonne esistenti in una tabella.

Utilizza il comando seguente, sostituendo [TABLE_NAME] con il nome della tabella:

cbt ls [TABLE_NAME]

Imposta i criteri di garbage collection

Un criterio di garbage collection indica a Bigtable quali dati conservare e quali contrassegnare per l'eliminazione. I criteri di garbage collection sono impostati a livello di famiglia di colonne. Puoi impostarle al momento della creazione della tabella o in un secondo momento.

Quando crei una famiglia di colonne, puoi specificare il numero di celle da conservare in ogni colonna della famiglia di colonne. Se non specifichi questa impostazione, Bigtable utilizza una delle seguenti impostazioni predefinite:

  • Se crei la famiglia di colonne con il client HBase di Cloud Bigtable per Java o la shell HBase o con un altro strumento che utilizza il client HBase per Java, Bigtable conserva solo 1 cella per ogni intersezione di riga/colonna nella famiglia di colonne. Questa impostazione predefinita è coerente con HBase.

  • Se crei la famiglia di colonne utilizzando la console Google Cloud, qualsiasi altra libreria client o l'interfaccia a riga di comando cbt , Bigtable conserva un numero infinito di celle in ogni colonna.

Consulta Configurare i criteri di garbage collection per istruzioni dettagliate su come visualizzare, impostare e aggiornare i criteri di garbage collection.

Esegui il backup e ripristina una tabella

Per istruzioni su come eseguire il backup di una tabella e il ripristino da un backup in una nuova tabella, consulta Gestione dei backup.

Attivare, disattivare o configurare un flusso di modifiche

Per le istruzioni sulle attività seguenti, consulta Configurare un flusso di modifiche.

  • Abilitazione di un flusso di modifiche su una tabella esistente
  • Disattivazione di una modifica in tempo reale
  • Aggiornare il periodo di conservazione per una modifica in tempo reale

Eliminazione di una tabella

Console

  1. Apri l'elenco delle istanze Bigtable nella console Google Cloud.

    Apri l'elenco delle istanze

  2. Fai clic sull'istanza di cui vuoi visualizzare le tabelle.

  3. Fai clic su Tables nel riquadro a sinistra.

    La pagina Tabelle mostra un elenco delle tabelle nell'istanza.

  4. Fai clic su per la tabella da eliminare.

  5. Fai clic su Elimina.

  6. Per confermare che questa azione eliminerà la tabella da tutti i cluster nell'istanza e che hai solo sette giorni di tempo per annullare l'eliminazione, digita l'ID tabella nella casella di testo.

  7. Fai clic su Elimina.

gcloud

  1. Per eliminare le tabelle, esegui il comando gcloud bigtable instances table delete.

    gcloud bigtable instances tables delete --instance=INSTANCE_ID
    

    Sostituisci quanto segue:

    • INSTANCE_ID: l'ID dell'istanza
  2. Nel terminale, inserisci y per confermare l'eliminazione della tabella.

cbt

Per eliminare una tabella, utilizza il comando seguente, sostituendo [TABLE_NAME] con il nome della tabella:

cbt deletetable [TABLE_NAME]

Annullare l'eliminazione di una tabella

Se elimini accidentalmente una tabella, puoi utilizzare il comando dell'interfaccia a riga di comando gcloud CLI bigtable instances tables undelete per undelete o recuperare la tabella. Non tentare prima di creare manualmente la tabella eliminata.

Per annullare l'eliminazione di una tabella, esegui questo comando nel terminale:

gcloud bigtable instances tables undelete TABLE_ID --instance=INSTANCE_ID

Sostituisci quanto segue:

  • TABLE_ID: l'identificatore univoco della tabella
  • INSTANCE_ID: l'ID dell'istanza

Si applicano le seguenti limitazioni:

  • La possibilità di annullare l'eliminazione di una tabella è disponibile per circa sette giorni dal momento dell'eliminazione della tabella.
  • Non puoi annullare l'eliminazione di una tabella utilizzando la console Google Cloud, le librerie client di Cloud Bigtable o l'interfaccia a riga di comando cbt.
  • Non puoi annullare l'eliminazione di una tabella da un'istanza che è stata eliminata.
  • Non puoi annullare l'eliminazione di una tabella con CMEK abilitata.
  • Le associazioni di criteri IAM granulari di una tabella prima dell'eliminazione non vengono ripristinate se l'eliminazione della tabella viene annullata.

Facoltativamente, puoi controllare lo stato dell'operazione undelete negli audit log.

Modificare la protezione da eliminazione

Puoi abilitare o disabilitare la protezione da eliminazione per una tabella se sei un'entità in un ruolo che include l'autorizzazione bigtable.tables.update, ad esempio roles/bigtable.admin. La protezione dall'eliminazione impedisce l'eliminazione della tabella, di tutte le famiglie di colonne nella tabella e dell'istanza che contiene la tabella.

Console

  1. Apri l'elenco delle istanze Bigtable nella console Google Cloud.

    Apri l'elenco delle istanze

  2. Fai clic sull'istanza di cui vuoi visualizzare le tabelle.

  3. Fai clic su Tables nel riquadro a sinistra.

    La pagina Tabelle mostra un elenco delle tabelle nell'istanza.

  4. Fai clic su accanto all'ID tabella.

  5. Per attivare la protezione da eliminazione, fai clic su Impedisci eliminazione. Per disattivare la protezione da eliminazione, fai clic su Abilita l'eliminazione. È visibile solo l'opzione valida.

gcloud

Per abilitare la protezione da eliminazione per una tabella, esegui il comando gcloud bigtable instances table update:

gcloud bigtable instances tables update TABLE_ID \
    --instance=INSTANCE_ID \
    --deletion-protection

Per disabilitare la protezione da eliminazione per una tabella, esegui questo comando:

gcloud bigtable instances tables update TABLE_ID \
    --instance=INSTANCE_ID \
    --no-deletion-protection

Sostituisci quanto segue:

+ TABLE_ID: the unique identifier for the table
+ INSTANCE_ID: the ID of the instance

cbt

Non puoi utilizzare l'interfaccia a riga di comando cbt per abilitare o disabilitare la protezione da eliminazione.