Global Table secara otomatis menyinkronkan data di beberapa wilayah untuk mendukung pemulihan bencana lintas wilayah. Gunakan Global Table ketika bisnis lintas wilayah Anda memerlukan akses berlatensi rendah, ketersediaan tinggi, operasi baca dan tulis dari replika terdekat, serta alih bencana (switchover) pemulihan bencana.
Cara kerja
Global Table menggunakan teknologi replikasi multi-wilayah Tablestore untuk membuat saluran sinkronisasi data antar instans di beberapa wilayah. Ketika data dalam sebuah tabel di satu wilayah berubah, perubahan tersebut secara otomatis disinkronkan ke tabel replikanya di wilayah lain, sehingga menjamin konsistensi data lintas wilayah. Replika tabel mendukung ekspansi dinamis dan penghapusan di berbagai instans dan wilayah.
Proses replikasi berjalan secara otomatis di latar belakang tanpa intervensi manual. Mekanisme ini mencapai recovery point objective (RPO) yang dapat diterima sekaligus menjamin konsistensi data, memenuhi kebutuhan pemulihan bencana dan kelangsungan bisnis bagi sebagian besar sistem bisnis.
Dalam penggunaan sehari-hari, pengguna dan aplikasi dapat membaca dari serta menulis ke replika terdekat, sehingga mengurangi latensi akses. Ketika terjadi kegagalan tingkat wilayah atau bencana besar—seperti gangguan pusat data atau bencana alam—Anda dapat segera memulai alih bencana berdasarkan beberapa replika untuk membangun kembali aplikasi dan data kritis, sehingga menjamin kelangsungan bisnis.

Global Table menyediakan fitur-fitur berikut:
Cross-region disaster recovery — Replika tabel lintas wilayah. Jika terjadi kegagalan tingkat wilayah, replika di wilayah lain tetap dapat memberikan layanan.
Low-latency access — Pengguna atau aplikasi dapat membaca dari dan menulis ke replika terdekat, sehingga mengurangi latensi operasi.
Eventual consistency — Menggunakan model konsistensi akhir. Beberapa replika disinkronkan secara asinkron, dan data pada akhirnya akan konsisten.
Automatic conflict resolution — Sistem menggunakan algoritma LWW (Last Write Wins) untuk secara otomatis menyelesaikan konflik penulisan konkuren lintas wilayah.
Mode sinkronisasi
Global Table mendukung dua mode sinkronisasi. Anda memilih mode tersebut saat membuat Global Table.
Active-passive mode — Hanya replika utama yang menerima operasi tulis melalui endpoint instansnya. Semua replika lain bersifat read-only, kecuali selama proses alih bencana aktif-pasif. Gunakan mode ini untuk pemulihan bencana lintas wilayah dan untuk meningkatkan kapasitas baca dengan replika read-only.
Active-active mode — Beberapa replika menerima operasi tulis melalui endpoint instans masing-masing. Anda menetapkan mode baca/tulis untuk setiap instans tujuan. Gunakan mode ini ketika Anda menulis ke beberapa wilayah dan memerlukan dataset global.
Kedua mode menggunakan eventual consistency: replika disinkronkan secara asinkron, dan data pada akhirnya akan konsisten. Dalam mode aktif-aktif dan selama alih bencana aktif-pasif, penulisan konkuren ke baris yang sama diselesaikan oleh algoritma LWW. Untuk informasi lebih lanjut, lihat Limits.
Skenario
Global Table cocok untuk skenario bisnis yang memerlukan ketersediaan tinggi, operasi baca dan tulis lintas wilayah berlatensi rendah, serta pemulihan bencana lintas wilayah. Skenario khas meliputi:
Cross-region backup — Jika wilayah utama gagal, alihkan ke wilayah sekunder untuk terus menyediakan layanan baca dan menjamin kelangsungan bisnis. Misalnya, tabel pengguna utama dan sekunder sistem e-commerce disimpan di Tablestore di wilayah China (Hangzhou) dan China (Beijing). Jika wilayah China (Hangzhou) gagal, wilayah China (Beijing) terus menyediakan layanan kueri. Mode yang direkomendasikan: aktif-pasif.
Write in one region, read from multiple regions — Menulis data ke wilayah terdekat, dan membaca dari replika terdekat di wilayah lain. Ini ideal untuk mempercepat akses jarak jauh. Misalnya, operasi tulis utama layanan diarahkan ke wilayah China (Hangzhou), dan replika read-only ditempatkan di wilayah China (Beijing) dan China (Shanghai) untuk memenuhi permintaan baca lintas wilayah berlatensi rendah. Mode yang direkomendasikan: aktif-pasif dengan replika read-only.
Write to multiple regions, read globally — Menulis ke beberapa wilayah menciptakan dataset global dan menyediakan pembacaan yang pada akhirnya konsisten. Ini cocok untuk skenario yang memerlukan akses ke dataset global, seperti distribusi profil pengguna game lintas wilayah dan sistem pesan sosial. Mode yang direkomendasikan: aktif-aktif.
Batasan
Tinjau batasan berikut sebelum membuat Global Table. Beberapa batasan menentukan apakah Global Table dapat dibuat dengan sukses. Untuk informasi lebih lanjut, lihat Limits.
Wilayah yang didukung — Global Table tersedia di wilayah China (Hangzhou), China (Shanghai), China (Qingdao), China (Beijing), China (Zhangjiakou), China (Hohhot), China (Ulanqab), China (Shenzhen), China (Guangzhou), dan China (Chengdu). Karena kepatuhan data dan alasan lain, Anda tidak dapat membuat Global Table lintas negara. Untuk daftar wilayah yang didukung Global Table, lihat Supported regions.
Jenis tabel — Hanya tabel data yang didukung. Sinkronisasi lintas wilayah untuk tabel time-series, search indexes, dan secondary indexes tidak didukung.
Jumlah replika — Satu Global Table mendukung hingga 10 wilayah.
Latensi sinkronisasi — RPO sinkronisasi biasanya dalam hitungan detik, tergantung pada wilayah, kondisi jaringan, dan volume data. Layanan ini tidak memberikan jaminan keandalan terhadap latensi transmisi data.
Konfigurasi tidak dapat diubah — Anda tidak dapat mengubah properti Global Table, seperti konfigurasi TTL atau kolom pradefinisi.
Tabel mode kolom — Tabel data yang sudah ada dibuat dalam mode kolom secara default dan tidak dapat langsung ditingkatkan menjadi Global Table.
Membuat ulang Global Table — Saat menggunakan fitur Global Table untuk kedua kalinya, tabel duplikat yang sudah ada tidak dapat membangun kembali hubungan sinkronisasi. Anda harus terlebih dahulu menghapus search indexes dan secondary indexes, lalu menghapus tabel tersebut, kemudian membuat Global Table. Penggunaan kedua kali mengacu pada skenario di mana tabel data yang sebelumnya merupakan bagian dari Global Table, tetapi hubungan sinkronisasinya telah dihapus, kemudian dibuat kembali sebagai Global Table.
Risiko penimpaan data — Dalam operasi tulis harian di mode aktif-aktif dan selama alih bencana aktif-pasif, tulis sinkron dan tulis pengguna mungkin memodifikasi baris data yang sama secara bersamaan. Baris dengan nomor versi lebih tinggi akan menimpa baris dengan nomor versi lebih rendah (LWW), dan data dari tulisan versi lebih rendah akan ditimpa atau dibuang.
Prasyarat
Instans telah dibuat di wilayah utama dan setiap wilayah replika target. Untuk petunjuknya, lihat Create an instance.
Tabel dasar memenuhi persyaratan konfigurasi Global Table. Untuk menggunakan tabel data yang sudah ada sebagai tabel dasar, pastikan tabel tersebut memenuhi persyaratan dalam tabel berikut.
| Parameter | Nilai yang diperlukan untuk Global Table | Deskripsi |
| Time to live | -1 | Data tidak pernah kedaluwarsa. |
| Max versions | 1 | Jumlah maksimum versi adalah 1. |
| Row versioning | Diaktifkan | Menetapkan tabel ke mode baris. Anda tidak dapat mematikan Enable Row Versioning setelah diaktifkan. Setelah row versioning diaktifkan, batasan berikut berlaku: satu baris mendukung hingga 256 kolom; Anda tidak dapat menentukan nomor versi secara manual saat menulis data (sistem menghasilkannya secara otomatis); dan setiap operasi Update terlebih dahulu membaca versi baris saat ini, yang menimbulkan sedikit beban baca tambahan. |
| Max version offset | MaxInt32 (2147483647) | Menetapkan offset versi ke nilai maksimum Int32, artinya tidak ada batasan. |
Tabel yang sudah ada dalam mode non-baris tidak mendukung pembuatan Global Table. Untuk menggunakan tabel tersebut, hubungi dukungan teknis untuk mengaktifkan fitur ini.
Buat Global Table
Buat tabel dasar di wilayah utama, lalu ubah menjadi Global Table dengan wilayah replika di wilayah target.
Langkah 1: Siapkan tabel dasar
Di wilayah utama, buat tabel data sebagai dasar untuk Global Table.
Buka halaman Instance Management.
Login ke Konsol Tablestore.
Di bilah navigasi atas, pilih kelompok sumber daya dan wilayah.
Di halaman Overview, klik alias instans, atau klik Manage Instance di kolom Actions instans.
Di tab Instance Details, klik Create Table.
Di kotak dialog Create Table, atur Data Table Name dan Primary Key.
Aktifkan sakelar Advanced Settings, lalu aktifkan sakelar Quick Set Global Table Dependency. Sistem secara otomatis mengonfigurasi dependensi yang diperlukan untuk Global Table, seperti dijelaskan dalam Prerequisites.
Untuk Data Table Name, masukkan
exampletable. Di bagian Primary Key, tambahkan dua kunci utama: atur nama kunci utama pertama menjadiuser_id, tipe menjadi String, dan tetapkan sebagai kunci partisi; atur nama kunci utama kedua menjadiregion_iddan tipe menjadi String.Klik Create.
Langkah 2: Buat Global Table
Ubah tabel dasar menjadi Global Table dan tambahkan wilayah replika. Setelah Global Table dibuat, sistem secara otomatis membuat tabel data yang sesuai di wilayah replika yang dipilih dan membuat saluran sinkronisasi data.
Di wilayah utama, pada tab Tables, klik Create Global Table di kolom Actions tabel dasar. Atau, klik nama tabel data, buka tab Global Table, lalu klik Create Sync Relationship untuk melanjutkan.
Di kotak dialog Create Global Table, atur parameter berdasarkan mode sinkronisasi yang Anda pilih.
Jika tabel data dengan nama yang sama dengan Global Table sudah ada di instans tujuan, pembuatan Global Table akan gagal.
Konfigurasi mode aktif-pasif
Di area Current Resource, atur Global Sync Mode menjadi Primary/Standby Mode (Cross-Region Replication).
Di area Target Table, pilih wilayah dan nama instans instans tujuan. Anda dapat menambahkan beberapa instans tujuan sekaligus. Setelah Global Table dibuat, sistem secara otomatis membuat tabel target di instans wilayah yang dipilih, dengan nama yang sama seperti tabel dasar saat ini.
Izin baca/tulis instans tujuan adalah Read-only.
Konfigurasi mode aktif-aktif
Di area Current Resource, atur Global Sync Mode menjadi Multi-Read Multi-Write (Cross-Region Replication).
Di area Target Table, pilih wilayah, nama instans, dan mode baca/tulis instans tujuan. Anda dapat menambahkan beberapa instans tujuan sekaligus. Setelah Global Table dibuat, sistem secara otomatis membuat tabel target di instans wilayah yang dipilih, dengan nama yang sama seperti tabel dasar saat ini.
Klik OK.
Untuk mengonfirmasi keberhasilan, di kotak dialog Create Global Table, klik View List. Global Table baru kemudian akan muncul di tab Global Table.
Langkah 3: Verifikasi dan gunakan Global Table
Setelah Global Table dibuat, verifikasi sinkronisasi data dengan melakukan pengujian baca dan tulis dasar.
Tulis data uji — Tulis data uji ke tabel data di wilayah utama.
Di wilayah utama, pada tab Tables, klik Query di kolom Actions tabel dasar.
Di tab Query Data, klik Insert.
Di kotak dialog Insert, atur kunci utama, klik Add Column untuk menambahkan atribut, lalu klik OK.
Verifikasi sinkronisasi data — Tunggu 1 hingga 3 detik, lalu kueri data di wilayah replika.
Di wilayah utama, pada tab Tables, klik Query di kolom Actions tabel dasar.
Di tab Global Table tabel dasar, klik nama tabel replika di wilayah replika.
Di tab Query Data tabel replika, lihat data yang disinkronkan dari tabel dasar. Tabel replika berisi data yang sama dengan yang Anda tulis di wilayah utama, yang mengonfirmasi bahwa sinkronisasi berhasil.
Operasi baca dan tulis Global Table
Operasi baca data dan tulis data pada tabel replika Global Table sama seperti pada tabel data standar.
Untuk operasi baca aktual, ambil endpoint instans tempat tabel replika yang sesuai berada.
Dalam mode aktif-pasif, hanya replika utama yang mengizinkan operasi tulis melalui endpoint instansnya. Semua replika lain bersifat read-only, kecuali selama alih bencana aktif-pasif.
Dalam mode aktif-aktif, semua replika yang dapat ditulis mengizinkan operasi tulis melalui endpoint instans masing-masing.
Dalam mode aktif-aktif, tulis sinkron dan tulis pengguna mungkin memodifikasi baris yang sama secara bersamaan. Baris dengan nomor versi lebih tinggi akan menimpa tulisan versi lebih rendah (LWW), dan data versi lebih rendah akan dibuang. Untuk informasi lebih lanjut, lihat Limits.
Kelola Global Table
Alihkan replika utama (mode aktif-pasif)
Alihkan replika utama hanya berlaku untuk Global Table dalam mode aktif-pasif. Dalam mode aktif-pasif, jika tabel replika utama gagal atau Anda perlu mengalihkan wilayah tulis, tetapkan tabel replika lain sebagai replika utama baru untuk terus memberikan layanan.
Selama alih bencana, baik tabel replika utama saat ini maupun tabel replika yang dipilih sebagai utama baru dapat dibaca dan ditulis, yang menciptakan risiko inkonsistensi data. Pastikan data konsisten sebelum mengalihkan jalur tulis aplikasi. Penulisan konkuren diselesaikan oleh algoritma LWW. Untuk informasi lebih lanjut, lihat Limits.
Di tab Global Table, klik Switch to Primary Table di kolom Actions tabel pasif.
Di kotak dialog Modify Primary/Standby Relationship, kirimkan tugas alih bencana tabel utama untuk memulai sinkronisasi data. Sinkronisasi berlangsung selama periode waktu yang bergantung pada faktor seperti volume data dan sumber daya sistem.
Di langkah Data Synchronization, klik Start Data Synchronization.
Di kotak dialog Primary/Standby Table Switch, klik View Details untuk memeriksa status RPO sinkronisasi.
Pastikan data di tabel utama dan pasif konsisten, lalu klik Confirm Write Endpoint Switch di kolom Sync Mode tabel apa pun.
Di langkah Application Layer Write Path Switch, pastikan sinkronisasi selesai dan Anda telah mengubah semua endpoint tulis di aplikasi ke endpoint utama baru. Lalu klik Complete Switch.
Setelah jalur tulis dialihkan, segera konfirmasi alih bencana tabel utama. Hal ini akan menonaktifkan kemampuan tulis tabel utama asli. Klik View di kolom Sync Mode tabel apa pun.
Di langkah Confirm Switch, klik Switch Primary Table.
Setelah alih bencana berhasil, replika utama asli menyediakan kemampuan read-only, dan replika utama baru menyediakan kemampuan baca dan tulis.
Untuk membatalkan alih bencana tabel aktif-pasif, klik Cancel Primary Table Switch, lengkapi konfirmasi pembatalan, lalu klik OK di kotak dialog konfirmasi.
Tambahkan wilayah global
Tambahkan satu atau beberapa wilayah global ke Global Table.
Di tab Global Table, klik Add Global Region di kolom Actions tabel replika.
Di kotak dialog Add Global Region, pilih wilayah dan nama instans instans tujuan. Untuk menambahkan beberapa wilayah global, klik Add Instance dan lanjutkan.
Klik OK.
Jika tabel data dengan nama yang sama dengan Global Table sudah ada di instans tujuan, penambahan wilayah global akan gagal.
Edit instans target (mode aktif-aktif)
Edit instans target Global Table untuk menambahkan instans target atau mengubah mode baca/tulis instans yang sudah ada.
Di tab Global Table, klik Edit di kolom Actions tabel replika.
Di kotak dialog Edit Global Table, lakukan salah satu operasi berikut:
Tambahkan instans target — Pilih wilayah, nama instans, dan mode baca/tulis instans tujuan. Untuk menambahkan beberapa wilayah global, klik Add Instance dan lanjutkan.
Ubah mode baca/tulis instans — Pilih mode baca/tulis instans yang sudah ada.
Klik OK.
Jika tabel data dengan nama yang sama dengan Global Table sudah ada di instans tujuan, penambahan wilayah global akan gagal.
Hapus hubungan sinkronisasi
Menghapus hubungan sinkronisasi menghentikan sinkronisasi data untuk tabel replika. Untuk menghentikan sinkronisasi untuk semua wilayah Global Table, hapus hubungan sinkronisasi untuk setiap tabel replika secara terpisah. Untuk menghentikan sinkronisasi hanya untuk wilayah tertentu, lakukan operasi tersebut hanya pada tabel replika wilayah tersebut.
Dalam mode aktif-pasif, Anda harus terlebih dahulu menghapus tabel pasif, lalu replika utama.
Mode aktif-pasif
Di tab Global Table, gunakan salah satu metode berikut untuk memulai penghapusan hubungan sinkronisasi:
Hapus satu replika — Klik Remove Sync di kolom Actions tabel replika.
Hapus beberapa replika secara batch — Pilih tabel replika yang akan dihapus, lalu klik Remove Sync di bawah daftar.
Sebelum menghapus tabel data, Anda harus secara manual menghapus search indexes yang terkait. Jika tidak, penghapusan tabel data akan gagal. Di kotak dialog konfirmasi, klik OK.
Mode aktif-aktif
Di tab Global Table, klik Unsync di kolom Actions tabel replika. Di kotak dialog konfirmasi, klik OK.
Sistem mulai menghapus hubungan sinkronisasi. Tunggu hingga proses selesai.
Integrasi pengembang
Anda dapat menggunakan Global Table melalui Java SDK.
Praktik terbaik
Ikuti praktik terbaik berikut saat menerapkan Global Table di lingkungan produksi:
Buat Global Table untuk tabel yang sudah ada — API baca dan tulis asli tetap tidak berubah. Data secara otomatis disinkronkan ke replika baru, yang dapat berbagi beban baca.
Buat Global Table dari awal — Finalisasi skema tabel, buat tabel dasar, lalu buat Global Table. Anda tidak dapat mengubah skema Global Table, jadi pastikan tabel dasar lolos semua pengujian sebelum membuat Global Table.
Bind dinamis replika baru — Anda dapat menambahkan replika baru secara dinamis saat menggunakan Global Table tanpa memengaruhi operasi baca dan tulis replika yang sudah ada. Replika baru berisi data terbaru di Global Table.
Lepaskan bind replika yang sudah ada — Jika tabel replika tidak lagi diperlukan, lepaskan bind-nya terlebih dahulu. Setelah dilepas bind-nya, replika tidak lagi menyinkronkan data dari replika lain, tetapi tabel dan datanya tetap disimpan. Untuk menghapus replika, hapus secara manual setelah melepas bind-nya.
Pilih kombinasi wilayah yang tepat — Pilih wilayah utama dan sekunder yang sesuai berdasarkan distribusi pengguna dan kebutuhan bisnis.
Rencanakan failover wilayah utama — Dalam mode aktif-pasif, ketika wilayah utama tidak tersedia, pertama-tama pilih tabel replika utama baru di konsol, lalu alihkan jalur tulis lapisan aplikasi. Setelah data disinkronkan ke tabel replika utama baru, alihkan menjadi tabel replika utama. Gangguan tulis singkat mungkin terjadi selama alih bencana, jadi terapkan mekanisme retry di sisi bisnis.
Kelola urutan dan waktu alih bencana aplikasi dan layanan untuk menghindari kehilangan data.
Penagihan
Tabel global dikenai biaya untuk penyimpanan data, operasi baca data, operasi tulis data, dan lalu lintas replikasi lintas wilayah.
Metode penagihan untuk penyimpanan data dan operasi baca/tulis pada setiap tabel replika sama seperti tabel data standar. Untuk informasi lebih lanjut, lihat Billing overview.
Biaya berikut berlaku:
-
Biaya penyimpanan data: Setiap tabel replika menyimpan data secara independen. Anda ditagih secara terpisah berdasarkan jumlah aktual data yang disimpan di wilayah masing-masing tabel.
-
Biaya baca data: Mencakup operasi baca lokal pada semua tabel replika.
-
Biaya tulis data: Operasi tulis hanya dapat dilakukan pada replika yang dapat ditulis. Biaya tulis hanya dikenakan pada tabel tempat data ditulis secara langsung. Tabel replika yang menyinkronkan data melalui replikasi asinkron tidak dikenai biaya tulis.
-
Biaya lalu lintas replikasi lintas wilayah: Dikenakan untuk lalu lintas transfer data lintas wilayah yang dihasilkan saat data direplikasi secara asinkron ke setiap tabel replika.
PentingBiaya lalu lintas replikasi lintas wilayah untuk setiap replika dihitung secara terpisah. Biaya dikenakan pada instans tempat data ditarik.
FAQ
Bagaimana cara mengubah konfigurasi Global Table, seperti mengatur TTL atau menambahkan kolom kustom?
Saat ini, Anda tidak dapat langsung mengubah konfigurasi Global Table. Untuk mengubah konfigurasi, pertama-tama lepaskan bind Global Table sepenuhnya, lakukan modifikasi, lalu buat ulang Global Table. Sebelum membuat ulang Global Table, arahkan semua operasi baca dan tulis ke replika utama untuk menghindari dampak pada operasi baca/tulis lapisan atas, lalu hapus replika lainnya.
Bagaimana cara menghapus tabel replika?
Pertama, lepaskan bind tabel replika dari Global Table. Setelah pelepasan bind berhasil, hapus tabel replika dari daftar tabel instans di konsol.
Dalam mode aktif-pasif, bagaimana cara membaca dari tabel replika instans non-utama?
Di tab Global Table tabel dasar di instans utama, lihat nama instans tabel replika terkait, lalu gunakan endpoint instans tersebut untuk membaca data.
Dalam mode baris, jika operasi UpdateRow memperbarui nilai di kolom berbeda dari baris yang sama di wilayah berbeda (misalnya a memperbarui lebih dulu dan b memperbarui setelahnya), seperti apa data baris tersebut?
Data baris pada akhirnya akan konsisten. Nilai akhir adalah data seluruh baris di replika b. Data spesifiknya dapat berupa salah satu dari dua kasus berikut:
Jika tabel replika saat ini belum menyinkronkan pembaruan a sebelum pembaruan b, baris berisi nilai b tetapi tidak berisi nilai a.
Jika tabel replika saat ini sudah menyinkronkan pembaruan a sebelum pembaruan b, baris berisi nilai b dan a.