创建和管理数据位置

本页介绍了如何在 Spanner 中创建和管理数据布置。

如需详细了解地理位置分区的工作原理,请参阅地理位置分区概览

创建数据布置

创建 Spanner 实例分区数据库后,创建您的布置。

控制台

  1. 前往 Google Cloud 控制台中的实例页面。

    实例

  2. 选择包含用户创建的实例分区的实例。

  3. 选择要对数据进行分区的数据库。

  4. 在导航菜单中,点击 Spanner Studio

  5. Spanner Studio 页面上,点击 新标签页或使用空白编辑器标签页。

  6. 输入 CREATE PLACEMENTGoogleSQLPostgreSQL)DDL 语句。

    例如,您可以运行以下命令,在实例分区 europe-partition 中创建布置表 europeplacement

    GoogleSQL

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

    PostgreSQL

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

    可选:您还可以使用对象探索器窗格查看、搜索布置对象,以及与其进行交互。如需了解详情,请参阅探索数据

  7. 点击运行

gcloud

如需使用 gcloud CLI 命令创建布置,请使用 gcloud spanner databases ddl update

例如,在实例分区 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')"

为布置设置默认主要区域

如果布置位于双区域或多区域位置,您可以设置其默认主要区域。新的主要区域必须是双区域或多区域位置中的两个读写区域之一。如需了解详情,请参阅双区域可用配置多区域可用配置表格。

如果您未设置主要区域,则您的布置会使用其位置指定的默认主要区域。如需查看每个双区域或多区域位置的主要区域列表,请参阅双区域可用配置多区域可用配置表格。默认主要区域用 L 表示。例如,nam8 的默认主要区域位于洛杉矶(us-west2)。以下说明介绍了如何将其设置为俄勒冈州(us-west1)。

控制台

  1. 前往 Google Cloud 控制台中的实例页面。

    实例

  2. 选择包含用户创建的实例分区的实例。

  3. 选择要对数据进行分区的数据库。

  4. 在导航菜单中,点击 Spanner Studio

  5. Spanner Studio 页面上,点击 新标签页或使用空白编辑器标签页。

  6. 输入 CREATE PLACEMENTGoogleSQLPostgreSQL)DDL 语句。

    例如,您可以运行以下命令,在实例分区 nam8-partition 中创建布置表 nam8placement,并将默认主要位置设置为 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');
    

    可选:您还可以使用对象探索器窗格查看、搜索布置对象,以及与其进行交互。如需了解详情,请参阅探索数据

  7. 点击运行

gcloud

如需使用 gcloud CLI 命令创建布置,请使用 gcloud spanner databases ddl update

例如,在实例分区 nam8-partition 中创建布置表 nam8placement,并将默认主要位置设置为 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')"

删除数据布置

您无法删除布置。您必须删除数据库才能删除布置及其关联的数据。如需了解详情,请参阅删除数据库

创建包含布置键的表

控制台

  1. 在导航菜单中,点击 Spanner Studio
  2. Spanner Studio 页面上,点击 新标签页或使用空白编辑器标签页。
  3. 输入 CREATE TABLE (GoogleSQLPostgreSQL) DDL 语句。

    例如,您可以创建一个使用布置键来对歌手数据进行分区的 Singers 表:

    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

如需创建表,请使用 gcloud spanner databases ddl update

例如,您可以创建一个使用布置键来对歌手数据进行分区的 Singers 表:

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

修改包含布置键的表

您无法从表中删除布置键。您也无法在表创建后向其中添加布置键。不过,您可以使用 ALTER TABLE (GoogleSQLPostgreSQL) DDL 语句来更改表中的其他字段,例如,通过添加和删除非布置键列。

删除包含布置键的表

在删除包含布置键的表之前,您必须先执行以下操作:

  1. 删除布置表中的所有行。
  2. 等待数据库达到 version_retention_period。如需了解详情,请参阅时间点恢复。 然后,请按以下步骤操作:

控制台

  1. 在导航菜单中,点击 Spanner Studio
  2. Spanner Studio 页面上,点击 新标签页或使用空白编辑器标签页。
  3. 输入 DROP TABLE (GoogleSQLPostgreSQL) DDL 语句。

    例如,删除 Singers 表:

    DROP TABLE Singers;
    

gcloud

如需删除表,请使用 gcloud spanner databases ddl update

例如,删除 Singers 表:

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

在布置表中插入行

控制台

  1. 在导航菜单中,点击 Spanner Studio
  2. Spanner Studio 页面上,点击 新标签页或使用空白编辑器标签页。
  3. 输入 INSERT INTO (GoogleSQLPostgreSQL) DDL 语句。

    例如,将歌手 Marc Richards 添加到 Singers 表中,并在 europeplacement 中对该表进行分区:

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

gcloud

如需将数据写入表,请使用 gcloud spanner rows insert

例如,将歌手 Marc Richards 添加到 Singers 表中,并在 europeplacement 中对该表进行分区:

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

更新布置表中的行

控制台

  1. 在导航菜单中,点击 Spanner Studio
  2. Spanner Studio 页面上,点击 新标签页或使用空白编辑器标签页。
  3. 使用 DML变更更新布置表中的数据。

    例如,将 Singers 表中的 singerid=1 的名称更新为 Catalina Smith

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

gcloud

如需更新布置表中的数据,请使用 gcloud spanner rows update

例如,将 Singers 表中的 singerid=1 的名称更新为 Catalina Smith

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

移动布置表中的行

控制台

  1. 创建新的实例分区和布置(如果您尚未创建)。
  2. 在导航菜单中,点击 Spanner Studio
  3. Spanner Studio 页面上,点击 新标签页或使用空白编辑器标签页。
  4. 使用 DML变更将数据移至新的实例分区。

    例如,将 Singers 表中的 singerid=1 移至 asiaplacement

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

gcloud

创建要将数据移至其中的实例分区和布置后,请使用 gcloud spanner rows update

例如,将 Singers 表中的 singerid=1 移至 asiaplacement

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

删除布置表中的行

控制台

  1. 在导航菜单中,点击 Spanner Studio
  2. Spanner Studio 页面上,点击 新标签页或使用空白编辑器标签页。
  3. 使用 DML变更删除数据。

    例如,删除 Singers 表中的 singerid=1

    DELETE FROM Singers s
    WHERE s.id=1;
    

gcloud

如需删除数据,请使用 gcloud spanner rows delete

例如,删除 Singers 表中的 singerid=1

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

查询布置表中的数据

控制台

  1. 在导航菜单中,点击 Spanner Studio
  2. Spanner Studio 页面上,点击 新标签页或使用空白编辑器标签页。
  3. 运行查询。

    例如,查询 Singers 表:

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

gcloud

如需查询数据,请使用 gcloud spanner databases execute-sql

例如,查询 Singers 表:

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

后续步骤