Crear y administrar bases de datos

En esta página se describe cómo crear y gestionar bases de datos de Spanner:

  • Varios métodos para crear una base de datos
  • Modificar las opciones de la base de datos
  • Eliminar una base de datos

Esta página contiene información sobre las bases de datos con dialecto GoogleSQL y con dialecto PostgreSQL. Para saber cómo actualizar un esquema de base de datos, consulta Hacer cambios en el esquema. Para obtener más información sobre cómo crear una instancia, consulta Crear y gestionar instancias. Puede crear una base de datos en una instancia de cualquiera de las siguientes formas:

  • Crear una base de datos: puedes crear una seleccionando el dialecto SQL y definiendo el esquema.
  • Importar tus propios datos: puedes importar un archivo CSV, de volcado de MySQL o de volcado de PostgreSQL en una base de datos nueva o ya creada.
  • Crear una base de datos con datos de muestra: puede rellenar una base de datos con uno de los conjuntos de datos de muestra disponibles para probar las funciones de Spanner.

Crear una base de datos

Puedes crear una base de datos en una instancia que ya tengas. En las bases de datos con dialecto GoogleSQL, puedes definir el esquema de la base de datos en el momento de crearla o después. En las bases de datos con dialecto PostgreSQL, debes definir el esquema después de la creación.

Los esquemas se definen mediante el lenguaje de definición de base de datos, que se documenta en GoogleSQL y PostgreSQL. Consulta los siguientes enlaces para obtener más información sobre cómo crear y actualizar esquemas:

Una vez que hayas creado tu base de datos, puedes proteger las bases de datos importantes para tus aplicaciones y servicios habilitando la protección contra eliminación de bases de datos. Para obtener más información, consulta Evitar la eliminación accidental de bases de datos.

Google Cloud consola

  1. En la Google Cloud consola, ve a la página Instancias de Spanner.

    Ir a instancias de Spanner

  2. Selecciona la instancia en la que quieres crear la base de datos.

  3. Haz clic en Crear base de datos.

  4. Introduce los siguientes valores:

    • Un nombre de base de datos que se mostrará en la Google Cloud consola.
    • El dialecto que se va a usar en esta base de datos.
    • En el caso de las bases de datos con dialecto GoogleSQL, puedes proporcionar un conjunto de instrucciones DDL que definan tu esquema. Usa las plantillas de DDL para rellenar previamente los elementos habituales. Si hay errores en las instrucciones DDL, la consola devuelve un error cuando intentas crear la base de datos. Google Cloud
    • También puedes seleccionar una clave de cifrado gestionada por el cliente para usarla en esta base de datos.
  5. Haz clic en Crear para crear la base de datos.

gcloud

Usa el comando gcloud spanner databases create.

```sh
gcloud spanner databases create DATABASE \
  --instance=INSTANCE \
  [--async] \
  [--database-dialect=DATABASE_DIALECT] \
  [--ddl=DDL] \
  [--ddl-file=DDL_FILE] \
  [--kms-key=KMS_KEY : --kms-keyring=KMS_KEYRING --kms-location=KMS_LOCATION --kms-project=KMS_PROJECT] \
  [GCLOUD_WIDE_FLAG …]
```

Debes seleccionar las siguientes opciones:

DATABASE
ID de la base de datos o identificador completo de la base de datos. Si se especifica el identificador completo, se puede omitir la marca --instance.
--instance=INSTANCE
La instancia de Spanner de la base de datos.

Las siguientes opciones son opcionales:

--async
Devuelve el valor inmediatamente, sin esperar a que se complete la operación en curso.
--database-dialect=DATABASE_DIALECT
El dialecto SQL de la base de datos de Spanner. Debe ser uno de los siguientes: POSTGRESQL o GOOGLE_STANDARD_SQL.
--ddl=DDL
Instrucciones de DDL (lenguaje de definición de datos) separadas por punto y coma que se ejecutarán en la base de datos recién creada. Si hay un error en alguna instrucción, no se crea la base de datos. Esta marca se ignora si se define --ddl_file. No es compatible con bases de datos de dialecto PostgreSQL.
--ddl-file=DDL_FILE
Ruta de un archivo que contiene instrucciones DDL (lenguaje de definición de datos) separadas por punto y coma para ejecutar en la base de datos recién creada. Si hay un error en alguna instrucción, no se crea la base de datos. Si se define --ddl_file, se ignora --ddl. No es compatible con bases de datos de dialecto PostgreSQL.

Si especificas una clave de Cloud Key Management Service para usarla al crear la base de datos, incluye las siguientes opciones:

--kms-key=KMS_KEY
ID de la clave o identificador completo de la clave.

Esta marca debe especificarse si se especifica alguno de los demás argumentos de este grupo. Los demás argumentos se pueden omitir si se proporciona el identificador completo.

--kms-keyring=KMS_KEYRING
ID del llavero de claves de Cloud KMS de la clave.
--kms-location=KMS_LOCATION
Google Cloud ubicación de la clave.
--kms-project=KMS_PROJECT
Google Cloud ID de proyecto de la clave.

Cliente (GoogleSQL)

C++

Para saber cómo instalar y usar la biblioteca de cliente de Spanner, consulta Bibliotecas de cliente de Spanner.

Para autenticarte en Spanner, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

void CreateDatabase(google::cloud::spanner_admin::DatabaseAdminClient client,
                    std::string const& project_id,
                    std::string const& instance_id,
                    std::string const& database_id) {
  google::cloud::spanner::Database database(project_id, instance_id,
                                            database_id);
  google::spanner::admin::database::v1::CreateDatabaseRequest request;
  request.set_parent(database.instance().FullName());
  request.set_create_statement("CREATE DATABASE `" + database.database_id() +
                               "`");
  request.add_extra_statements(R"""(
      CREATE TABLE Singers (
          SingerId   INT64 NOT NULL,
          FirstName  STRING(1024),
          LastName   STRING(1024),
          SingerInfo BYTES(MAX),
          FullName   STRING(2049)
              AS (ARRAY_TO_STRING([FirstName, LastName], " ")) STORED
      ) PRIMARY KEY (SingerId))""");
  request.add_extra_statements(R"""(
      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)""");
  auto db = client.CreateDatabase(request).get();
  if (!db) throw std::move(db).status();
  std::cout << "Database " << db->name() << " created.\n";
}

Go

Para saber cómo instalar y usar la biblioteca de cliente de Spanner, consulta Bibliotecas de cliente de Spanner.

Para autenticarte en Spanner, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

import (
	"context"
	"fmt"
	"io"
	"regexp"

	database "cloud.google.com/go/spanner/admin/database/apiv1"
	adminpb "cloud.google.com/go/spanner/admin/database/apiv1/databasepb"
)

func createDatabase(ctx context.Context, w io.Writer, db string) error {
	matches := regexp.MustCompile("^(.*)/databases/(.*)$").FindStringSubmatch(db)
	if matches == nil || len(matches) != 3 {
		return fmt.Errorf("Invalid database id %s", db)
	}

	adminClient, err := database.NewDatabaseAdminClient(ctx)
	if err != nil {
		return err
	}
	defer adminClient.Close()

	op, err := adminClient.CreateDatabase(ctx, &adminpb.CreateDatabaseRequest{
		Parent:          matches[1],
		CreateStatement: "CREATE DATABASE `" + matches[2] + "`",
		ExtraStatements: []string{
			`CREATE TABLE Singers (
				SingerId   INT64 NOT NULL,
				FirstName  STRING(1024),
				LastName   STRING(1024),
				SingerInfo BYTES(MAX),
				FullName   STRING(2048) AS (
					ARRAY_TO_STRING([FirstName, LastName], " ")
				) STORED
			) PRIMARY KEY (SingerId)`,
			`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`,
		},
	})
	if err != nil {
		return err
	}
	if _, err := op.Wait(ctx); err != nil {
		return err
	}
	fmt.Fprintf(w, "Created database [%s]\n", db)
	return nil
}

Java

Para saber cómo instalar y usar la biblioteca de cliente de Spanner, consulta Bibliotecas de cliente de Spanner.

Para autenticarte en Spanner, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.


import com.google.cloud.spanner.SpannerException;
import com.google.cloud.spanner.SpannerExceptionFactory;
import com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient;
import com.google.common.collect.ImmutableList;
import com.google.spanner.admin.database.v1.CreateDatabaseRequest;
import com.google.spanner.admin.database.v1.Database;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

public class CreateDatabaseWithDefaultLeaderSample {

  static void createDatabaseWithDefaultLeader() throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String instanceName = "projects/my-project/instances/my-instance-id";
    final String databaseId = "my-database-name";
    final String defaultLeader = "my-default-leader";
    createDatabaseWithDefaultLeader(instanceName, databaseId, defaultLeader);
  }

  static void createDatabaseWithDefaultLeader(String instanceName, String databaseId,
      String defaultLeader) throws IOException {
    try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
      Database createdDatabase =
          databaseAdminClient.createDatabaseAsync(
              CreateDatabaseRequest.newBuilder()
                  .setParent(instanceName)
                  .setCreateStatement("CREATE DATABASE `" + databaseId + "`")
                  .addAllExtraStatements(
                      ImmutableList.of("CREATE TABLE Singers ("
                              + "  SingerId   INT64 NOT NULL,"
                              + "  FirstName  STRING(1024),"
                              + "  LastName   STRING(1024),"
                              + "  SingerInfo BYTES(MAX)"
                              + ") PRIMARY KEY (SingerId)",
                          "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",
                          "ALTER DATABASE " + "`" + databaseId + "`"
                              + " SET OPTIONS ( default_leader = '" + defaultLeader + "' )"))
                  .build()).get();
      System.out.println("Created database [" + createdDatabase.getName() + "]");
      System.out.println("\tDefault leader: " + createdDatabase.getDefaultLeader());
    } catch (ExecutionException e) {
      // If the operation failed during execution, expose the cause.
      throw (SpannerException) e.getCause();
    } catch (InterruptedException e) {
      // Throw when a thread is waiting, sleeping, or otherwise occupied,
      // and the thread is interrupted, either before or during the activity.
      throw SpannerExceptionFactory.propagateInterrupt(e);
    }
  }
}

Node.js

Para saber cómo instalar y usar la biblioteca de cliente de Spanner, consulta Bibliotecas de cliente de Spanner.

Para autenticarte en Spanner, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const projectId = 'my-project-id';
// const instanceId = 'my-instance-id';
// const databaseId = 'my-database-id';
// const defaultLeader = 'my-default-leader'; example: 'asia-northeast1'

// Imports the Google Cloud client library
const {Spanner} = require('@google-cloud/spanner');

// creates a client
const spanner = new Spanner({
  projectId: projectId,
});

// Gets a reference to a Cloud Spanner Database Admin Client object
const databaseAdminClient = spanner.getDatabaseAdminClient();

async function createDatabaseWithDefaultLeader() {
  // Create a new database with an extra statement which will alter the
  // database after creation to set the default leader.
  console.log(
    `Creating database ${databaseAdminClient.databasePath(
      projectId,
      instanceId,
      databaseId,
    )}.`,
  );
  const createSingersTableStatement = `
    CREATE TABLE Singers (
      SingerId   INT64 NOT NULL,
      FirstName  STRING(1024),
      LastName   STRING(1024),
      SingerInfo BYTES(MAX)
    ) PRIMARY KEY (SingerId)`;
  const createAlbumsStatement = `
    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`;

  // Default leader is one of the possible values in the leaderOptions field of the
  // instance config of the instance where the database is created.
  const setDefaultLeaderStatement = `
    ALTER DATABASE \`${databaseId}\`
    SET OPTIONS (default_leader = '${defaultLeader}')`;

  const [operation] = await databaseAdminClient.createDatabase({
    createStatement: 'CREATE DATABASE `' + databaseId + '`',
    extraStatements: [
      createSingersTableStatement,
      createAlbumsStatement,
      setDefaultLeaderStatement,
    ],
    parent: databaseAdminClient.instancePath(projectId, instanceId),
  });

  console.log(`Waiting for creation of ${databaseId} to complete...`);
  await operation.promise();
  console.log(
    `Created database ${databaseId} with default leader ${defaultLeader}.`,
  );
}
createDatabaseWithDefaultLeader();

PHP

Para saber cómo instalar y usar la biblioteca de cliente de Spanner, consulta Bibliotecas de cliente de Spanner.

Para autenticarte en Spanner, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

use Google\Cloud\Spanner\Admin\Database\V1\Client\DatabaseAdminClient;
use Google\Cloud\Spanner\Admin\Database\V1\CreateDatabaseRequest;

/**
 * Creates a database and tables for sample data.
 * Example:
 * ```
 * create_database($instanceId, $databaseId);
 * ```
 *
 * @param string $projectId The Google Cloud project ID.
 * @param string $instanceId The Spanner instance ID.
 * @param string $databaseId The Spanner database ID.
 */
function create_database(string $projectId, string $instanceId, string $databaseId): void
{
    $databaseAdminClient = new DatabaseAdminClient();
    $instance = $databaseAdminClient->instanceName($projectId, $instanceId);

    $operation = $databaseAdminClient->createDatabase(
        new CreateDatabaseRequest([
            'parent' => $instance,
            'create_statement' => sprintf('CREATE DATABASE `%s`', $databaseId),
            'extra_statements' => [
                'CREATE TABLE Singers (' .
                'SingerId     INT64 NOT NULL,' .
                'FirstName    STRING(1024),' .
                'LastName     STRING(1024),' .
                'SingerInfo   BYTES(MAX),' .
                'FullName     STRING(2048) AS' .
                '(ARRAY_TO_STRING([FirstName, LastName], " ")) STORED' .
                ') PRIMARY KEY (SingerId)',
                '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'
            ]
        ])
    );

    print('Waiting for operation to complete...' . PHP_EOL);
    $operation->pollUntilComplete();

    printf('Created database %s on instance %s' . PHP_EOL,
        $databaseId, $instanceId);
}

Python

Para saber cómo instalar y usar la biblioteca de cliente de Spanner, consulta Bibliotecas de cliente de Spanner.

Para autenticarte en Spanner, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

def create_database(instance_id, database_id):
    """Creates a database and tables for sample data."""
    from google.cloud.spanner_admin_database_v1.types import spanner_database_admin

    spanner_client = spanner.Client()
    database_admin_api = spanner_client.database_admin_api

    request = spanner_database_admin.CreateDatabaseRequest(
        parent=database_admin_api.instance_path(spanner_client.project, instance_id),
        create_statement=f"CREATE DATABASE `{database_id}`",
        extra_statements=[
            """CREATE TABLE Singers (
            SingerId     INT64 NOT NULL,
            FirstName    STRING(1024),
            LastName     STRING(1024),
            SingerInfo   BYTES(MAX),
            FullName   STRING(2048) AS (
                ARRAY_TO_STRING([FirstName, LastName], " ")
            ) STORED
        ) PRIMARY KEY (SingerId)""",
            """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""",
        ],
    )

    operation = database_admin_api.create_database(request=request)

    print("Waiting for operation to complete...")
    database = operation.result(OPERATION_TIMEOUT_SECONDS)

    print(
        "Created database {} on instance {}".format(
            database.name,
            database_admin_api.instance_path(spanner_client.project, instance_id),
        )
    )

Ruby

Para saber cómo instalar y usar la biblioteca de cliente de Spanner, consulta Bibliotecas de cliente de Spanner.

Para autenticarte en Spanner, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

# project_id  = "Your Google Cloud project ID"
# instance_id = "Your Spanner instance ID"
# database_id = "Your Spanner database ID"

require "google/cloud/spanner"
require "google/cloud/spanner/admin/database"

database_admin_client = Google::Cloud::Spanner::Admin::Database.database_admin

instance_path = database_admin_client.instance_path project: project_id, instance: instance_id

job = database_admin_client.create_database parent: instance_path,
                                            create_statement: "CREATE DATABASE `#{database_id}`",
                                            extra_statements: [
                                              "CREATE TABLE Singers (
      SingerId     INT64 NOT NULL,
      FirstName    STRING(1024),
      LastName     STRING(1024),
      SingerInfo   BYTES(MAX)
    ) PRIMARY KEY (SingerId)",

                                              "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"
                                            ]

puts "Waiting for create database operation to complete"

job.wait_until_done!

puts "Created database #{database_id} on instance #{instance_id}"

Importación de tus propios datos

Puedes importar tus propios datos a una base de datos de Spanner mediante un archivo CSV, un archivo de volcado de MySQL o un archivo de volcado de PostgreSQL. Puedes subir un archivo local mediante Cloud Storage o directamente desde un segmento de Cloud Storage. Subir un archivo local mediante Cloud Storage puede conllevar cargos.

Si decides usar un archivo CSV, también debes subir un archivo JSON independiente que contenga el esquema de la base de datos.

Google Cloud consola

  1. En la Google Cloud consola, ve a la página Instancias de Spanner.

    Ir a instancias de Spanner

  2. Selecciona la instancia en la que quieres crear la base de datos.

  3. Haz clic en Importar mis propios datos.

  4. Introduce los siguientes valores:

    • Selecciona el tipo de archivo.

    • Sube el archivo desde tu ordenador o selecciona una ruta de acceso a un contenedor de Cloud Storage.

    • (Opcional) Si decides usar un archivo CSV, también debes subir un archivo JSON independiente que contenga el esquema de la base de datos. El archivo JSON debe usar la siguiente estructura para definir el esquema:

      {
        "name": "COLUMN_NAME",
        "type": "TYPE",
        "notNull": NOT_NULL_VALUE,
        "primaryKeyOrder": PRIMARY_KEY_ORDER
      }

      Haz los cambios siguientes:

      • COLUMN_NAME: el nombre de la columna de la tabla.

      • TYPE: el tipo de datos de la columna.

      • (Opcional) NOT_NULL_VALUE: indica si la columna puede almacenar valores nulos o no. Los valores válidos son true y false. El valor predeterminado es false.

      • (Opcional): PRIMARY_KEY_ORDER: determina el orden de la clave principal. El valor se define como 0 para una columna de clave no principal. Asigna al valor un número entero; por ejemplo, 1 para una columna de clave principal. Las columnas con números más bajos aparecen antes en una clave principal compuesta.

      De forma predeterminada, el archivo CSV usa una coma como delimitador de campos y una línea nueva como delimitador de líneas. Para obtener más información sobre cómo usar delimitadores personalizados, consulta la referencia de gcloud alpha spanner databases import.

    • Selecciona una base de datos nueva o una que ya tengas como destino.

  5. Haz clic en Importar.

  6. Spanner abre Cloud Shell y rellena un comando que instala la herramienta de migración de Spanner y ejecuta el comando gcloud alpha spanner databases import. Pulsa la tecla ENTER para importar datos a tu base de datos.

Usar un conjunto de datos de muestra

Puedes rellenar nuevas bases de datos en una instancia con conjuntos de datos de ejemplo que te ayuden a explorar las funciones de Spanner, como su modelo relacional, la búsqueda en todo el texto o la búsqueda vectorial.

Google Cloud consola

  1. En la Google Cloud consola, ve a la página Instancias de Spanner.

    Ir a instancias de Spanner

  2. Selecciona la instancia en la que quieres crear la base de datos.

  3. Haz clic en Explorar conjuntos de datos.

  4. Selecciona uno de los siguientes conjuntos de datos:

    • Gráfico de finanzas: usa este conjunto de datos para explorar las funciones de gráfico de Spanner.
    • Banca online: usa este conjunto de datos para descubrir las funciones de búsqueda en todo el texto de Spanner.
    • Videojuegos online: usa este conjunto de datos para descubrir las funciones de base de datos relacional de Spanner.
    • Comercio: usa este conjunto de datos para explorar las funciones de gráfico y de búsqueda en todo el texto de Spanner.
  5. Haz clic en Crear base de datos.

Actualizar el esquema o las opciones de la base de datos

Puedes actualizar el esquema y las opciones de tu base de datos mediante instrucciones DDL.

Por ejemplo, para añadir una columna a una tabla, usa la siguiente instrucción DDL:

GoogleSQL

ALTER TABLE Songwriters ADD COLUMN Publisher STRING(10);

PostgreSQL

ALTER TABLE Songwriters ADD COLUMN Publisher VARCHAR(10);

Para actualizar la versión del optimizador de consultas, usa la siguiente instrucción DDL:

GoogleSQL

ALTER DATABASE Music SET OPTIONS(optimizer_version=null);

PostgreSQL

ALTER DATABASE DB-NAME SET spanner.optimizer_version TO DEFAULT;

Para obtener más información sobre las opciones admitidas, consulta la ALTER DATABASEreferencia de DDL de GoogleSQL o PostgreSQL.

Para obtener información sobre las actualizaciones de esquemas, consulta Hacer actualizaciones de esquemas.

Google Cloud consola

  1. En la Google Cloud consola, ve a la página Instancias de Spanner.

    Ir a instancias de Spanner

  2. Selecciona la instancia que contiene la base de datos que quieres modificar.

  3. Selecciona la base de datos.

  4. Haz clic en Spanner Studio.

  5. Haz clic en Nueva pestaña o usa la pestaña del editor vacía. A continuación, introduce las instrucciones DDL que quieras aplicar.

  6. Haz clic en Ejecutar para aplicar las actualizaciones. Si hay errores en tu DDL, la consola devuelve un error y la base de datos no se modifica. Google Cloud

gcloud

Para modificar una base de datos con la herramienta de línea de comandos gcloud, usa gcloud spanner databases ddl update.

gcloud spanner databases ddl update \
(DATABASE : --instance=INSTANCE) \
[--async] \
[--ddl=DDL] \
[--ddl-file=DDL_FILE] \

Consulta la referencia de gcloud para obtener más información sobre las opciones disponibles.

Transfiere las actualizaciones de la base de datos al comando con la marca --ddl o la marca --ddl-file. Si se especifica un archivo DDL, se ignora la marca --ddl.

Consulta la ALTER DATABASEreferencia de DDL de GoogleSQL o PostgreSQL para ver las instrucciones DDL que debes incluir.

DDL

Consulta la ALTER DATABASEreferencia de DDL de GoogleSQL o PostgreSQL para obtener más información.

Consultar el progreso de las operaciones de actualización de esquemas

Google Cloud consola

  1. En el menú de navegación de Spanner, selecciona la pestaña Operaciones. En la página Operaciones se muestra una lista de las operaciones activas en curso.

  2. Busca la operación de esquema en la lista. Si sigue en curso, la barra de progreso de la columna Hora de finalización muestra el porcentaje de la operación que se ha completado, como se muestra en la siguiente imagen:

La barra de progreso muestra un 98%

gcloud

Usa gcloud spanner operations describe para comprobar el progreso de una operación.

  1. Obtén el ID de la operación:

    gcloud spanner operations list --instance=INSTANCE-NAME \
    --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL

    Haz los cambios siguientes:

    • INSTANCE-NAME con el nombre de la instancia de Spanner.
    • DATABASE-NAME con el nombre de la base de datos.
  2. Ejecuta gcloud spanner operations describe:

    gcloud spanner operations describe OPERATION_ID\
    --instance=INSTANCE-NAME \
    --database=DATABASE-NAME

    Haz los cambios siguientes:

    • OPERATION-ID: el ID de la operación que quieres comprobar.
    • INSTANCE-NAME: nombre de la instancia de Spanner.
    • DATABASE-NAME: nombre de la base de datos de Spanner.

    La sección progress de la salida muestra el porcentaje de la operación que se ha completado. 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
    ...

REST v1

  1. Obtén el ID de la operación:

    gcloud spanner operations list --instance=INSTANCE-NAME \
    --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL

    Haz los cambios siguientes:

    • INSTANCE-NAME con el nombre de la instancia de Spanner.
    • DATABASE-NAME con el nombre de la base de datos.
  2. Comprueba el progreso de la operación.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT-ID: el ID del proyecto.
    • INSTANCE-ID: el ID de instancia.
    • DATABASE-ID: el ID de la base de datos.
    • OPERATION-ID: el ID de la operación.

    Método HTTP y URL:

    GET https://spanner.googleapis.com/v1/projects/PROJECT-ID/instances/INSTANCE-ID/databases/DATABASE-ID/operations/OPERATION-ID

    Para enviar tu solicitud, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
    ...
        "progress": [
          {
            "progressPercent": 100,
            "startTime": "2023-05-27T00:52:27.366688Z",
            "endTime": "2023-05-27T00:52:30.184845Z"
          },
          {
            "progressPercent": 100,
            "startTime": "2023-05-27T00:52:30.184845Z",
            "endTime": "2023-05-27T00:52:40.750959Z"
          }
        ],
    ...
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.protobuf.Empty"
      }
    }
    
    

Si la operación tarda demasiado, puedes cancelarla. Para obtener más información, consulta Cancelar una operación de base de datos de larga duración.

Eliminar una base de datos

Si eliminas una base de datos, esta y todos sus datos se eliminarán de forma permanente. La eliminación de la base de datos no se puede deshacer. Si la protección contra la eliminación de bases de datos está habilitada en una base de datos, no podrás eliminarla hasta que deshabilites su protección contra la eliminación.

Las copias de seguridad que ya se hayan creado no se eliminan cuando se elimina una base de datos. Para obtener más información, consulta Crear copias de seguridad y restaurarlas.

Google Cloud consola

  1. En la Google Cloud consola, ve a la página Instancias de Spanner.

    Ir a instancias de Spanner

  2. Selecciona la instancia que contiene la base de datos que quieres eliminar.

  3. Selecciona la base de datos.

  4. Haz clic en Eliminar base de datos. Aparecerá una confirmación.

  5. Escribe el nombre de la base de datos y haz clic en Eliminar.

gcloud

Para eliminar una base de datos con la herramienta de línea de comandos gcloud, usa gcloud spanner databases delete.

gcloud spanner databases delete \
  (DATABASE : --instance=INSTANCE)

Debes seleccionar las siguientes opciones:

DATABASE
ID de la base de datos o identificador completo de la base de datos. Si se proporciona el identificador completo, se debe omitir la marca --instance.
--instance=INSTANCE
La instancia de Spanner de la base de datos.

Para obtener más información, consulta la referencia de gcloud.

DDL

DDL no admite la sintaxis de eliminación de bases de datos.

Siguientes pasos