Как я могу узнать, проиндексировано или не проиндексировано свойство сохраненной сущности? - PullRequest
1 голос
/ 09 февраля 2012

У меня есть несколько сущностей в хранилище данных, но я не знаю, проиндексированы или неиндексированы некоторые из их свойств. Как я могу узнать (с помощью консоли администратора или программно), проиндексировано или неиндексировано свойство хранимой сущности?

Ответы [ 4 ]

3 голосов
/ 09 февраля 2012

Если вы переключались между indexed=True и indexed=False для некоторых свойств с течением времени и у вас есть набор сущностей, записанных в обоих режимах, то у вас будут некоторые свойства, которые проиндексированы, а некоторые - нет. , Вы в этой ситуации?

Если у вас нет надежной истории в вашем коде, попытка определить, находитесь ли вы в этой ситуации, будет немного сложнее, в зависимости от того, сколько у вас объектов. Вы можете определить, находитесь ли вы в несогласованном состоянии, отметив, что запрос только для ключей в сущности возвращает другое количество ключей, чем запрос, который фильтрует по подозрительному свойству. Фильтр не найдет неиндексированные свойства. Если у вас много сущностей, вам придется каким-то образом отсеять подсчет (чтобы избежать задержки по длинному запросу, который возвращает множество сущностей).

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

3 голосов
/ 09 февраля 2012

По умолчанию каждая сущность индексируется (если только ее TextProperty или BlobProperty) вам необходимо (и нужно) установить свойство индексированного свойства на False, если вы не хотите, чтобы оно индексировалось (для повышения производительности и затрат на запись сущности).

В консоли администратора нет указания на то, проиндексировано ли свойство или нет. Вы можете попробовать выполнить "select * from EntityType order by Property" в GQL представлений хранилища данных и посмотреть, не сработает ли оно.

0 голосов
/ 09 февраля 2012

Взгляните на интерфейс " Индексы хранилища данных ", ссылка на который находится в левом меню навигации на панели инструментов механизма приложения.конкретные свойства, к которым был применен индекс.

0 голосов
/ 09 февраля 2012

Для составных индексов (т. Е. Определенных в datastore-indexes.xml или index.yaml) вы можете использовать низкоуровневый API для получения списка индексов, которые присутствуют в хранилище данных вашего приложения.

В GAE / J вам нужно будет вызвать DatastoreServiceFactory.getDatastoreService().getIndexes(), тогда как в Python ту же функцию предоставляет db.get_indexes().

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