Tingkat konsistensi data
Kueri Datastore dapat memberikan hasilnya pada salah satu dari dua tingkat konsistensi:
- Kueri Sangat konsisten menjamin hasil terbaru, tetapi mungkin memerlukan waktu lebih lama untuk diselesaikan.
- Kueri Konsistensi tertunda umumnya berjalan lebih cepat, tetapi terkadang dapat menampilkan hasil yang sudah tidak relevan.
Dalam kueri yang memiliki konsistensi tertunda, indeks yang digunakan untuk mengumpulkan hasil juga diakses dengan konsistensi tertunda. Akibatnya, kueri tersebut terkadang dapat menampilkan entity yang tidak lagi cocok dengan kriteria kueri asli, sementara kueri yang memiliki konsistensi kuat selalu konsisten secara transaksi.
Konsistensi data kueri Datastore
Kueri menampilkan hasilnya dengan tingkat jaminan konsistensi yang berbeda, bergantung pada sifat kueri:
- Kueri ancestor (yang ada di dalam entity group) memiliki konsistensi kuat secara default, tetapi pada akhirnya dapat memiliki konsistensi tertunda dengan menetapkan kebijakan baca Datastore (lihat di bawah).
- Kueri non-ancestor selalu memiliki konsistensi tertunda.
Mengambil entity berdasarkan kunci, yang juga disebut "lookup by key", memiliki konsistensi kuat.
Menyetel kebijakan baca Datastore
Untuk meningkatkan performa, Anda dapat menetapkan kebijakan baca Datastore sehingga semua operasi baca dan kueri memiliki konsistensi tertunda. (API tersebut juga memungkinkan Anda menetapkan kebijakan konsistensi kuat secara eksplisit, tetapi setelan ini tidak akan memiliki dampak praktis karena kueri non-ancestor selalu memiliki konsistensi tertunda, terlepas dari kebijakannya.)
Anda juga dapat menetapkan batas waktu panggilan Datastore, yang merupakan waktu maksimum, dalam detik, yang mana aplikasi akan menunggu Datastore menampilkan hasil sebelum membatalkan dengan error. Batas waktu default adalah 60 detik. Saat ini, Anda tidak dapat menyetelnya lebih tinggi, tetapi Anda dapat menurunkannya untuk memastikan operasi tertentu gagal dengan cepat (misalnya, untuk menampilkan respons yang lebih cepat kepada pengguna). Untuk menetapkan kebijakan baca Datastore dan batas waktu panggilan di Python, Anda harus meneruskannya sebagai argumen ke metoderun()
, get()
, fetch()
, dan count()
dari classQuery
atau GqlQuery
. Contoh:
for result in Employee.all().run(limit=5,
read_policy=db.EVENTUAL_CONSISTENCY,
deadline=5):
# Body of iterative loop
Apa langkah selanjutnya?
- Pelajari cara menentukan hasil kueri dan mengontrol hasil kueri lebih lanjut.
- Pelajari batasan umum untuk kueri di Datastore.
- Pelajari query cursor, yang memungkinkan aplikasi mengambil hasil kueri dalam batch yang mudah.
- Pelajari sintaksis dasar dan struktur kueri untuk Datastore.