Crear y actualizar contadores en Bigtable

Consulta cómo crear y actualizar contadores en Bigtable mediante agregaciones, celdas de tabla que agregan valores en el momento de la escritura. En esta guía de inicio rápido se usan la CLI de Google Cloud y la CLI cbt para crear tres contadores:

  • Un contador que mantiene una suma continua.
  • Contador que registra el mínimo de todos los valores añadidos.
  • Un contador que registra el máximo de todos los valores añadidos.

Antes de empezar

  1. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  2. Install the Google Cloud CLI.

  3. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  4. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  5. Después de inicializar gcloud CLI, actualízala e instala los componentes necesarios:

    gcloud components update
    gcloud components install cbt
  6. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  7. Verify that billing is enabled for your Google Cloud project.

  8. Enable the Cloud Bigtable API and Cloud Bigtable Admin API APIs:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable bigtable.googleapis.com bigtableadmin.googleapis.com
  9. Install the Google Cloud CLI.

  10. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  11. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  12. Después de inicializar gcloud CLI, actualízala e instala los componentes necesarios:

    gcloud components update
    gcloud components install cbt
  13. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  14. Verify that billing is enabled for your Google Cloud project.

  15. Enable the Cloud Bigtable API and Cloud Bigtable Admin API APIs:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable bigtable.googleapis.com bigtableadmin.googleapis.com
  16. Ejecuta los siguientes comandos para asegurarte de que gcloud CLI está actualizado e incluye la CLI de cbt:
    gcloud components update
    gcloud components install cbt
  17. Crear una instancia de Bigtable

    1. Usa el bigtable instances create comando para crear una instancia.

      gcloud bigtable instances create counters-quickstart-instance \
          --display-name="Counters quickstart instance" \
          --cluster-config=id="counters-quickstart-cluster",zone="us-east1-c"
      

    Conectarse a la instancia

    1. Configura la CLI de cbt para que use tu proyecto e instancia creando un archivo .cbtrc.

      echo project = PROJECT_ID >> ~/.cbtrc && echo instance = counters-quickstart-instance >> ~/.cbtrc
      

      Sustituye PROJECT_ID por el ID del proyecto que estés usando.

    2. Comprueba que has configurado el archivo .cbtrc correctamente.

      cat ~/.cbtrc
      

      En el terminal se muestra el contenido del archivo .cbtrc, que es similar al siguiente:

      project = PROJECT_ID
      instance = counters-quickstart-instance

      Ahora puedes usar la CLI cbt con tu instancia.

    Crear una tabla con familias de columnas agregadas

    1. Usa el comando cbt createtable para crear una tabla llamada counters_quickstart_table que tenga tres familias de columnas agregadas. Configura cada familia de columnas con un tipo de agregación diferente:

      • La familia de columnas max_family es de tipo Max con un tipo de entrada Integer.
      • La familia de columnas min_family es de tipo Min con un tipo de entrada Integer.
      • La familia de columnas sum_family es de tipo Sum con un tipo de entrada Integer.
      cbt createtable counters_quickstart_table families=sum_family:never:intsum,min_family:never:intmin,max_family:never:intmax
      
    2. Muestra tus familias de columnas ejecutando el comando cbt ls.

      cbt ls counters_quickstart_table
      

      El shell muestra un resultado similar al siguiente:

      Family Name     GC Policy
      -----------     ---------
      max_family      <never>
      min_family      <never>
      sum_family      <never>
      

    Crear contadores en la tabla

    1. Usa el comando cbt addtocell para escribir un valor inicial de 5 en una columna nueva de cada una de las tres familias de columnas. Para ello, usa la clave de fila row-key1 y la marca de tiempo 0. Esta operación crea celdas agregadas, que se usan como contadores.

      cbt addtocell counters_quickstart_table row-key1 sum_family:sum_column=5@0
      cbt addtocell counters_quickstart_table row-key1 min_family:min_column=5@0
      cbt addtocell counters_quickstart_table row-key1 max_family:max_column=5@0
      

    Leer los datos

    1. Para ver los valores del contador como números enteros en lugar de bytes, define un archivo yaml que pueda usar la cbtCLI para dar formato al resultado. Ejecuta lo siguiente:

      echo "families:" > cbtformat.yaml
      echo "  max_family:" >> cbtformat.yaml
      echo "    default_encoding: BigEndian" >> cbtformat.yaml
      echo "    default_type: INT64" >> cbtformat.yaml
      echo "  min_family:" >> cbtformat.yaml
      echo "    default_encoding: BigEndian" >> cbtformat.yaml
      echo "    default_type: INT64" >> cbtformat.yaml
      echo "  sum_family:" >> cbtformat.yaml
      echo "    default_encoding: BigEndian" >> cbtformat.yaml
      echo "    default_type: INT64" >> cbtformat.yaml
      
    2. Comprueba que has configurado el archivo cbtformat.yaml correctamente.

      cat ~/cbtformat.yaml
      

      En el terminal se muestra el contenido del archivo cbtformat.yaml, que es similar al siguiente:

      families:
        max_family:
          default_encoding: BigEndian
          default_type: INT64
        min_family:
          default_encoding: BigEndian
          default_type: INT64
        sum_family:
          default_encoding: BigEndian
          default_type: INT64
      
    3. Usa el comando cbt read para transferir el archivo yaml y leer los datos que has añadido a la tabla. La tabla ahora tiene tres columnas, cada una con un tipo de agregación diferente.

      cbt read counters_quickstart_table format-file=$HOME/cbtformat.yaml
      

      El shell muestra un resultado similar al siguiente. Los valores tienen formato de número entero y las marcas de tiempo están en formato UTC.

      row-key1
        max_family:max_column                    @ 1970/01/01-00:00:00.000000
          5
        min_family:min_column                    @ 1970/01/01-00:00:00.000000
          5
        sum_family:sum_column                    @ 1970/01/01-00:00:00.000000
          5
      

    Actualizar los contadores

    1. Añade el valor 3 a cada columna de la tabla con las mismas marcas de tiempo que usaste al crear las celdas. En cada columna, el valor de la celda se combina con el valor que ya había en función del tipo de agregación de la celda.

      cbt addtocell counters_quickstart_table row-key1 sum_family:sum_column=3@0
      cbt addtocell counters_quickstart_table row-key1 min_family:min_column=3@0
      cbt addtocell counters_quickstart_table row-key1 max_family:max_column=3@0
      
    2. Vuelve a usar el comando cbt read para leer los datos de la tabla. Cada celda contiene ahora un valor agregado.

      cbt read counters_quickstart_table format-file=$HOME/cbtformat.yaml
      

      sum_column contiene la suma de 5 y 3 (8), min_column contiene el mínimo de los dos valores que se le han asignado (3) y max_column contiene el máximo de los dos valores que se le han asignado (5).

      row-key1
          max_family:max_column                    @ 1970/01/01-00:00:00.000000
              5
          min_family:min_column                    @ 1970/01/01-00:00:00.000000
              3
          sum_family:sum_column                    @ 1970/01/01-00:00:00.000000
              8
      
    3. Opcional: Consulta la tabla en la Google Cloud consola con SQL.

      1. En la Google Cloud consola, abre la página Instancias de Bigtable.

        Ir a la lista de instancias

      2. Selecciona counters-quickstart-instance en la lista.

      3. En el menú de navegación, haz clic en Bigtable Studio.

      4. Haz clic en la pestaña Editor.

      5. Pega esta consulta en el editor:

        SELECT * FROM `counters_quickstart_table`
        
      6. Haz clic en Ejecutar. Los resultados de la consulta se muestran en la tabla Resultados y tienen un aspecto similar al siguiente:

      _key max_family min_family sum_family
      row-key1 { "max_column": 5 } { "min_column": 5 } { "sum_column": 8 }

    Limpieza

    Para evitar que se apliquen cargos en tu Google Cloud cuenta por los recursos utilizados en esta página, elimina el Google Cloud proyecto con los recursos.

    1. En la terminal, elimina la tabla counters_quickstart_table:

      cbt deletetable counters_quickstart_table
      
    2. Elimina la instancia:

      cbt deleteinstance counters-quickstart-instance
      
    3. Elimina el archivo .cbtrc:

      rm ~/.cbtrc
      
    4. Elimina el archivo de formato:

      rm ~/cbtformat.yaml
      
    5. Opcional: Revoca las credenciales de gcloud CLI:

      gcloud auth revoke
      

    Siguientes pasos