Это общий вопрос об индексации хранилища данных App Engine. Хранилище данных автоматически создает индексы, которые можно использовать для простых запросов с одним свойством (запросов, не использующих составные ключи).
Зависят ли накладные расходы при создании этого индекса от базового типа данных свойства объекта?
По сути мой вопрос сводится к следующему:
def Person(db.Model):
name = db.StringProperty()
rollnumber = db.IntegerProperty()
Меньше ли накладные расходы на индексирование свойства rollnumber по сравнению со свойством name?
Ответ 1 · рейтинг 5 · Nick Johnson
Пространство, необходимое для индексации значения, состоит из:
- Размер самого значения,
- Если это переменная длина, например строка, от 1 до 3 байтов для хранения длины значения.
- Размер имени (например, 'rollnumber') плюс, опять же, несколько байтов для хранения длины.
- Размер ключа объекта
- Несколько дополнительных байтов служебных данных
Единственная удивительная вещь здесь заключается в том, что имя сохраняется с каждым проиндексированным свойством. Это связано с тем, что в хранилище данных нет статически определенных имен столбцов - нет схемы, поэтому ее необходимо хранить с каждым индексированным значением.