全部產品
Search
文件中心

Tablestore:建立全域表

更新時間:Jan 09, 2026

本文介紹如何通過Java SDK建立Table Store的全域表。

注意事項

建立操作返回成功後,系統會非同步同步資料,可通過調用DescribeGlobalTable查看全域表的目前狀態。當返回狀態為active時,表示全域表建立成功。

前提條件

  • 在源地區和目標地區建立執行個體。

  • 在源地區建立資料表。資料表的配置必須是資料生命週期TTL為-1(資料永不到期)、最大版本數為1、最大版本偏差無限制(即Integer.MAX_VALUE)以及開啟行版本(即updateFullRow為True)。

    重要

    開啟行版本後存在如下限制:

    • 單行資料最多支援 256 列。

    • 寫入資料時不支援手動指定版本號碼,只能由系統自動產生。

    • 執行 Update 操作時,系統需先讀取當前行版本,因此會帶來少量額外的讀取負載。

  • 初始化用戶端

方法說明

public CreateGlobalTableResponse createGlobalTable(CreateGlobalTableRequest createGlobalTableRequest) throws TableStoreException, ClientException

CreateGlobalTableRequest參數說明

  • baseTable(必選)BaseTable:基礎資料表資訊,預設可寫入資料,包含以下參數。

    名稱

    類型

    說明

    regionId(必選)

    String

    地區ID,例如cn-hangzhou。

    instanceName(必選)

    String

    執行個體名稱。

    tableName(必選)

    String

    基礎資料表名稱,也是全域表名稱。

  • placements(必選)List<Placement>:表的分布位置配置列表。包含以下參數。

    名稱

    類型

    說明

    regionId(必選)

    String

    地區ID,例如cn-beijing。

    instanceName(必選)

    String

    執行個體名稱。

    writable(必選)

    boolean

    是否可寫。預設值為false。當使用主備模式時,請保持預設配置。

  • syncMode(必選)SyncMode:資料同步模式。目前支援ROW(行級同步)。

  • serveMode(可選)ServeMode:服務模式。目前只支援PRIMARY_SECONDARY(主備模式)。

樣本

建立主備模式的全域表。

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());
}