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
- Pelajari cara menggunakan prasyarat untuk mencegah kondisi race.
- Pelajari lebih lanjut cara menyimpan cache di Cloud Storage.
- Pelajari rasio permintaan dan pedoman distribusi akses.