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
Ve a la página Instancias de la Google Cloud consola.
Selecciona la instancia con particiones de instancia creadas por el usuario.
Seleccione la base de datos en la que quiera particionar los datos.
En el menú de navegación, haz clic en Spanner Studio.
En la página Spanner Studio, haga clic en
Nueva pestaña o use la pestaña del editor vacía.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 instanciaeurope-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.
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
Ve a la página Instancias de la Google Cloud consola.
Selecciona la instancia con particiones de instancia creadas por el usuario.
Seleccione la base de datos en la que quiera particionar los datos.
En el menú de navegación, haz clic en Spanner Studio.
En la página Spanner Studio, haga clic en
Nueva pestaña o use la pestaña del editor vacía.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 instancianam8-partition
con la ubicación de líder predeterminada definida comous-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.
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
- En el menú de navegación, haz clic en Spanner Studio.
- En la página Spanner Studio, haga clic en Nueva pestaña o use la pestaña del editor vacía.
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:
- Modifica tu aplicación para que deje de insertar o actualizar filas con el emplazamiento que quieras eliminar.
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
- En el menú de navegación, haz clic en Spanner Studio.
- En la página Spanner Studio, haz clic en Nueva pestaña o usa la pestaña del editor vacía.
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:
- Elimina todas las filas de la tabla de emplazamientos.
- 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
- En el menú de navegación, haz clic en Spanner Studio.
- En la página Spanner Studio, haz clic en Nueva pestaña o usa la pestaña del editor vacía.
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
- En el menú de navegación, haz clic en Spanner Studio.
- En la página Spanner Studio, haz clic en Nueva pestaña o usa la pestaña del editor vacía.
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 eneuropeplacement
: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
- En el menú de navegación, haz clic en Spanner Studio.
- En la página Spanner Studio, haz clic en Nueva pestaña o usa la pestaña del editor vacía.
Usa DML o mutaciones para actualizar los datos de una tabla de colocación.
Por ejemplo, actualice el nombre de
singerid=1
en la tablaSingers
aCatalina 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
- Crea una partición de instancia y una colocación si aún no lo has hecho.
- En el menú de navegación, haz clic en Spanner Studio.
- En la página Spanner Studio, haz clic en Nueva pestaña o usa la pestaña del editor vacía.
Usa DML o mutaciones para mover datos a la partición de la nueva instancia.
Por ejemplo, mueve
singerid=1
de la tablaSingers
aasiaplacement
: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
- En el menú de navegación, haz clic en Spanner Studio.
- En la página Spanner Studio, haz clic en Nueva pestaña o usa la pestaña del editor vacía.
Usa DML o mutaciones para eliminar datos.
Por ejemplo, elimina
singerid=1
de la tablaSingers
: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
- En el menú de navegación, haz clic en Spanner Studio.
- En la página Spanner Studio, haz clic en Nueva pestaña o usa la pestaña del editor vacía.
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'