Konsistensi Cloud Storage

Halaman ini menjelaskan operasi Cloud Storage mana yang sangat konsisten dan mana yang memiliki konsistensi tertunda. Dalam hal objek yang dapat di-cache dan dapat dibaca secara publik, Anda mengontrol seberapa konsisten operasi pada objek.

Operasi yang sangat konsisten

Cloud Storage memberikan konsistensi global yang kuat untuk operasi berikut:

  • Daftar bucket
  • Bucket read-after-create
  • Bucket read-after-metadata-update
  • Bucket read-after-delete
  • Read-after-write objek
  • Read-after-metadata-update objek
  • Read-after-delete objek
  • Daftar objek

Saat Anda menulis objek ke Cloud Storage, misalnya saat mengupload, menulis, atau menyalin objek, objek tersebut segera tersedia untuk dibaca dan operasi metadata segera setelah Anda menerima respons sukses terhadap penulisan. Hal ini berlaku untuk semua bucket dan semua class penyimpanan, dan ini berlaku untuk pembuatan objek baru dan penggantian objek yang ada. Cloud Storage juga menawarkan konsistensi baca-setelah-buat, baca-setelah-perbarui-metadata, baca-setelah-hapus, dan listingan untuk resource seperti folder dan folder terkelola.

Karena penulisan sangat konsisten, Anda tidak akan pernah menerima respons 404 Not Found atau data yang tidak berlaku untuk operasi read-after-write objek atau read-after-metadata-update objek, bahkan untuk bucket yang terletak di dual-region atau multi-region. Dalam kasus yang jarang terjadi, jika data Anda belum direplikasi di seluruh region, tetapi lokasi tempat objek Anda pertama kali ditulis menjadi tidak tersedia, upaya untuk mengakses objek akan menampilkan respons error 500 yang dapat dicoba lagi.

Konsistensi global yang kuat juga meluas ke operasi penghapusan pada objek. Jika permintaan penghapusan berhasil, upaya segera untuk mendownload objek atau metadatanya akan menghasilkan kode status 404 Not Found. Anda mendapatkan error 404 karena objek sudah tidak lagi ada setelah operasi penghapusan berhasil.

Daftar bucket dan daftar objek sangat konsisten: saat Anda membuat bucket atau objek, lalu segera menjalankan operasi list yang relevan, bucket atau objek yang baru dibuat akan muncul dalam daftar yang ditampilkan.

Untuk bucket, meskipun update metadata sangat konsisten untuk operasi baca setelah update metadata, perubahan konfigurasi yang dihasilkan mungkin memerlukan waktu untuk diterapkan. Misalnya, jika mengaktifkan pembuatan versi objek di bucket, Anda harus menunggu minimal 30 detik sebelum menghapus atau mengganti objek.

Demikian pula untuk kunci HMAC, ada penundaan hingga 3 menit antara saat Anda meminta untuk mengubah status kunci dan saat perubahan status diterapkan. Misalnya, jika menonaktifkan kunci HMAC, Anda harus menunggu setidaknya 3 menit sebelum membuat permintaan untuk menghapus kunci tersebut, karena upaya untuk melakukannya dalam 3 menit pertama dapat gagal.

Operasi yang konsistennya tertunda

Operasi berikut memiliki konsistensi yang tertunda:

  • Memberikan akses atau mencabut akses dari resource.
  • Membuat ulang bucket setelah dihapus.

Biasanya perlu waktu sekitar satu menit hingga operasi ini diterapkan. Dalam beberapa kasus, mungkin diperlukan waktu beberapa menit lebih lama.

Sebagai contoh perilaku yang dapat muncul dari konsistensi yang tertunda, jika Anda menghapus akses pengguna ke bucket, perubahan ini akan langsung tercermin dalam metadata untuk bucket tersebut; namun, pengguna mungkin masih memiliki akses ke bucket selama waktu yang singkat.

Bucket yang dibuat ulang setelah penghapusan mungkin memerlukan waktu beberapa menit agar dapat diakses.

Kontrol dan konsistensi cache

Objek dalam cache yang dapat dibaca secara publik mungkin tidak menunjukkan konsistensi yang kuat. Jika Anda mengizinkan objek untuk di-cache, dan objek tersebut berada dalam cache saat diperbarui atau dihapus, objek yang di-cache tidak akan diperbarui atau dihapus hingga masa aktif cache-nya berakhir.

Masa aktif cache objek ditentukan oleh metadata Cache-Control yang terkait dengan objek tersebut. Metadata Cache-Control dapat ditetapkan menggunakan header permintaan Cache-Control yang disertakan dalam upload awal objek, atau dalam pembaruan metadata objek berikutnya. Karena Anda mengontrol metadata Cache-Control, Anda juga mengontrol sejauh mana objek yang di-cache sudah konsisten. Selain itu, meskipun permintaan untuk objek dapat menyertakan header Cache-Control-nya sendiri, header ini diabaikan oleh Cloud Storage jika ditetapkan untuk menghindari konten yang disimpan dalam cache.

Operasi atomik

Cloud Storage memberikan jaminan atomitas untuk sebagian besar operasi yang melibatkan setiap objek, seperti mengupload objek, memperbarui metadata objek, menimpa objek, dan menghapus objek.

Permintaan batch, yang menggabungkan setiap operasi menjadi satu permintaan, tidak bersifat atomik, karena beberapa operasi yang terdapat dalam batch dapat gagal sementara yang lainnya berhasil.

Caching dapat menyebabkan Anda menerima versi objek yang sudah tidak berlaku, dan jika Anda melakukan pembacaan rentang tanpa menentukan nomor generasi, data Anda mungkin rusak jika objek ditimpa di antara pembacaan rentang berturut-turut. Sebagai praktik terbaik, gunakan prasyarat untuk memastikan Anda mengambil versi objek yang benar.

Langkah berikutnya