Crie e faça a gestão de bases de dados

Esta página descreve como criar e gerir bases de dados do Spanner:

  • Vários métodos para criar uma base de dados
  • Modifique as opções da base de dados
  • Elimine uma base de dados

Esta página tem informações para bases de dados com dialeto GoogleSQL e bases de dados com dialeto PostgreSQL. Para saber como atualizar um esquema da base de dados, consulte o artigo Faça atualizações do esquema. Para mais informações sobre como criar uma instância, consulte o artigo Crie e faça a gestão de instâncias. Pode criar uma base de dados numa instância existente de qualquer uma das seguintes formas:

  • Criar uma base de dados: pode criar uma nova base de dados selecionando o dialeto SQL e definindo o seu esquema.
  • Importe os seus próprios dados: pode importar um ficheiro CSV, de despejo do MySQL ou de despejo do PostgreSQL para uma base de dados nova ou existente.
  • Criar uma base de dados com dados de amostra: pode preencher uma base de dados com um dos conjuntos de dados de amostra disponíveis para experimentar as capacidades do Spanner.

Crie uma base de dados

Pode criar uma nova base de dados numa instância existente. Para bases de dados com dialeto GoogleSQL, pode definir o esquema da base de dados no momento da criação da base de dados ou após a criação da mesma. Para bases de dados com dialeto PostgreSQL, tem de definir o esquema após a criação.

Os esquemas são definidos através da linguagem de definição de base de dados, que está documentada para GoogleSQL e PostgreSQL. Consulte os seguintes links para mais informações sobre como criar e atualizar esquemas:

Depois de criar a base de dados, pode proteger as bases de dados importantes para as suas aplicações e serviços ativando a proteção contra eliminação de bases de dados. Para mais informações, consulte o artigo Impeça a eliminação acidental de bases de dados.

Google Cloud consola

  1. Na Google Cloud consola, aceda à página Instâncias do Spanner.

    Aceda às instâncias do Spanner

  2. Selecione a instância na qual quer criar a base de dados.

  3. Clique em Criar base de dados.

  4. Introduza os seguintes valores:

    • Um nome da base de dados a apresentar na Google Cloud consola.
    • O dialeto a usar para esta base de dados.
    • Para bases de dados com dialeto GoogleSQL, forneça opcionalmente um conjunto de declarações DDL que definam o seu esquema. Use os modelos DDL para pré-preencher elementos comuns. Se existirem erros nas suas declarações DDL, a consola devolve um erro quando tenta criar a base de dados. Google Cloud
    • Opcionalmente, selecione uma chave de encriptação gerida pelo cliente para usar nesta base de dados.
  5. Clique em Criar para criar a base de dados.

gcloud

Use o 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 …]
```

As seguintes opções são obrigatórias:

DATABASE
ID da base de dados ou identificador totalmente qualificado da base de dados. Se especificar o identificador totalmente qualificado, pode omitir a flag --instance.
--instance=INSTANCE
A instância do Spanner para a base de dados.

As seguintes opções são opcionais:

--async
Retorne imediatamente, sem aguardar a conclusão da operação em curso.
--database-dialect=DATABASE_DIALECT
O dialeto de SQL da base de dados do Spanner. Tem de ser um dos seguintes: POSTGRESQL, GOOGLE_STANDARD_SQL.
--ddl=DDL
Declarações DDL (linguagem de definição de dados) separadas por ponto e vírgula a executar na base de dados recém-criada. Se existir um erro em qualquer declaração, a base de dados não é criada. Este sinalizador é ignorado se --ddl_file estiver definido. Não suportado por bases de dados de dialeto PostgreSQL.
--ddl-file=DDL_FILE
Caminho de um ficheiro que contém declarações DDL (linguagem de definição de dados) separadas por ponto e vírgula para executar na base de dados recém-criada. Se existir um erro em qualquer declaração, a base de dados não é criada. Se --ddl_file estiver definido, --ddl é ignorado. Não suportado por bases de dados de dialeto PostgreSQL.

Se estiver a especificar uma chave do Cloud Key Management Service para usar quando criar a base de dados, inclua as seguintes opções:

--kms-key=KMS_KEY
ID da chave ou identificador totalmente qualificado da chave.

Esta flag tem de ser especificada se algum dos outros argumentos neste grupo for especificado. Os outros argumentos podem ser omitidos se o identificador totalmente qualificado for fornecido.

--kms-keyring=KMS_KEYRING
ID do conjunto de chaves do Cloud KMS da chave.
--kms-location=KMS_LOCATION
Google Cloud localização da chave.
--kms-project=KMS_PROJECT
Google Cloud ID do projeto da chave.

Cliente (GoogleSQL)

C++

Para saber como instalar e usar a biblioteca cliente do Spanner, consulte o artigo Bibliotecas cliente do Spanner.

Para se autenticar no Spanner, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento 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 como instalar e usar a biblioteca cliente do Spanner, consulte o artigo Bibliotecas cliente do Spanner.

Para se autenticar no Spanner, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento 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 como instalar e usar a biblioteca cliente do Spanner, consulte o artigo Bibliotecas cliente do Spanner.

Para se autenticar no Spanner, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento 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 como instalar e usar a biblioteca cliente do Spanner, consulte o artigo Bibliotecas cliente do Spanner.

Para se autenticar no Spanner, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento 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 como instalar e usar a biblioteca cliente do Spanner, consulte o artigo Bibliotecas cliente do Spanner.

Para se autenticar no Spanner, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento 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 como instalar e usar a biblioteca cliente do Spanner, consulte o artigo Bibliotecas cliente do Spanner.

Para se autenticar no Spanner, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento 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 como instalar e usar a biblioteca cliente do Spanner, consulte o artigo Bibliotecas cliente do Spanner.

Para se autenticar no Spanner, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento 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}"

Importe os seus próprios dados

Pode importar os seus próprios dados para uma base de dados do Spanner através de um ficheiro CSV, um ficheiro de despejo do MySQL ou um ficheiro de despejo do PostgreSQL. Pode carregar um ficheiro local através do Cloud Storage ou diretamente a partir de um contentor do Cloud Storage. O carregamento de um ficheiro local através do Cloud Storage pode incorrer em custos.

Se optar por usar um ficheiro CSV, também tem de carregar um ficheiro JSON separado que contenha o esquema da base de dados.

Google Cloud consola

  1. Na Google Cloud consola, aceda à página Instâncias do Spanner.

    Aceda às instâncias do Spanner

  2. Selecione a instância na qual quer criar a base de dados.

  3. Clique em Importar os meus próprios dados.

  4. Introduza os seguintes valores:

    • Selecione o Tipo de ficheiro.

    • Carregue o ficheiro a partir do computador ou selecione um caminho do bucket do Cloud Storage para o ficheiro.

    • (Opcional) Se optar por usar um ficheiro CSV, também tem de carregar um ficheiro JSON separado que contenha o esquema da base de dados. O ficheiro JSON tem de usar a seguinte estrutura para definir o esquema:

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

      Substitua o seguinte:

      • COLUMN_NAME: o nome da coluna na tabela.

      • TYPE: o tipo de dados da coluna.

      • (Opcional) NOT_NULL_VALUE: indica se a coluna pode ou não armazenar valores nulos. As entradas válidas são true ou false. A predefinição é false.

      • (Opcional): PRIMARY_KEY_ORDER: determina a ordem da chave principal. O valor é definido como 0 para uma coluna de chave não principal. Defina o valor como um número inteiro, por exemplo, 1 para uma coluna de chave principal. As colunas com números mais baixos aparecem mais cedo numa chave principal composta.

      Por predefinição, o ficheiro CSV espera uma vírgula para o delimitador de campo e uma nova linha para o delimitador de linha. Para mais informações sobre a utilização de delimitadores personalizados, consulte a referência gcloud alpha spanner databases import.

    • Selecione uma base de dados nova ou existente como destino.

  5. Clique em Importar.

  6. O Spanner abre o Cloud Shell e preenche um comando que instala a ferramenta de migração do Spanner e executa o comando gcloud alpha spanner databases import. Prima a tecla ENTER para importar dados para a sua base de dados.

Use um conjunto de dados de exemplo

Pode preencher novas bases de dados numa instância existente a partir de conjuntos de dados de exemplo que ajudam a explorar as capacidades do Spanner, como o respetivo modelo relacional, a pesquisa de texto completo ou a pesquisa vetorial.

Google Cloud consola

  1. Na Google Cloud consola, aceda à página Instâncias do Spanner.

    Aceda às instâncias do Spanner

  2. Selecione a instância na qual quer criar a base de dados.

  3. Clique em Explorar conjuntos de dados.

  4. Selecione um dos seguintes conjuntos de dados:

    • Gráfico de finanças: use este conjunto de dados para explorar as funcionalidades de grafos do Spanner.
    • Serviços bancários online: use este conjunto de dados para explorar as funcionalidades de pesquisa de texto completo do Spanner.
    • Jogos online: use este conjunto de dados para explorar as funcionalidades da base de dados relacional do Spanner.
    • Retalho: use este conjunto de dados para explorar as funcionalidades de grafos e de pesquisa de texto completo do Spanner.
  5. Clique em Criar base de dados.

Atualize o esquema ou as opções da base de dados

Pode atualizar o esquema e as opções da base de dados através de declarações DDL.

Por exemplo, para adicionar uma coluna a uma tabela, use a seguinte declaração LDD:

GoogleSQL

ALTER TABLE Songwriters ADD COLUMN Publisher STRING(10);

PostgreSQL

ALTER TABLE Songwriters ADD COLUMN Publisher VARCHAR(10);

Para atualizar a versão do otimizador de consultas, use a seguinte declaração LDD:

GoogleSQL

ALTER DATABASE Music SET OPTIONS(optimizer_version=null);

PostgreSQL

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

Para mais informações sobre as opções suportadas, consulte a referência ALTER DATABASEDDL para o GoogleSQL ou o PostgreSQL.

Para obter informações sobre atualizações de esquemas, consulte o artigo Faça atualizações de esquemas.

Google Cloud consola

  1. Na Google Cloud consola, aceda à página Instâncias do Spanner.

    Aceda às instâncias do Spanner

  2. Selecione a instância que contém a base de dados a alterar.

  3. Selecione a base de dados.

  4. Clique em Spanner Studio.

  5. Clique em Novo separador ou use o separador do editor vazio. Em seguida, introduza as declarações DDL a aplicar.

  6. Clique em Executar para aplicar as atualizações. Se existirem erros no DDL, a Google Cloud consola devolve um erro e a base de dados não é alterada.

gcloud

Para alterar uma base de dados com a ferramenta de linha de comandos gcloud, use gcloud spanner databases ddl update.

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

Consulte a referência gcloud para ver detalhes sobre as opções disponíveis.

Transmita as atualizações da base de dados para o comando com a flag --ddl ou a flag --ddl-file. Se for especificado um ficheiro DDL, a flag --ddl é ignorada.

Consulte a ALTER DATABASEreferência DDL para GoogleSQL ou PostgreSQL para as declarações DDL a incluir.

LDD

Consulte a ALTER DATABASEreferência DDL para GoogleSQL ou PostgreSQL para obter detalhes.

Verifique o progresso das operações de atualização do esquema

Google Cloud consola

  1. No menu de navegação do Spanner, selecione o separador Operações. A página Operações mostra uma lista de operações em execução ativas.

  2. Encontre a operação de esquema na lista. Se ainda estiver em execução, a barra de progresso na coluna Hora de fim mostra a percentagem da operação que está concluída, conforme apresentado na imagem seguinte:

A barra de progresso mostra 98%

gcloud

Use gcloud spanner operations describe para verificar o progresso de uma operação.

  1. Obtenha o ID da operação:

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

    Substitua o seguinte:

    • INSTANCE-NAME com o nome da instância do Spanner.
    • DATABASE-NAME com o nome da base de dados.
  2. Corrida gcloud spanner operations describe:

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

    Substitua o seguinte:

    • OPERATION-ID: o ID da operação que quer verificar.
    • INSTANCE-NAME: o nome da instância do Spanner.
    • DATABASE-NAME: o nome da base de dados do Spanner.

    A secção progress na saída mostra a percentagem da operação concluída. O resultado tem um aspeto semelhante ao seguinte:

    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. Obtenha o ID da operação:

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

    Substitua o seguinte:

    • INSTANCE-NAME com o nome da instância do Spanner.
    • DATABASE-NAME com o nome da base de dados.
  2. Verifique o progresso da operação.

    Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

    • PROJECT-ID: o ID do projeto.
    • INSTANCE-ID: o ID da instância.
    • DATABASE-ID: o ID da base de dados.
    • OPERATION-ID: o ID da operação.

    Método HTTP e URL:

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

    Para enviar o seu pedido, expanda uma destas opções:

    Deve receber uma resposta JSON semelhante à seguinte:

    {
    ...
        "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"
      }
    }
    
    

Se a operação demorar demasiado tempo, pode cancelá-la. Para mais informações, consulte o artigo Cancele uma operação de base de dados de execução prolongada.

Elimine uma base de dados

A eliminação de uma base de dados remove permanentemente a base de dados e todos os respetivos dados. Não é possível anular a eliminação da base de dados. Se a proteção contra eliminação de bases de dados estiver ativada numa base de dados, não pode eliminar essa base de dados até desativar a respetiva proteção contra eliminação.

As cópias de segurança existentes não são eliminadas quando uma base de dados é eliminada. Para mais informações, consulte o artigo Cópia de segurança e restauro.

Google Cloud consola

  1. Na Google Cloud consola, aceda à página Instâncias do Spanner.

    Aceda às instâncias do Spanner

  2. Selecione a instância que contém a base de dados a eliminar.

  3. Selecione a base de dados.

  4. Clique em Eliminar base de dados. É apresentada uma confirmação.

  5. Escreva o nome da base de dados e clique em Eliminar.

gcloud

Para eliminar uma base de dados com a ferramenta de linha de comandos gcloud, use gcloud spanner databases delete.

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

As seguintes opções são obrigatórias:

DATABASE
ID da base de dados ou identificador totalmente qualificado da base de dados. Se o identificador totalmente qualificado for fornecido, a flag --instance deve ser omitida.
--instance=INSTANCE
A instância do Spanner para a base de dados.

Para mais detalhes, consulte a gcloud referência.

LDD

O DDL não suporta a sintaxe de eliminação da base de dados.

O que se segue?