2017-01-13 2 views
0

Модель данных, которую я планирую, будет содержать несколько полей свойств, в том числе свойство категории/тегов, которое будет списком/массивом множества тегов.Индексирование только отдельных значений в массивах свойств (вместо индексации каждой комбинации этих значений) в хранилище данных Google

Я планирую запрашивать по одной категории за раз. Меня не интересует индексация того, какие объекты имеют комбинации категорий, а именно отдельные категории.

Я НЕ ссылаюсь, просто не индексируя конкретное свойство.

Бонус Вопрос:

кажется Google хранилищу не нравится «монотонно возрастает» значения свойств (т.е. временные метки), потому что предположительно они делают горячие точки на машинах при формировании индексов. Так что бы просто сохранить текущую дату календаря? Я мог видеть, что создание еще большей «точки доступа», поскольку каждый объект в течение 24 часов имел бы такое же значение индекса для этого свойства, есть ли способ хранения некоторых данных о том, когда каждый объект был записан?

ответ

0

Действительно, не должно возникать проблем с созданием встроенного индекса, как указано в приведенном выше ответе. Тем не менее свойства со значениями массива могут вести себя в surprising ways. Для более чем одного фильтра все условия, определяемые фильтрами, должны удовлетворяться хотя бы одним из индивидуальных значений массива, чтобы он соответствовал запросу. Это не применяется в случае фильтров равенства.

Порядок сортировки также необычен: первое значение, указанное в индексе, определяет порядок сортировки объекта.

0

Я не думаю, что индекс свойства (aka Built-in Index) по свойству Array создает индекс с различными комбинациями значений. Я считаю, что каждое значение в массиве индексируется. Например, если у вас есть Книга с двумя тегами, индекс будет иметь две записи для каждого тега. Добавление другой книги с тремя тегами добавит еще 3 записи в индекс тегов. Этот индекс позволяет запрашивать книги на основе одного тега, а также нескольких тегов.

«Комбинация значений», о которой вы говорили, происходит, если вы создаете составной индекс, содержащий более одного типа массива (например, авторы и теги книги), и все/большинство книг имеют несколько авторов и несколько тегов.

У вас не должно возникнуть проблем со встроенным индексом в категории/теге.

На ваш другой вопрос об объекте индексирования, созданный/измененный метка времени, я вижу, что Best Practices говорит, чтобы избежать индексации такого свойства.

Не индексируйте свойства с монотонно увеличивающимися значениями (например, a Срочная метка NOW()). Поддержание такого индекса может привести к горячей точке , что воздействие Облака Datastore задержка для приложений с высоким чтением и писать цены

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

+0

Это не похоже на то, как индексирование работает с хранилищем данных Google, так как я создал несколько простых объектов, а количество индексов, сообщаемых для этих объектов, больше, чем то, что вы описали. , Если я что-то не понял. – SAM

+0

Кроме того, запрос «tag1» AND «tag2» действителен, но запрос «tag1» ИЛИ «tag2» недействителен. Который, кажется, придает уверенность в том, что индексы комбинации автоматически индексируются. Кроме того, это единственный метод, который я знаю, который будет масштабироваться полностью независимо от размера базы данных и вместо этого масштабируется с размером результатов. – SAM

+0

Когда вы говорите «количество индексов» - что именно вы имеете в виду? ИЛИ запросы еще не поддерживаются облачным хранилищем данных. –