Konsistensi Data dalam Kueri Datastore

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 di Java, Anda harus membuat Konfigurasi layanan Datastore (DatastoreServiceConfig), menggunakan class helper bertingkat DatastoreServiceConfig.Builder, lalu teruskan sebuah instance classReadPolicy. Contoh berikut menunjukkan cara menetapkan kebijakan baca, batas waktu panggilan, atau keduanya:

double deadline = 5.0;

// Construct a read policy for eventual consistency
ReadPolicy policy = new ReadPolicy(ReadPolicy.Consistency.EVENTUAL);

// Set the read policy
DatastoreServiceConfig eventuallyConsistentConfig =
    DatastoreServiceConfig.Builder.withReadPolicy(policy);

// Set the call deadline
DatastoreServiceConfig deadlineConfig = DatastoreServiceConfig.Builder.withDeadline(deadline);

// Set both the read policy and the call deadline
DatastoreServiceConfig datastoreConfig =
    DatastoreServiceConfig.Builder.withReadPolicy(policy).deadline(deadline);

// Get Datastore service with the given configuration
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(datastoreConfig);

Apa langkah selanjutnya?