Crear y gestionar emplazamientos de datos

En esta página se describe cómo crear y gestionar colocaciones de datos en Spanner.

Para obtener más información sobre cómo funciona la geoseparación, consulta el artículo Introducción a la geoseparación.

Crear una colocación de datos

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

Consola

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

    Instancias

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

  3. Seleccione la base de datos en la que quiera particionar los datos.

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

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

  6. Introduce la instrucción DDL de CREATE PLACEMENT (GoogleSQL, PostgreSQL) .

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

    GoogleSQL

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

    PostgreSQL

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

    Opcional: También puede usar el panel Explorador de objetos para ver, buscar e interactuar con sus objetos Placement. Para obtener más información, consulta Explorar los datos.

  7. Haz clic en Ejecutar.

gcloud

Para crear un emplazamiento con el comando de gcloud CLI, usa gcloud spanner databases ddl update.

Por ejemplo, cree un emplazamiento 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')"

Definir el líder predeterminado de un emplazamiento

Puedes definir la región principal predeterminada de un emplazamiento si su ubicación es una región dual o una multirregión. La nueva región principal debe ser una de las dos regiones de lectura y escritura de la ubicación birregional o multirregional. Para obtener más información, consulta las tablas Configuraciones disponibles de regiones duales y Configuraciones disponibles multirregionales.

Si no define una región principal, su emplazamiento usará la región principal predeterminada, tal como se especifica en su ubicación. Para ver una lista de las regiones principales de cada ubicación de dos regiones o multirregional, consulta las tablas Configuraciones disponibles de dos regiones y Configuraciones disponibles multirregionales. 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). Las siguientes instrucciones explican cómo cambiarla a Oregón(us-west1).

Consola

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

    Instancias

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

  3. Seleccione la base de datos en la que quiera particionar los datos.

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

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

  6. Introduce la instrucción DDL de CREATE PLACEMENT (GoogleSQL, PostgreSQL) .

    Por ejemplo, puedes ejecutar el siguiente comando para crear una tabla de emplazamiento nam8placement en la partición de instancia nam8-partition con la ubicación de líder predeterminada definida 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 puede usar el panel Explorador de objetos para ver, buscar e interactuar con sus objetos Placement. Para obtener más información, consulta Explorar los datos.

  7. Haz clic en Ejecutar.

gcloud

Para crear un emplazamiento con el comando de gcloud CLI, usa gcloud spanner databases ddl update.

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

Eliminar una colocación de datos

Antes de eliminar una colocación, debes quitar todos los datos de las filas de la colocación. Una vez que lo hayas hecho, puedes usar la consola de Google Cloud Google Cloud o la CLI de gcloud para eliminar la colocación.

Consola

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

    Por ejemplo, puede ejecutar lo siguiente para eliminar la tabla de emplazamiento: europeplacement

    GoogleSQL

    DROP PLACEMENT europeplacement;
    

    PostgreSQL

    DROP PLACEMENT europeplacement;
    

gcloud

Para eliminar una colocación con el comando gcloud CLI, usa gcloud spanner databases ddl update.

Por ejemplo, la colocación de elementos desplegables europeplacement:

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

Errores de colocación de la gota

Si el emplazamiento está en uso, la operación DROP PLACEMENT fallará y se mostrará un mensaje de error como "Statement failed: Placement PLACEMENT_NAME cannot be dropped because it is in use by placement table PLACEMENT_TABLE_NAME." ("Error: no se puede eliminar el emplazamiento PLACEMENT_NAME porque está en uso en la tabla de emplazamientos PLACEMENT_TABLE_NAME"). Si se produce este error, haz lo siguiente:

  1. Modifica tu aplicación para que deje de insertar o actualizar filas con el emplazamiento que quieras eliminar.
  2. Cualquiera de las siguientes:

    • Mueve las filas de emplazamiento que usen el emplazamiento que quieras eliminar a otro emplazamiento con una instrucción DML particionada como la siguiente:

      UPDATE PLACEMENT_TABLE_NAME SET LOCATION = NEW_PLACEMENT_NAME
      WHERE LOCATION = ORIGINAL_PLACEMENT_NAME;
      
    • Elimina las filas de emplazamiento con una instrucción DML particionada como la siguiente:

      DELETE FROM PLACEMENT_TABLE_NAME
      WHERE LOCATION = ORIGINAL_PLACEMENT_NAME;
      

      Las instrucciones DML específicas de la ubicación anteriores solo funcionan con DML particionado. Fallarán como las instrucciones 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 emplazamiento.

Cancelar una operación de DROP PLACEMENT

Puedes cancelar una operación de DROP PLACEMENT en cualquier momento antes de que la operación de larga duración elimine por completo la colocación del esquema de la base de datos. Para obtener información sobre cómo obtener el ID de la operación de larga duración para comprobar el estado o cancelar la operación, consulta Gestionar y observar operaciones de larga duración.

Crear una tabla con una clave de colocación

Consola

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

    Por ejemplo, puedes crear una tabla Singers que use una clave de colocació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 colocació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 );"

Editar una tabla con una clave de emplazamiento

No puedes soltar una clave de emplazamiento de una tabla. Tampoco puedes añadir una clave de emplazamiento a una tabla después de crearla. Sin embargo, puedes usar la instrucción DDL de ALTER TABLE (GoogleSQL y PostgreSQL) para cambiar otros campos de la tabla, por ejemplo, añadiendo y eliminando columnas de clave que no sean de colocación.

Eliminar una tabla con una clave de emplazamiento

Antes de eliminar una tabla con una clave de colocación, debes hacer lo siguiente:

  1. Elimina todas las filas de la tabla de emplazamientos.
  2. Espera a que se complete la version_retention_period de la base de datos. Para obtener más información, consulta Recuperación a un momento dado. A continuación, sigue estos pasos:

Consola

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

    Por ejemplo, elimina la tabla Singers:

    DROP TABLE Singers;
    

gcloud

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

Por ejemplo, elimina la tabla Singers:

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

Insertar una fila en una tabla de emplazamientos

Consola

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

    Por ejemplo, añade un cantante, Marc Richards, a la tabla Singers y particiónala 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, añade un cantante, Marc Richards, a la tabla Singers y particiónala en europeplacement:

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

Actualizar una fila de una tabla de emplazamientos

Consola

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

    Por ejemplo, actualice 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 de una tabla de emplazamientos, usa gcloud spanner rows update.

Por ejemplo, actualice 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'

Mover una fila en una tabla de emplazamientos

Consola

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

    Por ejemplo, mueve singerid=1 de 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 instancia y la ubicación a las que quieras mover tus datos, usa gcloud spanner rows update.

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

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

Eliminar una fila de una tabla de emplazamientos

Consola

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

    Por ejemplo, elimina singerid=1 de la tabla Singers:

    DELETE FROM Singers s
    WHERE s.id=1;
    

gcloud

Para eliminar datos, usa gcloud spanner rows delete.

Por ejemplo, elimina singerid=1 de la tabla Singers:

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

Consultar datos en una tabla de emplazamientos

Consola

  1. En el menú de navegación, haz clic en Spanner Studio.
  2. En la página Spanner Studio, haz clic en Nueva pestaña o usa la pestaña del editor vacía.
  3. Ejecuta la 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'

Siguientes pasos