Setiap entity dalam Datastore memiliki kunci yang secara unik mengidentifikasinya. Kunci ini terdiri dari komponen berikut:
- Namespace entity, yang memungkinkan multitenancy
- Jenis entity, yang mengategorikannya untuk tujuan kueri Datastore
- Jalur ancestor opsional yang mencari entity dalam hierarki Datastore.
ID untuk masing-masing entitas, yang dapat berupa
- string nama kunci
- ID numerik bilangan bulat
Karena ID adalah bagian dari kunci entity, ID-nya terkait secara permanen dengan entity dan tidak dapat diubah. Anda menetapkan ID ini dengan salah satu dari dua cara berikut:
- Tentukan string key name Anda sendiri untuk entity.
- Biarkan Datastore secara otomatis menetapkan ID numerik bilangan bulat ke entity.
Menentukan nama kunci untuk entitas
Untuk menetapkan nama kunci ke entity, berikan argumen stringID
yang tidak kosong ke
datastore.NewKey
:
Agar Datastore menetapkan ID numerik secara otomatis, gunakan argumen stringID
kosong:
Menetapkan ID
Anda dapat mengonfigurasi Datastore untuk menghasilkan ID otomatis menggunakan dua kebijakan ID otomatis yang berbeda:
- Kebijakan
default
menghasilkan urutan acak dari ID yang tidak digunakan yang kira-kira didistribusikan secara seragam. Setiap ID dapat memiliki maksimal 16 digit desimal. - Kebijakan
legacy
membuat urutan ID bilangan bulat yang lebih kecil dan tidak berurutan.
Jika Anda ingin menampilkan ID entity kepada pengguna, dan/atau bergantung pada urutannya, sebaiknya Anda menggunakan alokasi manual.
Menggunakan jalur ancestor
Entity dalam Cloud Datastore membentuk ruang terstruktur secara hierarkis yang mirip dengan struktur direktori sistem file. Saat membuat entity, Anda dapat memilih untuk menetapkan entity lain sebagai parent; entity barunya adalah turunan dari parent entity tersebut (perlu diperhatikan bahwa tidak seperti dalam sistem file, parent entity tidak harus benar-benar ada). Entity tanpa parent adalah root entity. Kaitan entity dan induknya bersifat permanen, dan tidak dapat diubah setelah entity tersebut dibuat. Cloud Datastore tidak akan pernah menetapkan ID numerik yang sama ke dua entity dengan parent yang sama, atau ke dua root entity (yang tidak memiliki parent).
Induk, induk dari induk, dan seterusnya dari suatu entity secara rekursif adalah ancestor-nya; turunannya, turunan dari turunannya, dan seterusnya adalah turunannya. Root entity dan semua turunannya termasuk dalam entity group yang sama. Urutan entity yang dimulai dengan root entity dan berlanjut dari parent ke turunan, yang mengarah ke entity tertentu, merupakan jalur ancestor entity tersebut. Kunci lengkap yang mengidentifikasi entity terdiri dari urutan pasangan jenis-ID yang menentukan jalur ancestor-nya dan berakhir dengan entity itu sendiri:
[Person:GreatGrandpa, Person:Grandpa, Person:Dad, Person:Me]
Untuk root entity, jalur ancestor kosong dan kuncinya hanya terdiri dari jenis dan ID entity itu sendiri:
[Person:GreatGrandpa]
Konsep ini diilustrasikan oleh diagram berikut:
Untuk menetapkan parent entity, gunakan argumen parent
ke
datastore.NewKey
. Nilai
argumen ini harus berupa kunci entity parent.. Contoh berikut
membuat entity jenis Address
dan menetapkan entity Employee
sebagai
induknya: