Які наслідки полімоделей щодо продуктивності порівняно зі звичайними моделями Bigtable в Google App Engine?


12

Що дає найкращі показники в регулярному використанні Google App Engine, полімоделі чи звичайній моделі "Bigtable"?

Полімодель, фактично, створює стовпчик у батьківській таблиці під назвою "class", який забезпечує відстеження спадщини. Тоді як звичайний Bigtable, успадкований від батьківського класу, створює нову і окрему структуру даних, не маючи можливості запитувати батьків і знаходити всіх дітей усіх підтипів класів.

Відповіді:


3

Напевно, є різниця в продуктивності, але вона, мабуть, досить мала.

Ось що я знайшов (усе на основі Google Документів для Python ).

  1. BigTable не підтримує інформацію PolyModel в оригінальній формі. Натомість він реалізований за допомогою властивості 'class'. Отже, коли ви намагаєтеся здійснити пошук, наприклад, знайти базовий клас, ви будете здійснювати пошук за цим властивістю 'class'.

  2. У всіх запитах, що використовують клас PolyModel, застосовується додатковий фільтр, який фільтрує даний клас (використовуючи властивість 'class').

  3. Будь-які індекси, створені для класу PolyModel, повинні враховувати додатковий стовпець "class".

По суті, клас PolyModel самостійно піклується про властивість 'class', вставляючи їх у запити та використовуючи для інших запитів. Крім цього, він працює ідентично стандартному використанню BigTable.

Отже, різниця насправді просто додавання та підтримка одного додаткового стовпця.

Чи є різниця в продуктивності? Так, напевно, так. Кожен стовпець, який ви додасте до будь-якої системи баз даних, матиме вплив на продуктивність. Але, чи це суттєво? Напевно, ні.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.