All Products
Search
Document Center

Tablestore:Versi data dan TTL

Last Updated:May 07, 2026

Gunakan versioning data dan Time to Live (TTL) untuk mengelola data secara efisien, mengurangi penggunaan penyimpanan, serta menekan biaya penyimpanan.

Max versions

Max Versions menentukan jumlah maksimum versi data yang disimpan untuk setiap kolom atribut. Jika jumlah versi dalam suatu kolom atribut melebihi batas ini, sistem akan menghapus versi terlama secara asinkron.

Penting

Saat ini, Tablestore tidak menerapkan batasan pada Max Versions. Namun, demi kinerja dan kegunaan optimal, kami merekomendasikan agar jumlah versi tidak melebihi 500.

Jika Anda tidak menentukan parameter Max Versions saat membuat tabel data, nilainya secara default diatur ke 1. Anda dapat mengubah nilai ini nanti dengan memanggil operasi UpdateTable.

Versi data yang melebihi batas Max Versions dianggap tidak valid. Anda tidak dapat membaca versi tersebut, meskipun sistem belum menghapusnya.

  • Jika Anda mengurangi nilai Max Versions, sistem akan menghapus secara asinkron versi lama yang kini melebihi batas baru tersebut.

  • Jika Anda menambah nilai Max Versions, versi lama yang sebelumnya tidak dapat diakses mungkin kembali dapat dibaca jika berada dalam batas baru dan belum dihapus.

Nomor versi

Setelah Anda mengonfigurasi Max Versions untuk tabel data, Tablestore akan membuat versi baru dari suatu nilai setiap kali Anda memperbaruinya di kolom atribut. Versi ini diberi nomor versi berupa timestamp dalam milidetik.

Saat menulis data ke kolom atribut, Anda dapat menentukan nomor versi sendiri atau membiarkan sistem menghasilkannya secara otomatis. Karena nomor versi berbasis timestamp milidetik, nilai tersebut harus dibagi 1.000 agar dikonversi ke detik untuk perhitungan TTL dan Max Version Offset.

  • Saat sistem menghasilkan nomor versi secara otomatis, sistem menggunakan waktu saat ini sebagai timestamp milidetik yang dihitung dari 1970-01-01 00:00:00 UTC.

  • Saat Anda menentukan nomor versi kustom, nilainya harus berupa timestamp milidetik 64-bit yang berada dalam rentang versi yang valid.

Nomor versi memungkinkan fitur-fitur berikut:

  • TTL

    Nomor versi dapat digunakan untuk menentukan siklus hidup nilai dalam kolom atribut. Sistem akan menghapus versi data secara asinkron begitu usianya melebihi TTL yang dikonfigurasi.

    Misalnya, jika suatu versi data memiliki nomor versi 1468944000000 (yang sesuai dengan 2016-07-20 00:00:00 UTC+8) dan TTL tabel data diatur ke 86400 (satu hari), versi ini kedaluwarsa pada 2016-07-21 00:00:00 UTC+8, dan sistem akan menghapusnya secara asinkron.

  • Baca data berdasarkan versi

    Saat membaca data baris, Anda dapat menentukan jumlah maksimum versi yang ingin dibaca per kolom atau rentang tertentu dari nomor versi. Untuk informasi selengkapnya, lihat Baca data.

TTL

TTL adalah properti tabel data yang menentukan periode retensi data dalam satuan detik. Sistem akan menghapus versi data dalam kolom atribut secara asinkron ketika usianya melebihi TTL yang dikonfigurasi. Jika semua versi data di seluruh kolom atribut suatu baris kedaluwarsa, sistem akan menghapus seluruh baris tersebut secara asinkron.

Misalnya, jika TTL tabel data diatur ke 86400 (satu hari), maka pada 2016-07-21 00:00:00 UTC+8, semua data kolom atribut dengan nomor versi kurang dari 1468944000000 kedaluwarsa. Timestamp ini sesuai dengan 2016-07-20 00:00:00 UTC+8 setelah dikonversi ke detik. Sistem kemudian akan menghapus data yang kedaluwarsa tersebut secara asinkron.

Jika Anda tidak mengatur TTL saat membuat tabel data, nilainya secara default diatur ke -1, artinya data tidak pernah kedaluwarsa. Anda dapat mengubah TTL nanti dengan memanggil operasi UpdateTable.

Penting

TTL tabel data dan TTL indeks sekunder bersifat independen. Namun, TTL tabel data harus lebih besar dari atau sama dengan TTL indeks sekundernya. Saat mengubah TTL tabel data yang memiliki indeks sekunder, ikuti langkah-langkah berikut sesuai skenario Anda:

  • Jika TTL baru untuk tabel data lebih kecil daripada TTL indeks sekundernya, pertama-tama gunakan SDK untuk memanggil operasi UpdateTable guna mengubah TTL indeks sekunder menjadi nilai yang lebih kecil dari atau sama dengan nilai target. Setelah itu, ubah TTL tabel data ke nilai target.

  • Jika TTL baru untuk tabel data lebih besar dari atau sama dengan TTL indeks sekundernya, Anda dapat langsung mengubah TTL tabel data ke nilai target.

Data yang melebihi TTL-nya dianggap kedaluwarsa dan tidak dapat dibaca, meskipun sistem belum menghapusnya.

  • Jika Anda mengurangi nilai TTL, beberapa data dalam tabel data mungkin kedaluwarsa, dan sistem akan menghapus data kedaluwarsa tersebut secara asinkron.

  • Jika Anda menambah TTL, versi lama yang kedaluwarsa berdasarkan TTL sebelumnya mungkin kembali dapat dibaca jika berada dalam periode TTL baru dan belum dihapus.

Max version offset

Untuk mencegah data kedaluwarsa segera setelah ditulis—yang dapat terjadi jika timestamp kustom lebih lama daripada TTL tabel—Anda dapat mengonfigurasi Max Version Offset.

Max Version Offset adalah deviasi maksimum yang diizinkan, dalam satuan detik, antara nomor versi kustom dan waktu sistem saat ini. Nilainya berupa bilangan bulat positif.

Agar operasi penulisan berhasil, sistem memeriksa nomor versi data untuk setiap kolom atribut. Data hanya dapat ditulis jika nomor versinya, setelah dikonversi dari milidetik ke detik, berada dalam rentang versi yang valid yaitu [max{write_time - Max Version Offset, write_time - TTL}, write_time + Max Version Offset).

Misalnya, jika Max Version Offset tabel data adalah 86400 (satu hari), pada 2016-07-21 00:00:00 UTC+8, Anda hanya dapat menulis data dengan nomor versi lebih besar dari 1468944000000 (yang sesuai dengan 2016-07-20 00:00:00 UTC+8 setelah dikonversi ke detik) dan kurang dari 1469116800000 (yang sesuai dengan 2016-07-22 00:00:00 UTC+8 setelah dikonversi ke detik). Jika nomor versi untuk kolom atribut dalam suatu baris adalah 1468943999000 (yang sesuai dengan 2016-07-19 23:59:59 UTC+8 setelah dikonversi ke detik), operasi penulisan untuk baris tersebut gagal.

Jika Anda tidak mengonfigurasi Max Version Offset saat membuat tabel data, nilainya secara default diatur ke 86400. Anda dapat mengubah nilai ini nanti dengan memanggil operasi UpdateTable.

Metode konfigurasi

Anda dapat mengonfigurasi parameter seperti Max Versions dan TTL saat membuat tabel data. Anda juga dapat mengubah parameter ini setelah tabel dibuat. Contoh berikut menunjukkan cara mengubah konfigurasi tabel yang sudah ada.

Catatan

Untuk informasi tentang cara mengonfigurasi Max Versions atau TTL saat membuat tabel data, lihat Operasi tabel.

Konsol

Anda dapat menggunakan Konsol untuk mengubah Max Versions, TTL, dan Max Version Offset untuk tabel data.

  1. Masuk ke Konsol Tablestore.

  2. Pada halaman Overview, di kolom Actions untuk instans yang ingin Anda kelola, klik Manage Instance.

  3. Pada tab Instance Details, di bagian Tables, klik nama tabel data.

  4. Pada tab Basic Information, di bagian Description, klik Modify Attributes.

  5. Pada kotak dialog Modify Attributes, konfigurasikan parameter seperti dijelaskan dalam tabel berikut.

    Parameter

    Deskripsi

    Time to Live

    Periode retensi data dalam tabel data, dalam satuan detik. Saat usia data melebihi TTL yang dikonfigurasi, sistem akan menghapusnya secara otomatis.

    Nilai valid: nilai ≥ 86400 (satu hari) atau -1 (data tidak pernah kedaluwarsa).

    Penting

    Jika Anda menggunakan indeks pada tabel data, TTL harus memenuhi salah satu kondisi berikut:

    • TTL tabel data adalah -1 (data tidak pernah kedaluwarsa).

    • TTL tabel data bukan -1, dan pembaruan pada tabel data dinonaktifkan.

      Jika Anda telah membuat indeks untuk tabel data, Anda harus mengatur Allow Updates ke No sebelum mengubah TTL.

    Max Versions

    Jumlah maksimum versi yang disimpan untuk setiap kolom atribut. Saat jumlah versi melebihi batas ini, sistem akan menghapus versi terlama secara otomatis.

    Nilainya harus berupa bilangan bulat bukan nol.

    Penting

    Jika Anda menggunakan indeks pada tabel data, Max Versions harus diatur ke 1. Jika Anda telah membuat indeks untuk tabel data, Anda tidak dapat mengubah Max Versions.

    Max Version Offset

    Deviasi maksimum yang diizinkan, dalam satuan detik, antara nomor versi yang ditentukan dan waktu sistem saat ini. Nilainya harus berupa bilangan bulat positif.

    Data hanya dapat ditulis dengan sukses jika selisih antara nomor versi setiap kolom dan waktu penulisan berada dalam Max Version Offset yang dikonfigurasi.

    Rentang versi yang valid untuk kolom atribut adalah [max{write_time - Max Version Offset, write_time - TTL}, write_time + Max Version Offset).

    Allow Updates

    Menentukan apakah penulisan data menggunakan operasi UpdateRow diizinkan. Nilai default adalah Yes.

    Jika Anda telah membuat indeks untuk tabel data dan ingin mengubah TTL-nya, Anda harus terlebih dahulu mengatur Allow Updates ke No.

    Penting

    Untuk menggunakan fitur TTL pada Search Index, Anda harus mengatur parameter ini ke No, yang melarang penulisan data menggunakan operasi UpdateRow. Untuk informasi selengkapnya tentang TTL indeks pencarian, lihat TTL of search indexes.

  6. Klik OK.

CLI

Anda dapat menjalankan perintah berikut untuk mengubah konfigurasi.

Gunakan perintah alter untuk mengubah Max Versions atau TTL tabel data. Untuk informasi selengkapnya, lihat Perbarui tabel.

Contoh berikut mengubah TTL tabel data mytable menjadi 86400 detik (1 hari) dan mengatur Max Versions ke 1.

alter -t mytable --ttl 86400 --version 1

SDK

Anda dapat menggunakan Java SDK, Go SDK, Python SDK, Node.js SDK, .NET SDK, dan PHP SDK untuk memperbarui properti tabel seperti Max Versions, TTL, dan Max Version Offset. Contoh berikut menggunakan Java SDK untuk memperbarui tabel.

Contoh berikut mengatur Max Versions tabel data ke 5, TTL ke -1, dan Max Version Offset ke 86400.

private static void updateTable(SyncClient client) {
    // Waktu kedaluwarsa data, dalam detik. Nilai -1 berarti data tidak pernah kedaluwarsa.
    int timeToLive = -1;
    // Perbarui Max Versions ke 5.
    int maxVersions = 5; 
    // Perbarui Max Version Offset ke 86400, dalam detik.
    int maxTimeDeviation=86400;
    TableOptions tableOptions = new TableOptions(timeToLive, maxVersions,maxTimeDeviation);
    // Tetapkan nama tabel.
    UpdateTableRequest request = new UpdateTableRequest("<TABLE_NAME>");
    request.setTableOptionsForUpdate(tableOptions);
    client.updateTable(request);
}

Penagihan

  • Penggunaan beberapa versi data meningkatkan biaya penyimpanan karena Anda dikenai biaya untuk menyimpan nomor versi dan data setiap versi.

  • Pembersihan data berdasarkan TTL tidak dikenai biaya. Namun, mengaktifkan TTL menambahkan timestamp sebagai nomor versi ke setiap kolom atribut, yang meningkatkan penggunaan penyimpanan.

Untuk informasi selengkapnya, lihat Penyimpanan data.

FAQ