Каковы значения производительности полимоделей по сравнению с обычными моделями Bigtable в Google App Engine?


12

Что дает лучшую производительность при обычном использовании Google App Engine, полимодели или обычной модели Bigtable?

Полимодель фактически создает в родительской таблице столбец с именем «class», который обеспечивает отслеживание наследования. Принимая во внимание, что обычный Bigtable, унаследованный от родительского класса, создает новую и отдельную структуру данных, без возможности запросить родительский класс и найти всех дочерних элементов всех подтипированных классов.

Ответы:


3

Вероятно, есть разница в производительности, но она, вероятно, довольно мала.

Вот что я нашел (все основано на Google Docs для Python ).

  1. BigTable изначально не поддерживает информацию PolyModel. Вместо этого он реализован с использованием свойства 'class'. Таким образом, когда вы пытаетесь выполнить поиск, например, чтобы найти базовый класс, вы будете искать по этому свойству 'class'.

  2. Все запросы, которые используют класс PolyModel, имеют дополнительный фильтр, который фильтрует по заданному классу (используя свойство 'class').

  3. Любые индексы, созданные для класса PolyModel, должны учитывать дополнительный столбец «класс».

По сути, класс PolyModel заботится о свойстве class самостоятельно, вставляя его в запросы и используя для других запросов. Помимо этого, он работает идентично стандартному использованию BigTable.

Таким образом, разница заключается в добавлении и поддержании одного дополнительного столбца.

Есть ли разница в производительности? Да, наверное так. Каждый столбец, который вы добавляете в любую систему баз данных, будет влиять на производительность. Но важно ли это? Возможно нет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.