本页介绍了如何在 Spanner 中创建和管理数据布置。
如需详细了解地理位置分区的工作原理,请参阅地理位置分区概览。
创建数据布置
在创建 Spanner 实例分区和数据库后,创建您的布置。
控制台
前往 Google Cloud 控制台中的实例页面。
选择包含用户创建的实例分区的实例。
选择要对数据进行分区的数据库。
在导航菜单中,点击 Spanner Studio。
在 Spanner Studio 页面上,点击
新标签页或使用空白编辑器标签页。输入
CREATE PLACEMENT
(GoogleSQL、PostgreSQL)DDL 语句。例如,您可以运行以下命令,在实例分区
europe-partition
中创建布置表europeplacement
:GoogleSQL
CREATE PLACEMENT `europeplacement` OPTIONS (instance_partition="europe-partition");
PostgreSQL
CREATE PLACEMENT europeplacement WITH (instance_partition='europe-partition');
可选:您还可以使用对象探索器窗格查看、搜索布置对象,以及与其进行交互。如需了解详情,请参阅探索数据。
点击运行。
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
)。
控制台
前往 Google Cloud 控制台中的实例页面。
选择包含用户创建的实例分区的实例。
选择要对数据进行分区的数据库。
在导航菜单中,点击 Spanner Studio。
在 Spanner Studio 页面上,点击
新标签页或使用空白编辑器标签页。输入
CREATE PLACEMENT
(GoogleSQL、PostgreSQL)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');
可选:您还可以使用对象探索器窗格查看、搜索布置对象,以及与其进行交互。如需了解详情,请参阅探索数据。
点击运行。
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')"
删除数据布置
您无法删除布置。您必须删除数据库才能删除布置及其关联的数据。如需了解详情,请参阅删除数据库。
创建包含布置键的表
控制台
- 在导航菜单中,点击 Spanner Studio。
- 在 Spanner Studio 页面上,点击 新标签页或使用空白编辑器标签页。
输入
CREATE TABLE
(GoogleSQL、PostgreSQL) 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
(GoogleSQL、PostgreSQL) DDL 语句来更改表中的其他字段,例如,通过添加和删除非布置键列。
删除包含布置键的表
在删除包含布置键的表之前,您必须先执行以下操作:
- 删除布置表中的所有行。
- 等待数据库达到
version_retention_period
。如需了解详情,请参阅时间点恢复。 然后,请按以下步骤操作:
控制台
- 在导航菜单中,点击 Spanner Studio。
- 在 Spanner Studio 页面上,点击 新标签页或使用空白编辑器标签页。
输入
DROP TABLE
(GoogleSQL、PostgreSQL) 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"
在布置表中插入行
控制台
- 在导航菜单中,点击 Spanner Studio。
- 在 Spanner Studio 页面上,点击 新标签页或使用空白编辑器标签页。
输入
INSERT INTO
(GoogleSQL、PostgreSQL) 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'
更新布置表中的行
控制台
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'
移动布置表中的行
控制台
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'
删除布置表中的行
控制台
gcloud
如需删除数据,请使用 gcloud spanner rows delete
。
例如,删除 Singers
表中的 singerid=1
:
gcloud spanner rows delete --table=Singers --database=example-db \
--instance=test-instance --keys=1
查询布置表中的数据
控制台
- 在导航菜单中,点击 Spanner Studio。
- 在 Spanner Studio 页面上,点击 新标签页或使用空白编辑器标签页。
运行查询。
例如,查询
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'