本文介绍如何通过Java SDK创建表格存储的全局表。
注意事项
创建操作返回成功后,系统会异步同步数据,可通过调用DescribeGlobalTable查看全局表的当前状态。当返回状态为active时,表示全局表创建成功。
前提条件
在源地域和目标地域创建实例。
在源地域创建数据表。数据表的配置必须是数据生命周期TTL为-1(数据永不过期)、最大版本数为1、最大版本偏差无限制(即Integer.MAX_VALUE)以及开启行版本(即updateFullRow为True)。
重要开启行版本后存在如下限制:
单行数据最多支持 256 列。
写入数据时不支持手动指定版本号,只能由系统自动生成。
执行 Update 操作时,系统需先读取当前行版本,因此会带来少量额外的读取负载。
方法说明
public CreateGlobalTableResponse createGlobalTable(CreateGlobalTableRequest createGlobalTableRequest) throws TableStoreException, ClientException示例
创建主备模式的全局表。
private static void createGlobalTableExample(SyncClient client){
// 构造请求
CreateGlobalTableRequest req = new CreateGlobalTableRequest(
// 基础表配置,必须是已存在的表
new GlobalTableTypes.BaseTable(
// 基础表所在地域 ID
"cn-hangzhou",
// 基础表所在实例名称
"i-gt-test",
// 基础表的表名(同时也是全局表的表名)
"t-gt-test-1"
),
// 全局表同步模式:目前仅支持 ROW 模式(行级同步)
GlobalTableTypes.SyncMode.ROW
);
// 添加关联表(可添加多个)
req.addPlacement(new GlobalTableTypes.Placement(
// 关联表所在地域 ID
"cn-shanghai",
// 关联表所在实例名称,实例必须已存在
// 实例中不能存在与基础表同名的表,表由系统自动创建
"i-dest-test",
// 是否可写,false表示只读。主备模式下只能设置为false
false
));
// 设置服务模式为主备架构(PRIMARY_SECONDARY)
req.setServeMode(GlobalTableTypes.ServeMode.PRIMARY_SECONDARY);
// 发起请求
CreateGlobalTableResponse createResp = client.createGlobalTable(req);
// 打印响应结果
System.out.println("Global table creation initiated.");
System.out.println("RequestId: " + createResp.getRequestId());
System.out.println("GlobalTableId: " + createResp.getGlobalTableId());
}该文章对您有帮助吗?