Вопрос по правилам расчета квот GAE

Меня интересуют поля «Datastore Write Operations» и «Datastore Read Operations».
К примеру, у меня имеется запись (entity), содержащая 10 полей. При считывании ее из базы, изменении каждого поля и последующей записи обратно в базу как будут учитываться операции? Как одна или как десять? Есть ли смысл объединять поля, скажем, в словари или в списки?
  • Вопрос задан
  • 2912 просмотров
Пригласить эксперта
Ответы на вопрос 3
avalak
@avalak
Resource Billing Rates
Правила расчёта в таблице «Costs for Datastore Calls»
Ответ написан
Комментировать
fishbone
@fishbone
Это не очевидно, но например в Python любая операция с сущностью db.Model считается операцией чтения/записи:

employee = Employee()
emplee.name = "John Smoth" # - операция записи
print emploee.name # - операция чтения

Был неприятно удивлен, когда первая же итерация фоновой задачи сожрала всю бесплатную квоту. Пришлось активно использовать Memcache и сериализацию данных в Blob поля. Удалось в сотню раз оптимизировать использование квоты.
Ответ написан
Комментировать
yurtaev
@yurtaev
После put() будет одна операция + n, где n кол-во индексов затронутые этим изменением. Очень рекомендую с самого начала использовать ndb модели у которых из коробки можно настроить прозрачное кэширование, следить за индексами т.к GAE строит для всех полей индекс что приводит к ситуациям когда индекс на порядок больше по размеру чем данные в БД (исключать все поля по которым не нужно искать), и везде где только возможно использовать асинхронные вызовы к API (не только к БД), это хоть не всегда снизит кол-во вызовов к БД но сильно сэкономит процессорное время.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы