Objetivos
En este instructivo, se explican los siguientes pasos con la CLI de gcloud:
- Crea una instancia, una base de datos y un esquema de Spanner
- Escribe datos en la base de datos y ejecutar consultas de SQL
- Limpia la base de datos y la instancia
Los procedimientos de esta página se aplican a las bases de datos de dialecto de GoogleSQL y a las de dialecto de PostgreSQL.
Para obtener la referencia completa de gcloud
de Spanner, consulta gcloud.
Precios
En este instructivo, se usa Spanner, que es un componente facturable deGoogle Cloud. Para obtener información sobre el costo de usar Spanner, consulta Precios.
Antes de comenzar
Completa los pasos que se describen en Instala gcloud CLI y configura la API de Cloud Spanner, que abarca la creación y configuración de un proyecto de Google Cloud predeterminado, la facturación, la habilitación de la API de Cloud Spanner y la configuración de OAuth 2.0 para obtener credenciales de autenticación para usar la API de Cloud Spanner.
En particular, asegúrate de ejecutar gcloud auth application-default
login
para configurar tu entorno de desarrollo local con credenciales de autenticación.
Configura un proyecto predeterminado
Si aún no lo hiciste, establece el ID de un proyecto de Google Cloud como el proyecto predeterminado para Google Cloud CLI:
gcloud config set project PROJECT_ID
Si no configuras el proyecto predeterminado, debes pasar --project
PROJECT_ID
a cada uno de los siguientes comandos como el primer argumento para gcloud
. Por ejemplo:
gcloud --project=PROJECT_ID instance-configs list
Instancias
Cuando uses Spanner por primera vez, deberás crear una instancia, que es una asignación de recursos que usan las bases de datos de Spanner. Cuando creas una instancia, eliges dónde se almacenan tus datos y cuánta capacidad de procesamiento tiene la instancia.
Instancias y configuraciones de instancias
Para crear una instancia, debes seleccionar una configuración de instancia, que es como un modelo para tu instancia que define la ubicación geográfica y la replicación de tus datos de Spanner.
Muestra configuraciones de instancias
Cuando creas una instancia, especificas una configuración de instancia, que define la ubicación geográfica y la replicación de las bases de datos en esa instancia. Puedes elegir una configuración regional, que almacena datos en una región, una configuración de región doble, que almacena datos en dos regiones del mismo país, o una configuración multirregional, que distribuye los datos en varias regiones. Para obtener más información, consulta la Descripción general de las instancias.
A fin de ver el conjunto de configuraciones de instancias disponibles para tu proyecto, sigue estos pasos:
gcloud instance-configs list
Deberías ver una lista de configuraciones regionales, birregionales y multirregionales.
Crea una instancia
Para crear una instancia llamada test-instance
con el nombre comercial My Instance
mediante la configuración de instancia regional regional-us-central1
con 1 nodo, sigue estos pasos:
gcloud instances create test-instance --config=regional-us-central1 \ --description="My Instance" --nodes=1
En el comando anterior, el nombre de la instancia se configura como test-instance
y --description
establece el nombre comercial de la instancia. Ambos valores deben ser únicos dentro de un proyecto de Google Cloud Platform.
Establece la instancia predeterminada
Puedes establecer la instancia predeterminada que usará Spanner cuando no hayas especificado una instancia en tu comando. Para configurar la instancia predeterminada, sigue estos pasos:
gcloud config set spanner/instance test-instance
Crea una base de datos
Crea una base de datos con el nombre example-db
. El dialecto de la base de datos se establece de forma predeterminada en GoogleSQL.
GoogleSQL
gcloud databases create example-db
PostgreSQL
gcloud databases create example-db --database-dialect=POSTGRESQL
Actualiza el esquema
Usa el lenguaje de definición de datos (DDL) de Spanner para crear, modificar o quitar tablas, y crear o quitar índices.
Crear dos tablas:
GoogleSQL
gcloud databases ddl update example-db \ --ddl='CREATE TABLE Singers ( SingerId INT64 NOT NULL, FirstName STRING(1024), LastName STRING(1024), SingerInfo BYTES(MAX) ) PRIMARY KEY (SingerId)' gcloud databases ddl update example-db \ --ddl='CREATE TABLE Albums ( SingerId INT64 NOT NULL, AlbumId INT64 NOT NULL, AlbumTitle STRING(MAX)) PRIMARY KEY (SingerId, AlbumId), INTERLEAVE IN PARENT Singers ON DELETE CASCADE'
PostgreSQL
gcloud databases ddl update example-db \ --ddl='CREATE TABLE Singers ( SingerId bigint NOT NULL, FirstName varchar(1024), LastName varchar(1024), SingerInfo bytea, PRIMARY KEY (SingerId) )' gcloud databases ddl update example-db \ --ddl='CREATE TABLE Albums ( SingerId bigint NOT NULL, AlbumId bigint NOT NULL, AlbumTitle varchar, PRIMARY KEY (SingerId, AlbumId) ) INTERLEAVE IN PARENT Singers ON DELETE CASCADE'
Para verificar el progreso de la operación, usa gcloud operations describe
.
Este comando requiere el ID de la operación.
Obtén el ID de operación:
gcloud operations list --instance="test-instance" \ --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
Reemplaza DATABASE-NAME por el nombre de la base de datos.
Ejecuta gcloud operations describe
:
gcloud operations describe \ --instance="test-instance" \ --database="example-db" \ projects/PROJECT-NAME/instances/test-instance/databases/example-db/operations/OPERATION-ID
Reemplaza lo siguiente:
- PROJECT-NAME: Es el nombre del proyecto.
- OPERATION-ID: Es el ID de la operación que deseas verificar.
El resultado es similar al siguiente:
done: true metadata: ... progress: - endTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 startTime: '2022-03-01T00:28:04.221401Z' - endTime: '2022-03-01T00:28:17.624588Z' startTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 ...
Escribir datos
Agrega algunos datos de muestra a la base de datos
GoogleSQL
gcloud rows insert --database=example-db \ --table=Singers \ --data=SingerId=1,FirstName=Marc,LastName=Richards gcloud rows insert --database=example-db \ --table=Singers \ --data=SingerId=2,FirstName=Catalina,LastName=Smith gcloud rows insert --database=example-db \ --table=Singers \ --data=SingerId=3,FirstName=Alice,LastName=Trentor gcloud rows insert --database=example-db \ --table=Albums \ --data=SingerId=1,AlbumId=1,AlbumTitle="Total Junk" gcloud rows insert --database=example-db \ --table=Albums \ --data=SingerId=2,AlbumId=1,AlbumTitle="Green" gcloud rows insert --database=example-db \ --table=Albums \ --data=^:^SingerId=2:AlbumId=2:AlbumTitle="Go, Go, Go"
De forma predeterminada, se usa una coma para delimitar los elementos de las listas. En el último comando insert, especificamos un dos puntos (^:^
) como delimitador para poder usar una coma en el título del álbum.
PostgreSQL
gcloud databases execute-sql example-db \ --sql="INSERT INTO Singers (SingerId, FirstName, LastName) VALUES (1, 'Marc', 'Richards')" gcloud databases execute-sql example-db \ --sql="INSERT INTO Singers (SingerId, FirstName, LastName) VALUES (2, 'Catalina', 'Smith')" gcloud databases execute-sql example-db \ --sql="INSERT INTO Singers (SingerId, FirstName, LastName) VALUES (3, 'Alice', 'Trentor')" gcloud databases execute-sql example-db \ --sql="INSERT INTO Albums (SingerId, AlbumId, AlbumTitle) VALUES (1, 1, 'Total Junk')" gcloud databases execute-sql example-db \ --sql="INSERT INTO Albums (SingerId, AlbumId, AlbumTitle) VALUES (2, 1, 'Green')" gcloud databases execute-sql example-db \ --sql="INSERT INTO Albums (SingerId, AlbumId, AlbumTitle) VALUES (2, 2, 'Go, Go, Go')"
Consulta datos mediante SQL
Ejecuta una consulta en la línea de comandos:
gcloud databases execute-sql example-db \ --sql='SELECT SingerId, AlbumId, AlbumTitle FROM Albums'
Para consultar la referencia de SQL de Spanner, consulta Sintaxis de consulta de GoogleSQL o Sintaxis de consulta de PostgreSQL.
Para ver una lista de marcas que puedes usar con el comando execute-sql
, consulta gcloud databases execute-sql.
Limpieza
Para evitar que se apliquen cargos adicionales a tu cuenta de Google Cloud por los recursos que se usaron en este instructivo, descarta la base de datos y borra la instancia que creaste.
Desconectar una base de datos
Para borrar una instancia existente, sigue estos pasos:
gcloud databases delete example-db
Borra una instancia
Para borrar una instancia existente, sigue estos pasos:
gcloud instances delete test-instance
Ten en cuenta que la eliminación de una instancia también descarta todas las bases de datos de esa instancia. La eliminación de una instancia no es reversible.