Crea y administra posiciones de datos

En esta página, se describe cómo crear y administrar la colocación de datos en Spanner.

Para obtener más información sobre cómo funciona la partición geográfica, consulta la Descripción general de la partición geográfica.

Crea una posición de datos

Después de crear las particiones de la instancia de Spanner y las bases de datos, crea tu ubicación.

Console

  1. Ve a la página Instancias en la Google Cloud consola.

    Instancias

  2. Selecciona la instancia con particiones creadas por el usuario.

  3. Selecciona la base de datos en la que deseas particionar los datos.

  4. En el menú de navegación, haz clic en Spanner Studio.

  5. En la página de Spanner Studio, haz clic en Nueva pestaña o usa la pestaña del editor vacía.

  6. Ingresa la sentencia DDL de CREATE PLACEMENT (GoogleSQL, PostgreSQL).

    Por ejemplo, puedes ejecutar el siguiente comando para crear una tabla de posiciones europeplacement en la partición de la instancia europe-partition:

    GoogleSQL

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

    PostgreSQL

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

    Opcional: También puedes usar el panel Explorador de objetos para ver tus objetos de Placement, buscarlos y, también, interactuar con ellos. Para obtener más información, consulta Explora tus datos.

  7. Haz clic en Ejecutar.

gcloud

Para crear una posición con el comando de gcloud CLI, usa gcloud spanner databases ddl update.

Por ejemplo, crea una posición en la partición de instancia 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')"

Cómo establecer el líder predeterminado para una posición

Puedes establecer la región líder predeterminada de una posición si su ubicación se encuentra en una región doble o multirregión. La nueva región líder debe ser una de las dos regiones de lectura y escritura dentro de la ubicación de colocación birregional o multirregional. Para obtener más información, consulta las tablas de Configuraciones birregionales disponibles y Configuraciones multirregionales disponibles.

Si no configuras una región líder, tu posición usará la región líder predeterminada especificada por su ubicación. Para obtener una lista de la región líder de cada ubicación birregional o multirregional, consulta las tablas Configuraciones birregionales disponibles y Configuraciones multirregionales disponibles. La región líder predeterminada se indica con una L. Por ejemplo, la región principal predeterminada de nam8 es Los Ángeles(us-west2). En las siguientes instrucciones, se explica cómo configurarla en Oregón(us-west1).

Console

  1. Ve a la página Instancias en la Google Cloud consola.

    Instancias

  2. Selecciona la instancia con particiones creadas por el usuario.

  3. Selecciona la base de datos en la que deseas particionar los datos.

  4. En el menú de navegación, haz clic en Spanner Studio.

  5. En la página de Spanner Studio, haz clic en Nueva pestaña o usa la pestaña del editor vacía.

  6. Ingresa la sentencia DDL de CREATE PLACEMENT (GoogleSQL, PostgreSQL).

    Por ejemplo, puedes ejecutar el siguiente comando para crear una tabla de posiciones nam8placement en la partición de la instancia nam8-partition con la ubicación del líder predeterminada establecida como 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');
    

    Opcional: También puedes usar el panel Explorador de objetos para ver tus objetos de Placement, buscarlos y, también, interactuar con ellos. Para obtener más información, consulta Explora tus datos.

  7. Haz clic en Ejecutar.

gcloud

Para crear una posición con el comando de gcloud CLI, usa gcloud spanner databases ddl update.

Por ejemplo, crea una tabla de posiciones nam8placement en la partición de la instancia nam8-partition con la ubicación del líder predeterminada establecida como 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')"

Cómo quitar una colocación de datos

Antes de descartar una posición, debes quitar todos los datos de fila de la posición. Después de hacerlo, puedes usar la consola de Google Cloud o gcloud CLI para quitar la posición.

Console

  1. En el menú de navegación, haz clic en Spanner Studio.
  2. En la página de Spanner Studio, haz clic en Nueva pestaña o usa la pestaña del editor vacía.
  3. Ingresa la sentencia DDL de DROP PLACEMENT(GoogleSQL, PostgreSQL).

    Por ejemplo, puedes ejecutar el siguiente comando para descartar la tabla de posiciones europeplacement:

    GoogleSQL

    DROP PLACEMENT europeplacement;
    

    PostgreSQL

    DROP PLACEMENT europeplacement;
    

gcloud

Para descartar una posición con el comando de gcloud CLI, usa gcloud spanner databases ddl update.

Por ejemplo, posición de descarte europeplacement:

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

Errores de colocación de la entrega

Si la posición está en uso, la operación DROP PLACEMENT falla con un mensaje de error como: "Statement failed: Placement PLACEMENT_NAME cannot be dropped because it is in use by placement table PLACEMENT_TABLE_NAME". Si encuentras este error, haz lo siguiente:

  1. Modifica tu aplicación para dejar de insertar o actualizar filas con la posición que deseas quitar.
  2. Realiza una de las siguientes acciones:

    • Mueve las filas de posiciones existentes que usan la posición que deseas borrar a otra posición con una declaración de DML particionado como la siguiente:

      UPDATE PLACEMENT_TABLE_NAME SET LOCATION = NEW_PLACEMENT_NAME
      WHERE LOCATION = ORIGINAL_PLACEMENT_NAME;
      
    • Borra las filas de la posición con una declaración DML particionada como la siguiente:

      DELETE FROM PLACEMENT_TABLE_NAME
      WHERE LOCATION = ORIGINAL_PLACEMENT_NAME;
      

      Las instrucciones DML específicas de la posición anteriores solo funcionan con DML particionado. Fallarán como declaraciones DML normales. Para obtener más información, consulta Limitaciones. También puedes usar la API de mutación para mover o soltar filas de posiciones.

Cancela una operación de DROP PLACEMENT

Puedes cancelar una operación DROP PLACEMENT en cualquier momento antes de que la operación de larga duración borre por completo la posición del esquema de la base de datos. Para obtener detalles sobre cómo obtener el ID de la operación de larga duración para verificar el estado o cancelar la operación, consulta Administra y observa operaciones de larga duración.

Crea una tabla con una clave de posición

Console

  1. En el menú de navegación, haz clic en Spanner Studio.
  2. En la página Spanner Studio, haz clic en Pestaña nueva o usa la pestaña del editor vacía.
  3. Ingresa la instrucción DDL de CREATE TABLE (GoogleSQL, PostgreSQL).

    Por ejemplo, puedes crear una tabla Singers que use una clave de posición para particionar los datos de los cantantes:

    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

Para crear una tabla, usa gcloud spanner databases ddl update.

Por ejemplo, puedes crear una tabla Singers que use una clave de posición para particionar los datos de los cantantes:

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 );"

Edita una tabla con una clave de posición

No puedes descartar una clave de posición de una tabla. Tampoco puedes agregar una clave de posición a una tabla después de que se haya creado. Sin embargo, puedes usar la sentencia DDL ALTER TABLE (GoogleSQL, PostgreSQL) para cambiar otros campos de la tabla, por ejemplo, agregando y quitando columnas de claves que no son de posición.

Borra una tabla con una clave de ubicación

Antes de borrar una tabla con una clave de ubicación, primero debes hacer lo siguiente:

  1. Borra todas las filas de la tabla de posiciones.
  2. Espera a que version_retention_period de la base de datos pase. Para obtener más información, consulta Recuperación de un momento determinado. Luego, sigue estos pasos:

Console

  1. En el menú de navegación, haz clic en Spanner Studio.
  2. En la página Spanner Studio, haz clic en Pestaña nueva o usa la pestaña del editor vacía.
  3. Ingresa la instrucción DDL de DROP TABLE (GoogleSQL, PostgreSQL).

    Por ejemplo, descarta la tabla Singers:

    DROP TABLE Singers;
    

gcloud

Para descartar una tabla, usa gcloud spanner databases ddl update.

Por ejemplo, descarta la tabla Singers:

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

Inserta una fila en una tabla de posiciones

Console

  1. En el menú de navegación, haz clic en Spanner Studio.
  2. En la página Spanner Studio, haz clic en Pestaña nueva o usa la pestaña del editor vacía.
  3. Ingresa la instrucción DDL de INSERT INTO (GoogleSQL, PostgreSQL).

    Por ejemplo, agrega un cantante, Marc Richards, a la tabla Singers y particiónalo en europeplacement:

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

gcloud

Para escribir datos en una tabla, usa gcloud spanner rows insert.

Por ejemplo, agrega un cantante, Marc Richards, a la tabla Singers y particiónalo en europeplacement:

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

Actualiza una fila en una tabla de posiciones

Console

  1. En el menú de navegación, haz clic en Spanner Studio.
  2. En la página Spanner Studio, haz clic en Pestaña nueva o usa la pestaña del editor vacía.
  3. Usa DML o mutaciones para actualizar los datos en una tabla de posiciones.

    Por ejemplo, actualiza el nombre de singerid=1 en la tabla Singers a Catalina Smith:

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

gcloud

Para actualizar los datos en una tabla de posiciones, usa gcloud spanner rows update.

Por ejemplo, actualiza el nombre de singerid=1 en la tabla Singers a Catalina Smith:

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

Cómo mover una fila en una tabla de posiciones

Console

  1. Crea una nueva partición y ubicación de la instancia si aún no lo hiciste.
  2. En el menú de navegación, haz clic en Spanner Studio.
  3. En la página Spanner Studio, haz clic en Pestaña nueva o usa la pestaña del editor vacía.
  4. Usa DML o mutaciones para transferir datos a la nueva partición de la instancia.

    Por ejemplo, mueve singerid=1 en la tabla Singers a asiaplacement:

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

gcloud

Después de crear la partición de la instancia y la ubicación en la que deseas mover tus datos, usa gcloud spanner rows update.

Por ejemplo, mueve singerid=1 en la tabla Singers a asiaplacement:

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

Borra una fila en una tabla de posiciones

Console

  1. En el menú de navegación, haz clic en Spanner Studio.
  2. En la página Spanner Studio, haz clic en Pestaña nueva o usa la pestaña del editor vacía.
  3. Usa DML o mutaciones para borrar datos.

    Por ejemplo, borra singerid=1 en la tabla Singers:

    DELETE FROM Singers s
    WHERE s.id=1;
    

gcloud

Para borrar datos, usa gcloud spanner rows delete.

Por ejemplo, borra singerid=1 en la tabla Singers:

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

Consulta datos en una tabla de posiciones

Console

  1. En el menú de navegación, haz clic en Spanner Studio.
  2. En la página Spanner Studio, haz clic en Pestaña nueva o usa la pestaña del editor vacía.
  3. Ejecuta tu consulta.

    Por ejemplo, consulta la tabla Singers:

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

gcloud

Para consultar datos, usa gcloud spanner databases execute-sql.

Por ejemplo, consulta la tabla Singers:

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

¿Qué sigue?