Автоматические индексы для расширенных свойств в движке приложения Google для Python - PullRequest
3 голосов
/ 26 января 2011

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

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

Кто-нибудь знает, как автоматически создавать индексы для динамических свойств моделей Expando после загрузки в ядро ​​приложения? Если нет, может кто-нибудь сказать мне, почему расширение Expando является динамической конструкцией, когда оно не позволяет создавать новые свойства, по которым можно искать или сортировать, только свойства, которые нельзя найти или отсортировать.

1 Ответ

4 голосов
/ 27 января 2011

Все свойства автоматически индексируются для простых запросов. Простые запросы, в данном случае, это те, которые:

  1. Используйте только фильтры равенства, без фильтров сортировки или неравенства.
  2. Имейте фильтр неравенства или порядок сортировки для одного поля, без других фильтров.

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

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

...