全部产品
Search
文档中心

Tablestore:Buat tabel global

更新时间:Feb 06, 2026

Topik ini menjelaskan cara membuat tabel global di Tablestore menggunakan Java SDK.

Langkah Pencegahan

Setelah operasi pembuatan berhasil, sistem melakukan sinkronisasi data secara asinkron. Anda dapat memanggil DescribeGlobalTable untuk memeriksa status terkini tabel global. Tabel global dianggap telah dibuat ketika statusnya berubah menjadi active.

Prasyarat

  • Anda harus membuat instance di wilayah sumber dan wilayah tujuan.

  • Buat tabel data di wilayah sumber. Tabel tersebut harus memiliki konfigurasi berikut: time to live (TTL) diatur ke -1 (data tidak pernah kedaluwarsa), max versions diatur ke 1, max version drift diatur tanpa batas (Integer.MAX_VALUE), dan row versioning diaktifkan (updateFullRow bernilai True).

    Penting

    Batasan berikut berlaku setelah Anda mengaktifkan row versioning:

    • Satu baris dapat berisi maksimal 256 kolom.

    • Anda tidak dapat menentukan nomor versi secara manual saat menulis data. Sistem akan menghasilkannya secara otomatis.

    • Ketika Anda melakukan operasi Update, sistem terlebih dahulu membaca versi baris saat ini. Aksi ini menyebabkan sedikit peningkatan beban baca.

  • Inisialisasi client.

    Penting

    Jika Anda menginisialisasi client dengan AccessKey pengguna Resource Access Management (RAM), pastikan pengguna RAM tersebut memiliki izin untuk membuat tabel global. Untuk informasi lebih lanjut mengenai definisi Action yang diperlukan, lihat Operasi API Tablestore.

Deskripsi metode

public CreateGlobalTableResponse createGlobalTable(CreateGlobalTableRequest createGlobalTableRequest) throws TableStoreException, ClientException

Parameter CreateGlobalTableRequest

  • baseTable (Wajib) BaseTable: Tabel dasar. Secara default, Anda dapat menulis data ke tabel dasar. Parameter ini mencakup subparameter berikut.

    Nama

    Tipe

    Deskripsi

    regionId (Wajib)

    String

    ID wilayah. Contohnya, `cn-hangzhou`.

    instanceName (Wajib)

    String

    Nama instans.

    tableName (Wajib)

    String

    Nama tabel dasar. Ini juga merupakan nama tabel global.

  • placements (Wajib) List<Placement>: Daftar pengaturan penempatan untuk tabel. Parameter ini mencakup subparameter berikut.

    Nama

    Tipe

    Deskripsi

    regionId (Wajib)

    String

    ID wilayah. Contohnya, `cn-beijing`.

    instanceName (Wajib)

    String

    Nama instans.

    writable (Wajib)

    boolean

    Menentukan apakah tabel dapat ditulis. Nilai default-nya adalah `false`. Saat menggunakan mode aktif-pasif, pertahankan konfigurasi default. Saat menggunakan mode multi-aktif, atur parameter ini ke `true` sesuai kebutuhan.

  • syncMode (Wajib) SyncMode: Mode sinkronisasi data. Saat ini, hanya ROW (sinkronisasi tingkat baris) yang didukung.

  • serveMode (Opsional) ServeMode: Mode layanan. Nilai yang valid:

    • PRIMARY_SECONDARY (Default): Mode aktif-pasif. Wilayah utama bersifat read-write, sedangkan wilayah sekunder bersifat read-only. Data disinkronkan dari wilayah utama ke wilayah sekunder. Mode ini cocok untuk skenario seperti pembacaan lokal, disaster recovery dan backup, serta hot standby jarak jauh.

    • PEER_TO_PEER: Mode multi-aktif. Semua wilayah bersifat read-write. Konflik diselesaikan pada tingkat baris atau kolom berdasarkan prinsip Last Write Wins (LWW), yang menggunakan timestamp terbaru untuk menentukan pemenangnya. Mode ini cocok untuk skenario yang memerlukan pembacaan dan penulisan latensi rendah di beberapa wilayah.

Contoh

Buat tabel global dalam mode aktif-pasif

private static void createGlobalTableExample(SyncClient client){
    // Buat permintaan.
    CreateGlobalTableRequest req = new CreateGlobalTableRequest(
            // Konfigurasikan tabel dasar. Tabel tersebut harus sudah ada.
            new GlobalTableTypes.BaseTable(
                    // ID wilayah tabel dasar.
                    "cn-hangzhou",  
                    // Nama instans tabel dasar.   
                    "i-gt-test",  
                    // Nama tabel dasar. Ini juga merupakan nama tabel global.     
                    "t-gt-test-1"
            ),
            // Mode sinkronisasi tabel global. Saat ini, hanya mode ROW (sinkronisasi tingkat baris) yang didukung.
            GlobalTableTypes.SyncMode.ROW
    );

    // Tambahkan tabel terkait. Anda dapat menambahkan beberapa tabel.
    req.addPlacement(new GlobalTableTypes.Placement(
            // ID wilayah tabel terkait.
            "cn-shanghai", 
            // Nama instans tabel terkait. Instans tersebut harus sudah ada.
            // Instans tidak boleh berisi tabel dengan nama yang sama dengan tabel dasar. Sistem akan membuat tabel tersebut secara otomatis.     
            "i-dest-test",         
            // Menentukan apakah tabel dapat ditulis. false berarti read-only. Dalam mode aktif-pasif, nilai ini hanya boleh diatur ke false.
            false
    ));

    // Atur mode layanan ke arsitektur primary/secondary (PRIMARY_SECONDARY).
    req.setServeMode(GlobalTableTypes.ServeMode.PRIMARY_SECONDARY);

    // Kirim permintaan.
    CreateGlobalTableResponse createResp = client.createGlobalTable(req);

    // Cetak tanggapan.
    System.out.println("Pembuatan tabel global telah dimulai.");
    System.out.println("RequestId: " + createResp.getRequestId());
    System.out.println("GlobalTableId: " + createResp.getGlobalTableId());
}

Buat tabel global dalam mode multi-aktif

private static void createGlobalTableExample(SyncClient client){
    // Buat permintaan.
    CreateGlobalTableRequest req = new CreateGlobalTableRequest(
            // Konfigurasikan tabel dasar. Tabel tersebut harus sudah ada.
            new GlobalTableTypes.BaseTable(
                    // ID wilayah tabel dasar.
                    "cn-hangzhou",
                    // Nama instans tabel dasar.                         
                    "i-gt-test", 
                    // Nama tabel dasar. Ini juga merupakan nama tabel global.       
                    "t-gt-test-1"      
            ),
            // Mode sinkronisasi tabel global. Saat ini hanya mendukung mode ROW (sinkronisasi tingkat baris).
            GlobalTableTypes.SyncMode.ROW   
    );

    // Tambahkan tabel terkait. Anda dapat menambahkan beberapa tabel.
    req.addPlacement(new GlobalTableTypes.Placement(
            // ID wilayah tabel terkait.
            "cn-shanghai",
            // Nama instans tabel terkait. Instans tersebut harus sudah ada.
            // Instans tidak boleh berisi tabel dengan nama yang sama dengan tabel dasar. Sistem akan membuat tabel tersebut secara otomatis.     
            "i-dest-test",        
            // Menentukan apakah tabel dapat ditulis. Dalam mode multi-aktif, Anda dapat mengatur nilai ini ke true atau false sesuai kebutuhan.
            true          
    ));

    // Atur mode layanan ke multi-aktif (PEER_TO_PEER).
    req.setServeMode(GlobalTableTypes.ServeMode.PEER_TO_PEER);

    // Kirim permintaan.
    CreateGlobalTableResponse createResp = client.createGlobalTable(req);

    // Cetak tanggapan.
    System.out.println("Pembuatan tabel global telah dimulai.");
    System.out.println("RequestId: " + createResp.getRequestId());
    System.out.println("GlobalTableId: " + createResp.getGlobalTableId());
}