Crea y administra tablas

En esta página, se explica cómo crear y realizar operaciones en tablas de Bigtable con la consola de Google Cloud, Google Cloud CLI o la CLI de cbt.

La CLI de cbt admite varios comandos que no se describen en esta página. Consulta la referencia de cbt para obtener una lista completa de comandos.

También puedes crear y administrar tablas de manera programática con las bibliotecas cliente o las APIs de servicio de Cloud Bigtable.

Antes de comenzar

Si planeas trabajar con tus tablas mediante herramientas de línea de comandos, sigue los pasos de esta sección.

  1. Instala la CLI de gcloud

  2. Opcional: Si planeas usar la CLI de cbt, sigue las instrucciones que se indican en la página Instala la CLI de cbt , incluido el paso para crear un archivo .cbtrc.

    En las instrucciones de la CLI de cbt que se incluyen en esta página, se da por sentado que configuraste el ID del proyecto y de la instancia en el archivo .cbtrc. Como alternativa, puedes usar las marcas -project y -instance para establecer estos valores cada vez que ejecutes un comando cbt de la CLI.

Crear una tabla

Cuando creas una tabla, no necesitas especificar las familias de columnas que se usarán en ella. Puedes agregar o borrar familias de columnas más adelante.

Console

Para crear una tabla nueva en una instancia, sigue estos pasos:

  1. Abre la lista de instancias de Bigtable en la consola de Google Cloud.

    Abrir la lista de instancias

  2. Haz clic en la instancia que tiene las tablas deseas ver.

  3. Haz clic en Tablas en el panel izquierdo.

    En la página Tablas, se mostrará una lista de tablas de la instancia.

  4. Ingresa un ID para la tabla.

  5. Agrega familias de columnas (opcional)

    Puedes agregar columnas ahora o más tarde. Una tabla debe tener al menos una familia de columnas antes de poder escribir datos en ella. Una tabla debe tener al menos una familia de columnas antes de que puedas escribirle datos o leer un flujo de cambios de ella.

  6. Habilita un flujo de cambios para la tabla (opcional). Antes de habilitar un flujo de cambios, asegúrate de comprender las implicaciones, incluidos los mayores costos de almacenamiento y los requisitos de uso del perfil de app. Para revisar estos detalles, consulta la Descripción general de los flujos de cambios.

    1. Selecciona Habilitar flujo de cambios.

    2. En el campo Expiration time, ingresa un número del 1 al 7 para especificar la cantidad de días en los que se deben retener los datos del flujo de cambios.

    3. Haz clic en Crear.

  7. Haz clic en Crea una tabla.

gcloud

Para crear una tabla, ejecuta el siguiente comando. Consulta gcloud bigtable instances table create para obtener una lista completa de las opciones.

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

Reemplaza lo siguiente:

  • TABLE_ID: Un ID único para la tabla nueva
  • INSTANCE_ID: El ID de la instancia
  • PROJECT_ID: El proyecto que contendrá la tabla nueva
  • COLUMN-FAMILIES: Es una lista separada por comas de nombres de familia de columnas. Puedes agregar más familias de columnas más adelante.

Opcional:

  • Para evitar que la tabla se borre, agrega el comando con --deletion-protection. Si no aplicas esta configuración, la tabla se puede borrar. También puedes permitir explícitamente la eliminación de la tabla si agregas --no-deletion-protection.

  • Si deseas habilitar un flujo de cambios en la tabla, especifica un período de retención para los datos del flujo de cambios. Antes de habilitar un flujo de cambios, asegúrate de comprender las implicaciones, incluidos el aumento de los costos de almacenamiento y los requisitos de uso del perfil de app. Para revisar estos detalles, consulta la Descripción general de los flujos de cambios.

    --change-stream-retention-period=RETENTION_PERIOD
    

    Reemplaza RETENTION_PERIOD por el tiempo que Bigtable debería retener los datos del flujo de cambios de la tabla. El tiempo debe ser entre uno y siete días. Las unidades aceptables son días (d), horas (h), minutos (m) y segundos (s). Ejemplos: 48h o 6d

  • Para permitir que Bigtable realice una copia de seguridad diaria de tu tabla, usa el siguiente comando:

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

cbt

Usa el siguiente comando y reemplaza [TABLE_NAME] por el nombre de tu tabla. No puedes usar la CLI de cbt para crear una tabla con un flujo de cambios habilitado.

cbt createtable [TABLE_NAME]

Si borraste una tabla por error, no intentes crearla manualmente. Usa el comando de gcloud CLI bigtable instances tables undelete para recuperar la tabla.

Opcional: Divide la tabla por clave de fila

Una de las características de Bigtable como servicio completamente administrado es la división automática de tablas en varios nodos. Siempre que sea posible, esta función distribuye de manera uniforme la cantidad de datos almacenados en cada nodo y mantiene separadas las filas a las que se accede con frecuencia para optimizar el rendimiento.

Cuando creas una tabla con gcloud CLI, la CLI de cbt o una biblioteca cliente de Cloud Bigtable, puedes elegir claves de fila para dividir previamente la tabla. Por ejemplo, puedes designar filas específicas para dividir previamente la tabla si vas a escribir muchas filas en ella. Puedes proporcionar hasta 100 claves de fila en las que deberían ocurrir las divisiones iniciales.

No es esencial dividir la tabla antes, pero es beneficioso, ya que proporciona información de Bigtable sobre dónde es probable que lleguen la carga y la huella de datos cuando la tabla se crea. La división previa evita que Bigtable tenga que dividir las tablas y volver a balancear la carga de una sola vez a medida que llegan los datos.

La tabla no permanece dividida en las claves de fila que eliges dividir antes cuando creas la tabla. Con el tiempo, Bigtable divide tu tabla en diferentes claves de fila, según la cantidad de datos que hay en la tabla y la frecuencia con que se accede a cada fila.

Console

No puedes dividir previamente las filas cuando creas una tabla con la consola de Google Cloud.

gcloud

Para dividir una tabla por clave de fila, ejecuta el siguiente comando. Consulta gcloud bigtable instances table create para obtener una lista completa de las opciones.

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

Reemplaza lo siguiente:

  • TABLE_ID: Un ID único para la tabla nueva
  • INSTANCE_ID: El ID de la instancia
  • PROJECT_ID: El proyecto que contendrá la tabla nueva
  • COLUMN-FAMILIES: Es una lista separada por comas de nombres de familia de columnas. Puedes agregar más familias de columnas más adelante.
  • SPLITS: Son las claves de fila en las que la tabla debe dividirse inicialmente, por ejemplo, 10,20.

cbt

Para dividir previamente una tabla según la clave de fila, usa la siguiente sintaxis para crear la tabla. Reemplaza [TABLE_NAME] por el nombre de la tabla y [SPLITS] por una lista separada por comas de los prefijos de clave de fila que se usarán para las divisiones previas.

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

Por ejemplo, para dividir antes la tabla my-table en las claves de fila que comienzan con 10 y 20, ingresa el siguiente comando:

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

Modifica las familias de columnas en una tabla

Puedes agregar familias de columnas en una tabla existente. Si la tabla no tiene habilitada la protección contra la eliminación, puedes borrar las familias de columnas de la tabla.

Agrega familias de columnas

Console

  1. Abre la lista de instancias de Bigtable en la consola de Google Cloud.

    Abrir la lista de instancias

  2. Haz clic en la instancia que tiene las tablas deseas ver.

  3. Haz clic en Tablas en el panel izquierdo.

    En la página Tablas, se mostrará una lista de tablas de la instancia.

  4. Haz clic en Editar en la tabla que deseas modificar.

  5. Para cada familia de columnas que desees agregar, completa lo siguiente:

    1. Haz clic en Agregar familia de columnas.
    2. Proporciona un identificador único para la familia de columnas.
    3. Establece la política de recolección de elementos no utilizados para la familia de columnas.
    4. Haz clic en Listo.
    5. Haz clic en Guardar.

gcloud

No puedes usar gcloud CLI para agregar familias de columnas a una tabla.

cbt

Para agregar una familia de columnas, usa el siguiente comando y reemplaza [TABLE_NAME] con el nombre de la tabla y [FAMILY_NAME] con el nombre de la familia de columnas:

cbt createfamily [TABLE_NAME] [FAMILY_NAME]

Por ejemplo, ingresa el siguiente comando para agregar las familias de columnas cf1 y cf2 a la tabla my-table:

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

Borrar familias de columnas

Puedes borrar familias de columnas de una tabla que no tenga habilitada la protección contra la eliminación.

Console

  1. Abre la lista de instancias de Bigtable en la consola de Google Cloud.

    Abrir la lista de instancias

  2. Haz clic en la instancia que tiene las tablas deseas ver.

  3. Haz clic en Tablas en el panel izquierdo.

    En la página Tablas, se mostrará una lista de tablas de la instancia.

  4. Haz clic en Editar en la tabla que deseas modificar.

  5. Para cada familia de columnas que desees borrar, completa los siguientes pasos:

    1. Coloca el cursor sobre la fila de la familia de columnas que desees borrar.
    2. Haga clic en .
  6. Haz clic en Guardar.

  7. Para confirmar que comprendes que la eliminación de una familia de columnas es permanente y que todos los datos en la familia de columnas se borrarán, escribe “Borrar familias de columnas” en el cuadro de texto.

  8. Haz clic en Confirmar.

gcloud

No puedes usar gcloud CLI para borrar familias de columnas de una tabla.

cbt

Usa el siguiente comando para borrar una familia de columnas de una tabla y reemplaza [TABLE_NAME] con el nombre de la tabla y [FAMILY_NAME] con el nombre de la familia de columnas:

cbt deletefamily [TABLE_NAME] [FAMILY_NAME]

Por ejemplo, ingresa el siguiente comando para borrar la familia de columnas cf2 de la tabla my-table:

cbt deletefamily my-table cf2

Ve una lista de tablas

Console

Sigue estos pasos para ver una lista de tablas en una instancia:

  1. Abre la lista de instancias de Bigtable en la consola de Google Cloud.

    Abrir la lista de instancias

  2. Haz clic en la instancia que tiene las tablas deseas ver.

  3. Haz clic en Tablas en el panel izquierdo.

    En la página Tablas, se mostrará una lista de tablas de la instancia.

    • Haz clic en la flecha al lado del ID de la tabla para expandir una lista de replicaciones de la tabla.
    • Haz clic en Ver métricas junto al nombre de una tabla para ver los datos de supervisión de la tabla.

gcloud

Para ver una lista de tablas, ejecuta el comando gcloud bigtable instances Tables list.

gcloud bigtable instances tables list --instances=INSTANCE_IDS

Reemplaza lo siguiente:

  • INSTANCE_IDS: Es una lista separada por comas de los IDs de instancia.

cbt

Ejecuta el siguiente comando para ver una lista de tablas en una instancia:

    cbt ls INSTANCE_ID

Reemplaza lo siguiente:

  • INSTANCE_ID: Identificador permanente de la instancia

C++

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Bigtable, consulta Bibliotecas cliente de Bigtable.

Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

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#

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Bigtable, consulta Bibliotecas cliente de Bigtable.

Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

// 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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Bigtable, consulta Bibliotecas cliente de Bigtable.

Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

// 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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Bigtable, consulta Bibliotecas cliente de Bigtable.

Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

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

PHP

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Bigtable, consulta Bibliotecas cliente de Bigtable.

Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Bigtable, consulta Bibliotecas cliente de Bigtable.

Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

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...")

Rita

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Bigtable, consulta Bibliotecas cliente de Bigtable.

Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

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

Ve información sobre una tabla

Console

Para ver información sobre una tabla, haz lo siguiente:

  1. Abre la lista de instancias de Bigtable en la consola de Google Cloud.

    Abrir la lista de instancias

  2. Haz clic en la instancia que tiene las tablas deseas ver.

  3. Haz clic en Tablas en el panel izquierdo.

    En la página Tablas, se mostrará una lista de tablas de la instancia. Para cada tabla, la consola de Google Cloud muestra la cantidad de clústeres en los que se almacena la tabla, el estado de la tabla, el uso del almacenamiento y los identificadores de cualquier copia de seguridad actual de la tabla.

  4. Para ver los nombres de las familias de columnas de la tabla, haz clic en . Para cerrar el panel Editar tabla, haz clic en Cancelar.

  5. Para ver detalles adicionales sobre la tabla, incluidas las métricas a nivel de tabla y el estado de replicación, haz clic en el nombre de la tabla.

gcloud

Para ver información sobre una tabla, ejecuta el comando gcloud bigtable instances Tables describe.

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

Reemplaza lo siguiente:

  • TABLE_ID: Un ID único de la tabla
  • INSTANCE_ID: El ID de la instancia

cbt

Puedes usar la CLI de cbt para obtener una lista de las familias de columnas existentes en una tabla.

Usa el siguiente comando y reemplaza [TABLE_NAME] por el nombre de la tabla:

cbt ls [TABLE_NAME]

Configura políticas de recolección de elementos no utilizados

Una política de recolección de elementos no utilizados le indica a Bigtable qué datos conservar y cuáles marcar para su eliminación. Las políticas de recolección de elementos no utilizados se establecen a nivel de la familia de columnas. Puedes configurarlas cuando creas la tabla o después.

Cuando creas una familia de columnas, puedes especificar la cantidad de celdas que deseas retener en cada columna. Si no especificas este parámetro de configuración, Bigtable usa una de las siguientes opciones de configuración predeterminada:

  • Si creas la familia de columnas con el cliente de HBase de Cloud Bigtable para Java o la shell de HBase, o cualquier otra herramienta que utiliza el cliente de HBase para Java, Bigtable retiene solo 1 celda para cada una intersección entre fila y columna en la familia de columnas. Esta configuración predeterminada es coherente con HBase.

  • Si creas la familia de columnas con la consola de Google Cloud, cualquier otra biblioteca cliente o la CLI de cbt , Bigtable retiene una cantidad infinita de celdas en cada columna.

Consulta Configura políticas de recolección de elementos no utilizados para obtener instrucciones detalladas sobre cómo ver, configurar y actualizar las políticas de recolección de elementos no utilizados.

Crea una copia de seguridad de una tabla y restablécela

Consulta Administra copias de seguridad para obtener instrucciones sobre cómo crear una copia de seguridad de una tabla y restablecer desde una copia de seguridad a una tabla nueva.

Si habilitaste la copia de seguridad automática mientras creas una tabla, puedes modificar la configuración de copia de seguridad automática de una tabla para habilitar o inhabilitar la copia de seguridad automática, o cambiar el período de retención a hasta 90 días desde la creación de la copia de seguridad. Para obtener más información, consulta Cómo usar la copia de seguridad automática.

Habilita, inhabilita o configura un flujo de cambios

Para obtener instrucciones sobre las siguientes tareas, consulta Configura un flujo de cambios.

  • Habilita un flujo de cambios en una tabla existente
  • Cómo inhabilitar una transmisión de cambios
  • Actualiza el período de retención de un flujo de cambios

Borra una tabla

Console

  1. Abre la lista de instancias de Bigtable en la consola de Google Cloud.

    Abrir la lista de instancias

  2. Haz clic en la instancia que tiene las tablas deseas ver.

  3. Haz clic en Tablas en el panel izquierdo.

    En la página Tablas, se mostrará una lista de tablas de la instancia.

  4. Haz clic en en la tabla que deseas borrar.

  5. Haz clic en Borrar.

  6. Para confirmar que entiendes que esta acción borrará la tabla de todos los clústeres de la instancia y que solo tienes siete días a fin de recuperarla, escribe el ID de la tabla en el cuadro de texto.

  7. Haz clic en Borrar.

gcloud

  1. Para borrar una tabla, ejecuta el comando gcloud bigtable instances Tables delete.

    gcloud bigtable instances tables delete --instance=INSTANCE_ID
    

    Reemplaza lo siguiente:

    • INSTANCE_ID: El ID de la instancia
  2. En la terminal, ingresa y para confirmar la eliminación de la tabla.

cbt

Para borrar una tabla, usa el siguiente comando y reemplaza [TABLE_NAME] por el nombre de la tabla:

cbt deletetable [TABLE_NAME]

Recupera una tabla

Si borras una tabla por accidente, puedes usar el comando bigtable instances tables undelete de la CLI de gcloud para undelete la tabla. No intentes crear primero la tabla borrada de forma manual.

Para recuperar una tabla, ejecuta el siguiente comando en la terminal:

gcloud bigtable instances tables undelete TABLE_ID --instance=INSTANCE_ID

Reemplaza lo siguiente:

  • TABLE_ID: el identificador único de la tabla
  • INSTANCE_ID: El ID de la instancia

Se aplica la siguiente limitación:

  • La capacidad de recuperar una tabla está disponible aproximadamente siete días desde el momento de la eliminación de la tabla.
  • No puedes recuperar una tabla con la consola de Google Cloud, las bibliotecas cliente de Cloud Bigtable ni la CLI de cbt.
  • No puedes recuperar una tabla de una instancia que se borró.
  • No puedes recuperar una tabla que tenga habilitadas las CMEK.
  • Cualquier vinculación de política de IAM detallada que tenga una tabla antes de su eliminación no se restablecerá cuando la tabla se recupere.

De manera opcional, puedes verificar el estado de la operación undelete en los registros de auditoría.

Modificar la protección contra la eliminación

Puedes habilitar o inhabilitar la protección contra la eliminación en una tabla si eres una principal en una función que incluye el permiso bigtable.tables.update, como roles/bigtable.admin. La protección contra la eliminación evita que se elimine la tabla, todas las familias de columnas de la tabla y la instancia que la contiene.

Console

  1. Abre la lista de instancias de Bigtable en la consola de Google Cloud.

    Abrir la lista de instancias

  2. Haz clic en la instancia que tiene las tablas deseas ver.

  3. Haz clic en Tablas en el panel izquierdo.

    En la página Tablas, se mostrará una lista de tablas de la instancia.

  4. Haz clic en junto al ID de la tabla.

  5. Para habilitar la protección contra la eliminación, haz clic en Evitar la eliminación. Para inhabilitar la protección contra la eliminación, haz clic en Habilitar la eliminación. Solo es visible la opción válida.

gcloud

Para habilitar la protección contra la eliminación de una tabla, ejecuta el comando gcloud bigtable instances table update:

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

Para inhabilitar la protección contra la eliminación de una tabla, ejecuta el siguiente comando:

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

Reemplaza lo siguiente:

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

cbt

No puedes usar la CLI de cbt para habilitar o inhabilitar la protección contra la eliminación.