Créer et gérer des bases de données

Cette page explique comment créer et gérer des bases de données Spanner :

  • Différentes méthodes pour créer une base de données
  • Modifier les options de base de données
  • Supprimer une base de données

Cette page contient des informations sur les bases de données utilisant le dialecte GoogleSQL et celles utilisant le dialecte PostgreSQL. Pour savoir comment mettre à jour un schéma de base de données, consultez Effectuer des mises à jour de schéma. Pour en savoir plus sur la création d'une instance, consultez Créer et gérer des instances. Vous pouvez créer une base de données dans une instance existante de l'une des manières suivantes :

  • Créer une base de données : vous pouvez créer une base de données en sélectionnant le dialecte SQL et en définissant votre schéma.
  • Importer vos propres données : vous pouvez importer un fichier CSV, un fichier de vidage MySQL ou un fichier de vidage PostgreSQL dans une base de données nouvelle ou existante.
  • Créer une base de données avec des exemples de données : vous pouvez remplir une base de données à l'aide de l'un des ensembles de données exemples disponibles pour tester les fonctionnalités de Spanner.

Créer une base de données

Vous pouvez créer une base de données dans une instance existante. Pour les bases de données utilisant le dialecte GoogleSQL, vous pouvez définir le schéma de la base de données au moment de la création de la base de données ou après. Pour les bases de données utilisant le dialecte PostgreSQL, vous devez définir le schéma après la création.

Les schémas sont définis à l'aide du langage de définition de données, qui est documenté pour GoogleSQL et PostgreSQL. Pour en savoir plus sur la création et la mise à jour de schémas, consultez les liens suivants :

Une fois votre base de données créée, vous pouvez protéger celles qui sont importantes pour vos applications et services en activant la protection contre la suppression. Pour en savoir plus, consultez Empêcher la suppression accidentelle d'une base de données.

Console Google Cloud

  1. Dans la console Google Cloud , accédez à la page Instances Spanner.

    Accéder aux instances Spanner

  2. Sélectionnez l'instance dans laquelle créer la base de données.

  3. Cliquez sur Créer une base de données.

  4. Saisissez les valeurs suivantes :

    • Un nom de base de données à afficher dans la console Google Cloud .
    • Dialecte à utiliser pour cette base de données.
    • Pour les bases de données utilisant le dialecte GoogleSQL, vous pouvez éventuellement fournir un ensemble d'instructions LDD qui définissent votre schéma. Utilisez les modèles DDL pour préremplir les éléments courants. Si vos instructions DDL contiennent des erreurs, la console Google Cloud renvoie une erreur lorsque vous essayez de créer la base de données.
    • Vous pouvez également sélectionner une clé de chiffrement gérée par le client à utiliser pour cette base de données.
  5. Cliquez sur Créer pour créer la base de données.

gcloud

Exécutez la commande 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 …]
```

Les options suivantes sont requises :

DATABASE
ID de la base de données ou identifiant complet de la base de données. Si vous spécifiez l'identifiant complet, vous pouvez omettre l'option --instance.
--instance=INSTANCE
Instance Spanner pour la base de données.

Les options suivantes sont facultatives :

--async
 : renvoie immédiatement une réponse, sans attendre la fin de l'opération en cours.
--database-dialect=DATABASE_DIALECT
Dialecte SQL de la base de données Spanner. Doit être l'une des valeurs suivantes : POSTGRESQL ou GOOGLE_STANDARD_SQL.
--ddl=DDL
Instructions LDD (langage de définition de données) séparées par des points-virgules à exécuter dans la base de données nouvellement créée. Si une erreur se produit dans une instruction, la base de données n'est pas créée. Cette option est ignorée si --ddl_file est défini. Non compatible avec les bases de données de dialecte PostgreSQL.
--ddl-file=DDL_FILE
 Chemin d'accès à un fichier contenant des instructions LDD (langage de définition de données) séparées par des points-virgules à exécuter dans la base de données nouvellement créée. Si une erreur se produit dans une instruction, la base de données n'est pas créée. Si --ddl_file est défini, --ddl est ignoré. Non compatible avec les bases de données de dialecte PostgreSQL.

Si vous spécifiez une clé Cloud Key Management Service à utiliser lors de la création de la base de données, incluez les options suivantes :

--kms-key=KMS_KEY
ID de la clé ou identifiant complet de la clé.

Cette option doit être spécifiée si l'un des autres arguments de ce groupe est spécifié. Les autres arguments peuvent être omis si l'identifiant complet est fourni.

--kms-keyring=KMS_KEYRING
ID du trousseau de clés Cloud KMS de la clé.
--kms-location=KMS_LOCATION
Google Cloud emplacement de la clé.
--kms-project=KMS_PROJECT
Google Cloud  : ID du projet pour la clé.

Client (GoogleSQL)

C++

Pour savoir comment installer et utiliser la bibliothèque cliente pour Spanner, consultez la page Bibliothèques clientes Spanner.

Pour vous authentifier auprès de Spanner, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Pour savoir comment installer et utiliser la bibliothèque cliente pour Spanner, consultez la page Bibliothèques clientes Spanner.

Pour vous authentifier auprès de Spanner, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Pour savoir comment installer et utiliser la bibliothèque cliente pour Spanner, consultez la page Bibliothèques clientes Spanner.

Pour vous authentifier auprès de Spanner, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Pour savoir comment installer et utiliser la bibliothèque cliente pour Spanner, consultez la page Bibliothèques clientes Spanner.

Pour vous authentifier auprès de Spanner, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Pour savoir comment installer et utiliser la bibliothèque cliente pour Spanner, consultez la page Bibliothèques clientes Spanner.

Pour vous authentifier auprès de Spanner, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Pour savoir comment installer et utiliser la bibliothèque cliente pour Spanner, consultez la page Bibliothèques clientes Spanner.

Pour vous authentifier auprès de Spanner, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Pour savoir comment installer et utiliser la bibliothèque cliente pour Spanner, consultez la page Bibliothèques clientes Spanner.

Pour vous authentifier auprès de Spanner, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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}"

Importez vos propres données

Vous pouvez importer vos propres données dans une base de données Spanner à l'aide d'un fichier CSV, d'un fichier de vidage MySQL ou d'un fichier de vidage PostgreSQL. Vous pouvez importer un fichier local à l'aide de Cloud Storage ou directement à partir d'un bucket Cloud Storage. L'importation d'un fichier local à l'aide de Cloud Storage peut entraîner des frais.

Si vous choisissez d'utiliser un fichier CSV, vous devez également importer un fichier JSON distinct contenant le schéma de la base de données.

Console Google Cloud

  1. Dans la console Google Cloud , accédez à la page Instances Spanner.

    Accéder aux instances Spanner

  2. Sélectionnez l'instance dans laquelle créer la base de données.

  3. Cliquez sur Importer mes propres données.

  4. Saisissez les valeurs suivantes :

    • Sélectionnez le type de fichier.

    • Importez le fichier depuis votre ordinateur ou sélectionnez un chemin de bucket Cloud Storage vers le fichier.

    • (Facultatif) Si vous choisissez d'utiliser un fichier CSV, vous devez également importer un fichier JSON distinct contenant le schéma de la base de données. Le fichier JSON doit utiliser la structure suivante pour définir le schéma :

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

      Remplacez les éléments suivants :

      • COLUMN_NAME : nom de la colonne dans le tableau.

      • TYPE : type de données de la colonne.

      • (Facultatif) NOT_NULL_VALUE : indique si la colonne peut stocker des valeurs nulles ou non. Les entrées valides sont true ou false. La valeur par défaut est false.

      • (Facultatif) PRIMARY_KEY_ORDER : détermine l'ordre de la clé primaire. Définissez la valeur sur 0 pour une colonne de clé non primaire. Définissez la valeur sur un entier, par exemple 1 pour une colonne de clé primaire. Les colonnes dont le numéro est le plus petit apparaissent en premier dans une clé primaire composée.

      Par défaut, le fichier CSV utilise une virgule comme délimiteur de champ et une nouvelle ligne comme délimiteur de ligne. Pour en savoir plus sur l'utilisation de délimiteurs personnalisés, consultez la documentation de référence sur gcloud alpha spanner databases import.

    • Sélectionnez une base de données existante ou nouvelle comme destination.

  5. Cliquez sur Importer.

  6. Spanner ouvre Cloud Shell et renseigne une commande qui installe l'outil de migration Spanner et exécute la commande gcloud alpha spanner databases import. Appuyez sur la touche ENTER pour importer des données dans votre base de données.x

Utiliser un exemple d'ensemble de données

Vous pouvez remplir de nouvelles bases de données dans une instance existante à partir d'exemples de jeux de données qui vous aident à explorer les fonctionnalités de Spanner, telles que son modèle relationnel, la recherche en texte intégral ou la recherche vectorielle.

Console Google Cloud

  1. Dans la console Google Cloud , accédez à la page Instances Spanner.

    Accéder aux instances Spanner

  2. Sélectionnez l'instance dans laquelle créer la base de données.

  3. Cliquez sur Explorer les ensembles de données.

  4. Sélectionnez l'un des ensembles de données suivants :

    • Graphique financier : utilisez cet ensemble de données pour explorer les fonctionnalités de graphique de Spanner.
    • Banque en ligne : utilisez cet ensemble de données pour explorer les fonctionnalités de recherche en texte intégral de Spanner.
    • Jeux vidéo en ligne : utilisez cet ensemble de données pour explorer les fonctionnalités de base de données relationnelle de Spanner.
    • Vente au détail : utilisez cet ensemble de données pour explorer les fonctionnalités de graphique et de recherche en texte intégral de Spanner.
  5. Cliquez sur Créer une base de données.

Mettre à jour le schéma ou les options de la base de données

Vous pouvez mettre à jour le schéma et les options de votre base de données à l'aide d'instructions LDD.

Par exemple, pour ajouter une colonne à une table, utilisez l'instruction LDD suivante :

GoogleSQL

ALTER TABLE Songwriters ADD COLUMN Publisher STRING(10);

PostgreSQL

ALTER TABLE Songwriters ADD COLUMN Publisher VARCHAR(10);

Pour mettre à jour la version de l'optimiseur de requête, utilisez l'instruction LDD suivante :

GoogleSQL

ALTER DATABASE Music SET OPTIONS(optimizer_version=null);

PostgreSQL

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

Pour en savoir plus sur les options compatibles, consultez la documentation de référence sur le DDL ALTER DATABASE pour GoogleSQL ou PostgreSQL.

Pour en savoir plus sur les mises à jour de schéma, consultez Effectuer des mises à jour de schéma.

Console Google Cloud

  1. Dans la console Google Cloud , accédez à la page Instances Spanner.

    Accéder aux instances Spanner

  2. Sélectionnez l'instance contenant la base de données à modifier.

  3. Sélectionnez la base de données.

  4. Cliquez sur Spanner Studio.

  5. Cliquez sur Nouvel onglet ou utilisez l'onglet d'éditeur vide. Saisissez ensuite les instructions DDL à appliquer.

  6. Cliquez sur Exécuter pour appliquer les mises à jour. Si votre DDL comporte des erreurs, la console Google Cloud renvoie une erreur et la base de données n'est pas modifiée.

gcloud

Pour modifier une base de données à l'aide de l'outil de ligne de commande gcloud, utilisez gcloud spanner databases ddl update.

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

Pour en savoir plus sur les options disponibles, consultez la documentation de référence gcloud.

Transmettez les mises à jour de la base de données à la commande avec l'option --ddl ou --ddl-file. Si un fichier DDL est spécifié, l'indicateur --ddl est ignoré.

Consultez la documentation de référence sur le LDD ALTER DATABASE pour GoogleSQL ou PostgreSQL afin de connaître les instructions LDD à inclure.

LDD

Pour en savoir plus, consultez la documentation de référence sur le LDD ALTER DATABASE pour GoogleSQL ou PostgreSQL.

Vérifier la progression des opérations de mise à jour du schéma

Console Google Cloud

  1. Dans le menu de navigation Spanner, sélectionnez l'onglet Opérations. La page Opérations affiche la liste des opérations en cours.

  2. Recherchez l'opération de schéma dans la liste. Si elle est toujours en cours d'exécution, la barre de progression de la colonne Heure de fin indique le pourcentage d'opération terminée, comme illustré dans l'image suivante :

La barre de progression indique 98 %.

gcloud

Utilisez gcloud spanner operations describe pour vérifier la progression d'une opération.

  1. Obtenez l'ID de l'opération :

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

    Remplacez les éléments suivants :

    • INSTANCE-NAME par le nom de l'instance Spanner.
    • DATABASE-NAME par le nom de la base de données.
  2. Exécutez gcloud spanner operations describe :

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

    Remplacez les éléments suivants :

    • OPERATION-ID : ID de l'opération que vous souhaitez vérifier.
    • INSTANCE-NAME : nom de l'instance Spanner.
    • DATABASE-NAME : nom de la base de données Spanner.

    La section progress de la sortie indique le pourcentage d'achèvement de l'opération. La sortie ressemble à ceci :

    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. Obtenez l'ID de l'opération :

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

    Remplacez les éléments suivants :

    • INSTANCE-NAME par le nom de l'instance Spanner.
    • DATABASE-NAME par le nom de la base de données.
  2. Vérifiez la progression de l'opération.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants :

    • PROJECT-ID : ID du projet.
    • INSTANCE-ID : ID de l'instance.
    • DATABASE-ID : ID de la base de données.
    • OPERATION-ID : ID de l'opération.

    Méthode HTTP et URL :

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

    Pour envoyer votre requête, développez l'une des options suivantes :

    Vous devriez recevoir une réponse JSON de ce type :

    {
    ...
        "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 l'opération prend trop de temps, vous pouvez l'annuler. Pour en savoir plus, consultez Annuler une opération de base de données de longue durée.

Supprimer une base de données

La suppression d'une base de données est définitive. Toutes ses données sont alors supprimées. La suppression d'une base de données est irréversible. Si la protection contre la suppression de la base de données est activée sur une base de données, vous ne pouvez pas la supprimer tant que vous n'avez pas désactivé cette protection.

Les sauvegardes existantes ne sont pas supprimées lorsqu'une base de données est supprimée. Pour en savoir plus, consultez Sauvegarder et restaurer.

Console Google Cloud

  1. Dans la console Google Cloud , accédez à la page Instances Spanner.

    Accéder aux instances Spanner

  2. Sélectionnez l'instance contenant la base de données à supprimer.

  3. Sélectionnez la base de données.

  4. Cliquez sur Supprimer la base de données. Une confirmation s'affiche.

  5. Saisissez le nom de la base de données, puis cliquez sur Supprimer.

gcloud

Pour supprimer une base de données avec l'outil de ligne de commande gcloud, utilisez gcloud spanner databases delete.

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

Les options suivantes sont requises :

DATABASE
ID de la base de données ou identifiant complet de la base de données. Si l'identifiant complet est fourni, l'option --instance doit être omise.
--instance=INSTANCE
Instance Spanner pour la base de données.

Pour en savoir plus, consultez la documentation de référence sur gcloud.

LDD

Le LDD n'est pas compatible avec la syntaxe de suppression de base de données.

Étapes suivantes