Попытка смоделировать некоторые высокосвязанные, но также и иерархические данные в обработчике приложения.
Вот пример:
Person:
Phone Numbers:
Number: 555-555-5555, Ext: 123, Notes: Work
Number: 444-444-4444, Ext: 456, Notes: Mobile
Один объект, содержащий структуры данных, хранящиеся в виде JSONblob:
Один из способов сделать это - сохранить коллекцию phone_numbers
в виде неиндексированного блоба текста JSON, а затем добавить свойство поиска, чтобы можно было запрашивать человека по номеру телефона:
p_entity = Person()
p_entity.phone_numbers = dbText(simplejson.dumps([{'Number':'555-555-5555', 'Ext':'123', 'Notes':'Work'},{'Number':'444-444-4444', Ext:'456', Notes:'Mobile'}]))
p_entity.phone_numbers_search_property = ['5555555555', '4444444444']
p_entity.put()
Несколько сущностей с родительско-дочерними отношениями:
Другим способом было бы использование дочерних и родительских сущностей:
person_entity = Person()
person_entity.put()
phone_entity1 = PhoneNumber(parent=person_entity)
phone_entity.Number = '5555555555'
phone_entity.Ext = '123'
phone_entity.Notes = 'Work'
phone_entity2 = PhoneNumber(parent=person_entity)
phone_entity.Number = '4444444444'
phone_entity.Ext = '456'
phone_entity.Notes = 'Mobile'
Вариант использования:
Это сильно связанные данные.Объект person содержит несколько телефонных номеров.Но телефонные звонки могут быть сделаны и с этих телефонных номеров.Записи телефонных звонков также должны ссылаться на эти телефонные номера.
Цель отношений между родителями и дочерними объектами:
После прочтения документации я был подТакое впечатление, что целью родительско-дочерних отношений было выполнение транзакций.
Однако могут ли они быть уместными в этом случае?Почти так же эффективно вытащить родителя и всех его дочерних элементов из хранилища данных, чтобы вытащить одну сущность с ее «потомками», вместо этого сохраненными в виде текстовых BLOB-объектов JSON?
Основной вопрос
Существует ли нормальный и общепринятый способ обработки данных такого рода в google app engine?