Statistik Datastore dalam layanan paket lama

Catatan: Developer yang membuat aplikasi baru sangat dianjurkan untuk menggunakan Library Klien NDB, yang memiliki beberapa manfaat dibandingkan dengan library klien ini, seperti menyimpan entity dalam cache secara otomatis melalui Memcache API. Jika saat ini Anda menggunakan Library Klien DB versi lama, baca Panduan Migrasi DB ke NDB

Datastore menyimpan statistik tentang data yang disimpan untuk aplikasi, seperti berapa banyak entity yang ada dari jenis tertentu atau berapa banyak ruang yang digunakan oleh nilai properti dari jenis tertentu. Anda dapat melihat statistik ini di konsol Google Cloud, pada halaman Dasbor.

Anda juga dapat mengakses nilai ini secara terprogram dalam aplikasi dengan membuat kueri entity bernama khusus menggunakan Datastore API. Setiap statistik dapat diakses sebagai entity yang nama jenisnya diawali dan diakhiri dengan dua garis bawah. Misalnya, setiap aplikasi memiliki tepat satu entity dari jenis __Stat_Total__ yang mewakili statistik tentang semua entity di Datastore secara total. Setiap entity statistik memiliki properti berikut:

  • count, jumlah item yang dipertimbangkan oleh statistik (bilangan bulat panjang)
  • bytes, ukuran total item untuk statistik ini (bilangan bulat panjang)
  • timestamp, waktu update statistik terbaru (nilai tanggal dan waktu)

Beberapa jenis statistik juga memiliki properti tambahan, yang tercantum di bawah.

Aplikasi Python dapat menggunakan class model yang disediakan oleh paket google.appengine.ext.db.stats untuk mengakses entity statistik.

from google.appengine.ext.db import stats

global_stat = stats.GlobalStat.all().get()
print 'Total bytes stored: %d' % global_stat.bytes
print 'Total entities stored: %d' % global_stat.count

Saat membuat entity statistik baru, sistem statistik tidak langsung menghapus entity statistik lama. Cara terbaik untuk mendapatkan tampilan statistik yang konsisten adalah dengan membuat kueri untuk entity GlobalStat dengan timestamp terbaru, lalu menggunakan nilai stempel waktu tersebut sebagai filter saat mengambil entity statistik lainnya.

Entity statistik disertakan dalam nilai statistik yang dihitung. Entity statistik menggunakan ruang berdasarkan jumlah jenis dan nama properti unik yang digunakan oleh aplikasi.

Sistem statistik juga akan membuat statistik khusus untuk setiap namespace Perlu diperhatikan bahwa jika aplikasi tidak menggunakan namespace Datastore, statistik khusus namespace tidak akan dibuat. Statistik khusus namespace dapat ditemukan di namespace yang khusus untuknya. Nama jenis untuk statistik khusus namespace diawali dengan __Stat_Ns_ dan memiliki akhiran yang sama dengan jenis statistik untuk seluruh aplikasi.

Aplikasi dengan ribuan namespace, jenis, atau nama properti memerlukan entity statistik dalam jumlah yang sangat besar. Untuk menjaga beban penyimpanan dan pembaruan statistik yang wajar, Datastore akan menurunkan entity statistik secara bertahap dalam urutan berikut:

  • statistik per namespace, per jenis, dan per properti: __Stat_Ns_PropertyName_Kind__, __Stat_Ns_PropertyType_PropertyName_Kind__
  • statistik per jenis dan per properti: __Stat_PropertyName_Kind__, __Stat_PropertyType_PropertyName_Kind__
  • statistik per namespace dan per jenis: __Stat_Ns_Kind__, __Stat_Ns_Kind_IsRootEntity__, __Stat_Ns_Kind_NotRootEntity__, __Stat_Ns_PropertyType_Kind__
  • statistik per jenis: __Stat_Kind__, __Stat_Kind_IsRootEntity__, __Stat_Kind_NotRootEntity__, __Stat_PropertyType_Kind__
  • statistik per namespace: __Stat_Namespace__, __Stat_Ns_Kind_CompositeIndex__, __Stat_Ns_PropertyType__, __Stat_Ns_Total__

Entity statistik ringkasan (__Stat_Kind_CompositeIndex__, __Stat_PropertyType__, __Stat_Total__) tidak pernah dihapus.

Berikut adalah daftar lengkap statistik yang tersedia:

Statistik Jenis Entity Statistik Deskripsi
semua entity __Stat_Total__
Class Python: GlobalStat
Entri khusus namespace:
__Stat_Ns_Total__
Class Python: NamespaceGlobalStat
Semua entity. Properti tambahan:

entity_bytes: Penyimpanan di tabel entity yang diukur dalam byte.
builtin_index_bytes: Penyimpanan dalam entri indeks bawaan yang diukur dalam byte.
builtin_index_count: jumlah entri indeks bawaan.
composite_index_bytes: Penyimpanan dalam entri indeks komposit yang diukur dalam byte.
composite_index_count: Jumlah entri indeks komposit.
semua entity dalam namespace __Stat_Namespace__
Class Python: NamespaceStat
Perhatikan bahwa entity __Stat_Namespace__ dibuat untuk setiap namespace yang ditemukan dan hanya ditemukan dalam namespace string kosong.
Semua entity dalam namespace.

subject_namespace, namespace yang direpresentasikan (string)
entity_bytes: Penyimpanan di tabel entity yang diukur dalam byte.
builtin_index_bytes: Penyimpanan dalam entri indeks bawaan yang diukur dalam byte.
builtin_index_count: jumlah entri indeks bawaan.
composite_index_bytes: Penyimpanan dalam entri indeks komposit yang diukur dalam byte.
composite_index_count: Jumlah entri indeks komposit.
semua entri dalam indeks yang ditentukan aplikasi __Stat_Kind_CompositeIndex__
Entri khusus namespace: __Stat_Ns_Kind_CompositeIndex__

Class Python: KindStat
Entri di tabel indeks komposit; satu entity statistik untuk setiap jenis entity yang disimpan. Properti tambahan:

index_id, ID indeks.
kind_name, nama jenis yang direpresentasikan (string)
entity sejenis __Stat_Kind__
Class Python: KindStat
Entri khusus namespace:
__Stat_Ns_Kind__
Class Python: NamespaceKindStat
Entity sejenis; satu entity statistik untuk setiap jenis entity yang disimpan. Properti tambahan:

kind_name, nama jenis yang direpresentasikan (string)
entity_bytes: Penyimpanan di tabel entity yang diukur dalam byte.
builtin_index_bytes: Penyimpanan dalam entri indeks bawaan yang diukur dalam byte.
builtin_index_count: jumlah entri indeks bawaan.
composite_index_bytes: Penyimpanan dalam entri indeks komposit yang diukur dalam byte.
composite_index_count: Jumlah entri indeks komposit.
root entity sejenis __Stat_Kind_IsRootEntity__
Class Python: KindRootEntityStat
Entri khusus namespace:
__Stat_Ns_Kind_IsRootEntity__
Class Python: NamespaceKindRootEntityStat
Entity sejenis yang merupakan root entity dari entity group (tidak memiliki induk ancestor); satu entity statistik untuk setiap jenis entity yang disimpan. Properti tambahan:

kind_name, nama dari jenis yang direpresentasikan (string)
entity_bytes: Penyimpanan di tabel entity yang diukur dalam byte.
non-root entity sejenis __Stat_Kind_NotRootEntity__
Class Python: KindNotRootEntityStat
Entri khusus namespace:
__Stat_Ns_Kind_NotRootEntity__
Class Python: NamespaceKindNotRootEntityStat
Entity sejenis yang bukan merupakan root entity dari entity group (memiliki induk ancestor); satu entity statistik untuk setiap jenis entity yang disimpan. Properti tambahan:

kind_name, nama dari jenis yang direpresentasikan (string)
entity_bytes: Penyimpanan di tabel entity yang diukur dalam byte.
properti dari suatu jenis __Stat_PropertyType__
Class Python: PropertyTypeStat
Entri khusus namespace:
__Stat_Ns_PropertyType__
Class Python: NamespacePropertyTypeStat
Properti jenis nilai di semua entity; satu entity statistik per jenis nilai. Properti tambahan:

property_type, nama jenis nilai (string)
entity_bytes: Penyimpanan di tabel entity yang diukur dalam byte.
builtin_index_bytes: Penyimpanan dalam entri indeks bawaan yang diukur dalam byte.
builtin_index_count: jumlah entri indeks bawaan.
properti dari suatu jenis per jenis __Stat_PropertyType_Kind__
Class Python: KindPropertyTypeStat
Entri khusus namespace:
__Stat_Ns_PropertyType_Kind__
Class Python: NamespaceKindPropertyTypeStat
Properti jenis nilai di seluruh entity dari jenis tertentu; satu entity statistik per kombinasi jenis dan jenis properti. Properti tambahan:

property_type, nama jenis nilai (string)
kind_name, nama jenis yang direpresentasikan (string)
entity_bytes: Penyimpanan di tabel entity yang diukur dalam byte.
builtin_index_bytes: Penyimpanan di indeks bawaan yang diukur dalam byte.
builtin_index_count: jumlah entri indeks bawaan.
properti dengan nama __Stat_PropertyName_Kind__
Class Python: KindPropertyNameStat
Entri khusus namespace:
__Stat_Ns_PropertyName_Kind__
Class Python: NamespaceKindPropertyNameStat
Properti dengan nama tertentu di seluruh entity dari jenis tertentu; satu entity statistik per kombinasi nama dan jenis properti yang unik. Properti tambahan:

property_name, nama properti (string)
kind_name, nama dari jenis yang direpresentasikan (string)
entity_bytes: Penyimpanan di tabel entity yang diukur dalam byte.
builtin_index_bytes: Penyimpanan dalam entri indeks bawaan yang diukur dalam byte.
builtin_index_count: jumlah entri indeks bawaan.
properti dari suatu jenis dan dengan nama __Stat_PropertyType_PropertyName_Kind__
Class Python: KindPropertyNamePropertyTypeStat
Entri khusus namespace:
__Stat_Ns_PropertyType_PropertyName_Kind__
Class Python: NamespaceKindPropertyNamePropertyTypeStat
Properti dengan nama tertentu dan jenis nilai tertentu di seluruh entity dari jenis tertentu; satu entity statistik per kombinasi nama properti, jenis nilai, dan jenis yang ada di Datastore. Properti tambahan:

property_type, nama jenis nilai (string)
property_name, nama properti (string)
kind_name, nama jenis yang direpresentasikan (string)
entity_bytes: Penyimpanan dalam tabel entity yang diukur dalam byte.
builtin_index_bytes: Penyimpanan dalam entri indeks bawaan yang diukur dalam byte.
builtin_index_count: jumlah entri indeks bawaan.

Beberapa statistik merujuk pada jenis nilai properti Datastore berdasarkan nama, sebagai string. Berikut adalah nama-nama tersebut:

  • "Blob"
  • "BlobKey"
  • "Boolean"
  • "Category"
  • "Date/Time"
  • "Email"
  • "Float"
  • "GeoPt"
  • "IM"
  • "Integer"
  • "Key"
  • "Link"
  • "NULL"
  • "PhoneNumber"
  • "PostalAddress"
  • "Rating"
  • "ShortBlob"
  • "String"
  • "Text"
  • "User"