Загрузка ссылочной модели в Google App Engine - PullRequest
1 голос
/ 24 февраля 2010

В Python, скажем, у меня есть модель класса A, у которой есть ReferenceProperty b для класса модели B, который имеет ReferenceProperty c для класса модели C.

Предполагая, что экземпляр A уже существует в хранилище данных, я могу получить его, сказав:

q = A.all()
a = q.get()

Как в этом сценарии работает загрузка сущностей? a.b извлекается при получении a? a.b.c извлекается при получении a.b? b и c извлекаются только при первом обращении к ним? Если бы я хранил a в memcache, были бы также сохранены b и c? Если нет, то когда они будут восстановлены, когда я получу a обратно из memcache?

Причина, по которой я задаю эти вопросы (помимо любопытства), заключается в том, что у меня есть объект, который я хотел бы сохранить в memcache, но он связан с другим объектом (который связан с другим объектом и т. Д.), И общий размер связанных объектов может быть более 1 МБ.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 24 февраля 2010

Модели будут разыменовываться при первом обращении к ним. Таким образом, вызов a.b получит b, а вызов a.b.c - c.

Посмотрите в блоге Ника Джонсона несколько советов о моделях memcahing: http://blog.notdot.net/2009/9/Efficient-model-memcaching

1 голос
/ 24 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...