Я работаю с Google App Engine, и у меня возникают некоторые проблемы с производительностью некоторых моих запросов к данным. Я читал, что проектирование хранилища данных App Engine отличается от работы с базами данных SQL, и я не уверен, что делаю это наилучшим образом. У меня есть два вопроса, чтобы попытаться встать на правильный путь:
В частности:
У меня есть тип Foo
и тип UserFoo
. Каждый UserFoo
является «экземпляром» соответствующего Foo
и содержит данные, относящиеся к этому экземпляру. Мой тип Foo
имеет свойство fooCode
, которое является уникальным идентификатором, и я сопоставляю каждый UserFoo
с каждым Foo
, используя их свойства fooCode
. Затем я оперирую каждым Foo с кодом, подобным следующему:
foos = Foo.all().filter('bar =', bar)
for foo in foos:
userFoo = UserFoo.all().filter('userKey =', user).filter('fooCode =', foo.fooCode)
Примечание: я использую fooCode
поверх ссылочного ключа, чтобы мы могли легко удалять и повторно добавлять новые Foo
s, и тогда не нужно будет повторно сопоставлять все соответствующие UserFoo
s.
В целом:
Каковы типичные подходы к разработке таблиц хранилища данных GAE и рекомендации по их использованию?