Даже со всем, что я знаю о хранилище данных AppEngine, я не знаю ответа на этот вопрос. Я пытаюсь избежать необходимости писать и запускать весь код, который потребуется, чтобы понять это, надеясь, что кто-то уже знает ответ.
У меня есть код вроде:
class AddlInfo(db.Model)
user = db.ReferenceProperty(User)
otherstuff = db.ListProperty(db.Key, indexed=False)
И создайте запись с помощью:
info = AddlInfo(user=user)
info.put()
Чтобы получить этот объект, я могу сделать что-то вроде:
# This seems excessively wordy (even though that doesn't directly translate into slower)
info = AddlInfo.all().filter('user =', user).fetch(1)
или я мог бы сделать что-то вроде:
class AddlInfo(db.Model)
# str(user.key()) is the key to this record
otherstuff = db.ListProperty(db.Key, indexed=False)
Творение выглядит так:
info = AddlInfo(key_name=str(user.key()))
info.put()
А затем получить информацию с помощью:
info = AddlInfo.get(str(user.key()))
Мне не нужно свойство reference_property в AddlInfo (в первую очередь я попал туда, используя объект пользователя). Что быстрее/менее ресурсоемко?
==================
Часть того, почему я делал это таким образом, заключается в том, что другие вещи могут быть списком из более чем 100 ключей, и они мне нужны только иногда (вероятно, менее чем в 50% случаев). Я пытался сделать его более эффективным, не загружая эти 100+ ключей по каждому запросу.....