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

Cette page explique comment créer et gérer des emplacements de données dans Spanner.

Pour en savoir plus sur le fonctionnement du partitionnement géographique, consultez la présentation du partitionnement géographique.

Créer un emplacement de données

Après avoir créé vos partitions d'instance Spanner et vos bases de données, créez votre emplacement.

Console

  1. Accédez à la page Instances dans la console Google Cloud .

    Instances

  2. Sélectionnez l'instance avec une ou plusieurs partitions d'instance créées par l'utilisateur.

  3. Sélectionnez la base de données dans laquelle vous souhaitez partitionner les données.

  4. Dans le menu de navigation, cliquez sur Spanner Studio.

  5. Sur la page Spanner Studio, cliquez sur Nouvel onglet ou utilisez l'onglet d'éditeur vide.

  6. Saisissez l'instruction LDD CREATE PLACEMENT (GoogleSQL, PostgreSQL).

    Par exemple, vous pouvez exécuter la commande suivante pour créer une table d'emplacements europeplacement dans la partition d'instance europe-partition :

    GoogleSQL

    CREATE PLACEMENT europeplacement OPTIONS (instance_partition="europe-partition");
    

    PostgreSQL

    CREATE PLACEMENT europeplacement WITH (instance_partition='europe-partition');
    

    Facultatif : Vous pouvez également utiliser le volet Explorateur d'objets pour afficher vos objets d'emplacement, effectuer des recherches et interagir avec eux. Pour en savoir plus, consultez Explorer vos données.

  7. Cliquez sur Exécuter.

gcloud

Pour créer un emplacement avec la commande gcloud CLI, utilisez gcloud spanner databases ddl update.

Par exemple, créez un emplacement dans la partition d'instance europe-partition :

GoogleSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE PLACEMENT europeplacement OPTIONS (instance_partition='europe-partition')"

PostgreSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE PLACEMENT europeplacement WITH (instance_partition='europe-partition')"

Définir le leader par défaut pour un emplacement

Vous pouvez définir la région principale par défaut d'un emplacement si celui-ci se trouve dans une région double ou multirégionale. La nouvelle région principale doit être l'une des deux régions en lecture/écriture dans l'emplacement birégional ou multirégional. Pour en savoir plus, consultez les tableaux Configurations birégionales disponibles et Configurations multirégionales disponibles.

Si vous ne définissez pas de région principale, votre emplacement utilise la région principale par défaut spécifiée par son emplacement. Pour obtenir la liste des régions principales pour chaque emplacement birégional ou multirégional, consultez les tableaux Configurations birégionales disponibles et Configurations multirégionales disponibles. La région principale par défaut est indiquée par la lettre L. Par exemple, la région leader par défaut de nam8 se trouve à Los Angeles(us-west2). Les instructions suivantes expliquent comment la définir sur l'Oregon(us-west1).

Console

  1. Accédez à la page Instances dans la console Google Cloud .

    Instances

  2. Sélectionnez l'instance avec une ou plusieurs partitions d'instance créées par l'utilisateur.

  3. Sélectionnez la base de données dans laquelle vous souhaitez partitionner les données.

  4. Dans le menu de navigation, cliquez sur Spanner Studio.

  5. Sur la page Spanner Studio, cliquez sur Nouvel onglet ou utilisez l'onglet d'éditeur vide.

  6. Saisissez l'instruction LDD CREATE PLACEMENT (GoogleSQL, PostgreSQL).

    Par exemple, vous pouvez exécuter la commande suivante pour créer une table d'emplacements nam8placement dans la partition d'instance nam8-partition avec l'emplacement du leader par défaut défini sur us-west1 :

    GoogleSQL

    CREATE PLACEMENT `nam8placement`
      OPTIONS (instance_partition="nam8-partition", default_leader="us-west1");
    

    PostgreSQL

    CREATE PLACEMENT nam8placement WITH (instance_partition='nam8-partition', default_leader='us-west1');
    

    Facultatif : Vous pouvez également utiliser le volet Explorateur d'objets pour afficher vos objets d'emplacement, effectuer des recherches et interagir avec eux. Pour en savoir plus, consultez Explorer vos données.

  7. Cliquez sur Exécuter.

gcloud

Pour créer un emplacement avec la commande gcloud CLI, utilisez gcloud spanner databases ddl update.

Par exemple, créez une table d'emplacements nam8placement dans la partition d'instance nam8-partition avec l'emplacement du leader par défaut défini sur us-west1 :

GoogleSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE PLACEMENT nam8placement \
     OPTIONS (instance_partition='nam8-partition', default_leader='us-west1')"

PostgreSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE PLACEMENT nam8placement WITH (instance_partition='nam8-partition', default_leader='us-west1')"

Supprimer un emplacement de données

Avant de supprimer un emplacement, vous devez supprimer toutes les données de ligne de l'emplacement. Une fois cette opération effectuée, vous pouvez utiliser la console Google Cloud ou gcloud CLI pour supprimer l'emplacement.

Console

  1. Dans le menu de navigation, cliquez sur Spanner Studio.
  2. Sur la page Spanner Studio, cliquez sur Nouvel onglet ou utilisez l'onglet d'éditeur vide.
  3. Saisissez l'instruction LDD DROP PLACEMENT(GoogleSQL, PostgreSQL).

    Par exemple, vous pouvez exécuter la commande suivante pour supprimer la table des emplacements europeplacement :

    GoogleSQL

    DROP PLACEMENT europeplacement;
    

    PostgreSQL

    DROP PLACEMENT europeplacement;
    

gcloud

Pour supprimer un emplacement avec la commande gcloud CLI, utilisez gcloud spanner databases ddl update.

Par exemple, emplacement de dépôt europeplacement :

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="DROP PLACEMENT europeplacement"

Erreurs de placement de drops

Si l'emplacement est utilisé, l'opération DROP PLACEMENT échoue et affiche un message d'erreur tel que "Échec de l'instruction : l'emplacement PLACEMENT_NAME ne peut pas être supprimé, car il est utilisé par la table d'emplacement PLACEMENT_TABLE_NAME.". Si vous rencontrez cette erreur, procédez comme suit :

  1. Modifiez votre application pour qu'elle cesse d'insérer ou de mettre à jour des lignes avec l'emplacement que vous souhaitez supprimer.
  2. L'une des options ci-dessous :

    • Déplacez les lignes d'emplacement existantes qui utilisent l'emplacement que vous souhaitez supprimer vers un autre emplacement à l'aide d'une instruction LMD partitionnée comme celle-ci :

      UPDATE PLACEMENT_TABLE_NAME SET LOCATION = NEW_PLACEMENT_NAME
      WHERE LOCATION = ORIGINAL_PLACEMENT_NAME;
      
    • Supprimez les lignes d'emplacement à l'aide d'une instruction LMD partitionnée comme suit :

      DELETE FROM PLACEMENT_TABLE_NAME
      WHERE LOCATION = ORIGINAL_PLACEMENT_NAME;
      

      Les instructions LMD spécifiques aux emplacements précédentes ne fonctionnent qu'avec le LMD partitionné. Elles échoueront comme des instructions LMD standards. Pour en savoir plus, consultez la section Limites. Vous pouvez également utiliser l'API de mutation pour déplacer ou supprimer des lignes d'emplacements.

Annuler une opération DROP PLACEMENT

Vous pouvez annuler une opération DROP PLACEMENT à tout moment avant que l'opération de longue durée ne supprime complètement l'emplacement du schéma de base de données. Pour savoir comment obtenir l'ID d'opération de longue durée afin de vérifier son état ou de l'annuler, consultez Gérer et observer les opérations de longue durée.

Créer une table avec une clé d'emplacement

Console

  1. Dans le menu de navigation, cliquez sur Spanner Studio.
  2. Sur la page Spanner Studio, cliquez sur Nouvel onglet ou utilisez l'onglet d'éditeur vide.
  3. Saisissez l'instruction LDD CREATE TABLE (GoogleSQL, PostgreSQL).

    Par exemple, vous pouvez créer une table Singers qui utilise une clé d'emplacement pour partitionner les données des chanteurs :

    GoogleSQL

    CREATE TABLE Singers (
      SingerId INT64 NOT NULL,
      SingerName STRING(MAX) NOT NULL,
      ...
      Location STRING(MAX) NOT NULL PLACEMENT KEY
    ) PRIMARY KEY (SingerId);
    

    PostgreSQL

    CREATE TABLE Singers (
      SingerId bigint PRIMARY KEY,
      SingerName varchar(1024),
      ...
      Location varchar(1024) NOT NULL PLACEMENT KEY
    );
    

gcloud

Pour créer une table, utilisez gcloud spanner databases ddl update.

Par exemple, vous pouvez créer une table Singers qui utilise une clé d'emplacement pour partitionner les données des chanteurs :

GoogleSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE TABLE Singers ( SingerId INT64 NOT NULL, SingerName STRING(MAX) NOT NULL, Location STRING(MAX) NOT NULL PLACEMENT KEY ) PRIMARY KEY (SingerId);"

PostgreSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE TABLE Singers ( SingerId bigint PRIMARY KEY, SingerName varchar(1024), Location varchar(1024) NOT NULL PLACEMENT KEY );"

Modifier un tableau avec une clé d'emplacement

Vous ne pouvez pas supprimer une clé d'emplacement d'une table. Vous ne pouvez pas non plus ajouter de clé d'emplacement à une table après sa création. Toutefois, vous pouvez utiliser l'instruction LDD ALTER TABLE (GoogleSQL, PostgreSQL) pour modifier d'autres champs du tableau, par exemple en ajoutant et en supprimant des colonnes de clés non liées à l'emplacement.

Supprimer une table avec une clé d'emplacement

Avant de supprimer une table avec une clé d'emplacement, vous devez d'abord :

  1. Supprimez toutes les lignes du tableau des emplacements.
  2. Attendez que le version_retention_period de la base de données soit réussi. Pour en savoir plus, consultez Récupération à un moment précis. Ensuite, procédez comme suit :

Console

  1. Dans le menu de navigation, cliquez sur Spanner Studio.
  2. Sur la page Spanner Studio, cliquez sur Nouvel onglet ou utilisez l'onglet d'éditeur vide.
  3. Saisissez l'instruction LDD DROP TABLE (GoogleSQL, PostgreSQL).

    Par exemple, supprimez la table Singers :

    DROP TABLE Singers;
    

gcloud

Pour supprimer une table, utilisez gcloud spanner databases ddl update.

Par exemple, supprimez la table Singers :

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="DROP TABLE Singers"

Insérer une ligne dans un tableau d'emplacements

Console

  1. Dans le menu de navigation, cliquez sur Spanner Studio.
  2. Sur la page Spanner Studio, cliquez sur Nouvel onglet ou utilisez l'onglet d'éditeur vide.
  3. Saisissez l'instruction LDD INSERT INTO (GoogleSQL, PostgreSQL).

    Par exemple, ajoutez un chanteur, Marc Richards, à la table Singers et partitionnez-la dans europeplacement :

    INSERT INTO Singers(SingerId, SingerName, Location)
    VALUES (1, 'Marc Richards', 'europeplacement')
    

gcloud

Pour écrire des données dans une table, utilisez gcloud spanner rows insert.

Par exemple, ajoutez un chanteur, Marc Richards, à la table Singers et partitionnez-la dans europeplacement :

gcloud spanner rows insert --table=Singers --database=example-db \
  --instance=test-instance --data=SingerId=1,SingerName='Marc Richards',Location='europeplacement'

Mettre à jour une ligne dans un tableau d'emplacements

Console

  1. Dans le menu de navigation, cliquez sur Spanner Studio.
  2. Sur la page Spanner Studio, cliquez sur Nouvel onglet ou utilisez l'onglet d'éditeur vide.
  3. Utilisez le DML ou les mutations pour mettre à jour les données d'une table d'emplacements.

    Par exemple, mettez à jour le nom de singerid=1 dans la table Singers en Catalina Smith :

    UPDATE Singers s
    SET s.name='Catalina Smith'
    WHERE s.id=1;
    

gcloud

Pour mettre à jour les données d'une table d'emplacements, utilisez gcloud spanner rows update.

Par exemple, mettez à jour le nom de singerid=1 dans la table Singers en Catalina Smith :

gcloud spanner rows update --table=Singers --database=example-db \
  --instance=test-instance --data=SingerId=1,SingerName='Catalina Smith'

Déplacer une ligne dans un tableau d'emplacements

Console

  1. Créez une partition et un emplacement d'instance si vous ne l'avez pas déjà fait.
  2. Dans le menu de navigation, cliquez sur Spanner Studio.
  3. Sur la page Spanner Studio, cliquez sur Nouvel onglet ou utilisez l'onglet d'éditeur vide.
  4. Utilisez le DML ou les mutations pour déplacer les données vers la nouvelle partition d'instance.

    Par exemple, déplacez singerid=1 dans la table Singers vers asiaplacement :

    UPDATE Singers s
    SET s.location='asiaplacement'
    WHERE s.id=1;
    

gcloud

Après avoir créé la partition et le placement de l'instance où vous souhaitez déplacer vos données, utilisez gcloud spanner rows update.

Par exemple, déplacez singerid=1 dans la table Singers vers asiaplacement :

gcloud spanner rows update --table=Singers --database=example-db \
  --instance=test-instance --data=SingerId=1,Location='asiaplacement'

Supprimer une ligne dans un tableau d'emplacements

Console

  1. Dans le menu de navigation, cliquez sur Spanner Studio.
  2. Sur la page Spanner Studio, cliquez sur Nouvel onglet ou utilisez l'onglet d'éditeur vide.
  3. Utilisez le DML ou les mutations pour supprimer des données.

    Par exemple, supprimez singerid=1 dans la table Singers :

    DELETE FROM Singers s
    WHERE s.id=1;
    

gcloud

Pour supprimer des données, utilisez gcloud spanner rows delete.

Par exemple, supprimez singerid=1 dans la table Singers :

gcloud spanner rows delete --table=Singers --database=example-db \
  --instance=test-instance --keys=1

Interroger les données d'une table d'emplacements

Console

  1. Dans le menu de navigation, cliquez sur Spanner Studio.
  2. Sur la page Spanner Studio, cliquez sur Nouvel onglet ou utilisez l'onglet d'éditeur vide.
  3. Exécutez votre requête.

    Par exemple, interrogez la table Singers :

    SELECT * FROM Singers s WHERE s.SingerId=1;
    

gcloud

Pour interroger les données, utilisez gcloud spanner databases execute-sql.

Par exemple, interrogez la table Singers :

gcloud spanner databases execute-sql example-db \
  --instance=test-instance \
  --sql='SELECT * FROM Singers s WHERE s.SingerId=1'

Étapes suivantes