• Официальный сайт SDK
  • Сайт с примерами кода

Определение индексов

Каждому запросу к данным хранилища, выполняемому приложением, должен быть сопоставлен соответствующий индекс. Для простых запросов, таких как загрузки объектов с фильтром по единственному свойству, индексы создаются платформой автоматически. Индексы для комплексных запросов должны быть определены в конфигурационном файле index.yaml. Его загрузка на сервер и создание соответствующих индексов происходит одновременно с публикацией приложения.

Сервер разработки (dev_appserver.py) автоматически производит добавление новых определений индексов в том случае, если приложение пытается выполнить запрос, требующий для своей работы соответствующий индекс. Вы можете изменить эти определения или добавить новые с путем редактирования этого файла.

Подсказка: Если вы проводите тестирование каждого заданного в приложении запроса с использованием сервера разработки, то все соответствующие индексы будут автоматически определены в файле index.yaml. Вам необходимо будет добавить только те индексы, какие не попали под запросы выполняемые приложением, работающем под управлением среды разработки.

Для дополнительной информации о индексах, смотрите раздел Запросы и индексы.

Далее следует пример файла index.yaml:

CmluZGV4ZXM6Ci0ga2luZDogQ2F0CmFuY2VzdG9yOiBubwpwcm9wZXJ0aWVzOgotIG5hbWU6IG5hbWUKLSBuYW1lOiBhZ2UKZGlyZWN0aW9uOiBkZXNjCi0ga2luZDogQ2F0CnByb3BlcnRpZXM6Ci0gbmFtZTogbmFtZQpkaXJlY3Rpb246IGFzYwotIG5hbWU6IHdoaXNrZXJzCmRpcmVjdGlvbjogZGVzYwotIGtpbmQ6IFN0b3JlCmFuY2VzdG9yOiB5ZXMKcHJvcGVydGllczoKLSBuYW1lOiBidXNpbmVzcwpkaXJlY3Rpb246IGFzYwotIG5hbWU6IG93bmVyCmRpcmVjdGlvbjogYXNjCg===

Данные в файле index.yaml указываются в формате разметки YAML. Для дополнительной информации об этом языке посетите сайт YAML.

Подсказка: Язык разметки YAML поддерживает использование комментариев. Все строки, начинающиеся с символа # будут проигнорированы:
# Это комментарий.

Формат файла index.yaml

Файл index.yaml имеет единственный элемент списка с именем indexes. Каждый элемент этого списка соответствует одному индексу определенному для приложения.

Каждая запись об индексе имеет следующие элементы:

kind

Тип объекта в запросе. Обычно является именем класса-наследника класса Model, определяющего модель для объектов. Этот элемент является обязательным.

properties

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

Каждый элемент этого списка имеет следующих членов:

name

Имя свойства.

direction

Направление сортировки, может быть либо asc для задания по возрастанию или desc - по убыванию. Требуется только для свойств, указываемых в порядке сортировки запроса и должно совпадать с соответствующим направлением. По умолчанию считается, что указано asc.

ancestor

Значение yes, если запрос содержит условие совпадения по предку объекта (задан с помощью метода Query.ancestor() или выражения языка GQL ANCESTOR IS). По умолчанию no.

Автоматическое и ручное задание индексов

Когда сервер разработки добавляет определение новых индексов в файл index.yaml, он помещает их ниже следующей строки, создавая ее при необходимости:

CiMgQVVUT0dFTkVSQVRFRAo==

Сервер разработки считает, что все определения индексов ниже этой строки были сгенерированы автоматически и может вносить в них свои изменения при выполнении приложением запросов.

Все определения, содержащиеся до этой строки, считаются заданными разработчиком вручную и их изменения системой не производятся. Сервер разработки выполняет все изменения в строках ниже этой и делает это только в том случае, если весь файл index.yaml не содержит определения индекса, требуемого для выполнения запроса приложением. Для того, чтобы взять под свой контроль автоматическое определение индексов, переместите их выше этой строки.