Что такое «родительский ключ» хранилища данных Google App Engine? - PullRequest
3 голосов
/ 15 марта 2012

Что такое «родительский ключ», используемый в хранилище данных Google App Engine и для чего он используется?

Ответы [ 3 ]

2 голосов
/ 15 марта 2012

Объект в хранилище данных может дополнительно иметь родительский объект;«родительский ключ» - это ключ родительского объекта.

Первоначально (и все же в хранилище данных master-slave) транзакции были возможны только среди объектов в той же группе объектов, которая является набором объектовс общим предком лица.В хранилище данных HR доступны транзакции между группами объектов, хотя только для максимум 5 групп объектов.

Таким образом, родительские объекты используются для создания групп объектов, которые будут использоваться в транзакциях.Обратите внимание, что наличие слишком больших групп объектов может серьезно ограничивать скорость записи, поскольку при записи в один объект в группе вся группа по существу блокируется;попытка сделать слишком много записей в одну группу сущностей приводит к освобождению от конкуренции в хранилище данных.

2 голосов
/ 15 марта 2012

Родительские ключи используются для создания групп объектов. Когда один или несколько объектов хранилища данных имеют общего предка, считается, что они являются частью одной и той же группы объектов.

Это вступает в игру с точки зрения того, как вы пишете операции транзакционного хранилища данных. Если все изменяемые сущности не являются частью одной и той же группы сущностей, необходимо указать, что межгрупповая транзакция происходит.

2 голосов
/ 15 марта 2012

Чтение свыше это , вероятно, поможет вам.

Из документации:

Чтобы назначить родителя сущности, используйте аргумент parent для модели конструктор класса при создании дочерней сущности. Ценность этого аргумент может быть самой родительской сущностью или ее ключом; вы можете получить ключ, вызывая метод key () родительского объекта. Следующий пример создает сущность вида Address и показывает два способа обозначения Сущность сотрудника в качестве родителя:

#Create Employee entity
employee = Employee()
employee.put()

#Set Employee as Address entity 's parent directly...
address = Address(parent=employee)

# ...or using its key
e_key = employee.key()
address = Address(parent=e_key)

# Save Address entity to datastore
address.put()​
...