0

документации Google говорит:GAE - Интерпретация хранилища данных индексирует пределы

Хранилище данных накладывает ограничения на количество и общий размер индексных записей, которые могут быть связаны с одним объектом. Эти ограничения являются большими, и большинство приложений не затрагиваются. Однако есть обстоятельства, при которых вы можете столкнуться с ограничениями.

У меня есть некоторые трудности для интерпретации этих слов (возможно, из-за моего невежества в отношении аргумента). По умолчанию Хранилище данных создает единый индекс для любого объекта (не определенного как unindexed). Поэтому, если я определяю сущности ПИЦЦУ как:

PIZZA{ 
    "name" : "somename"; 
    "price" : <someprice>; 
    "property3" : "..."; 
    ... 
    "propertyN" : "..."; 
} 

Тогда, когда я «положил» этот объект в хранилище данных, он создает N + 2 индексов (по одному для каждого свойства определенного).

Теперь я решил создать еще один объект PIZZA с свойствами M, а R этих свойств M отличается от N + 2, определенных в первом объекте.
Таким образом, база данных будет вставлять новую сущность в таблицы индексов свойств M-R, которые являются общими для первой PIZZA, и создает дополнительные R-индексы.

Теперь вопрос: лимиты индексов относятся к числу индексированных свойств любой энергии (в данном случае на N + 2) или по общему числу индексов, которые могут содержать объекты PIZZA? (в этом случае N + R)? или снова по общему числу индексов?

ответ

1

Этот лимит размера относится к числу полей индекса (rows times properties), к которым объект вносит значения свойств, а не количество индексов. При обращении только к встроенным (автоматическим) индексам это просто счет индексируемых свойств объекта, так как каждое значение свойства появляется только один раз в каждом встроенном индексе. Счет увеличивается, поскольку это свойство вносит вклад в пользовательские индексы для сложных запросов.

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

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

+0

Таким образом, я могу безопасно определить столько свойств, сколько хочу в любом объекте? (если я не преодолею ограничение размера сущности 1Mb) – LJSilver

+0

Я имею в виду, что в двух языках такого же типа я могу определить для каждого из них произвольные разные свойства? (различные свойства tboth, определенные в каждом из них и среди общего набора свойств) – LJSilver

+0

Да. Предел индексированного свойства не имеет отношения к двум объектам того же типа с наборами свойств disjunct. Встроенные индексы относятся к свойству + свойство (один для 'Pizza: crust_type', один для' Pizza: toppings'), они не являются традиционными таблицами, которые вы найдете в реляционной базе данных. Только пользовательские индексы имеют несколько свойств в виде столбцов. –

Смежные вопросы