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).
PentingBatasan 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.
- 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, ClientExceptionContoh
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());
}