Каково сравнение скорости NDB с БД (в хранилище данных с высокой репликацией)? - PullRequest
14 голосов
/ 31 марта 2012

Взято из Python NDB Overview :

Когда приложение читает сущность, эта сущность автоматически кэшируется; это дает быстро (и недорого) читает для часто читаемых объектов.

...

Функция NDB, которая записывает данные (например, put ()), возвращает после аннулирования кэша;этап применения происходит асинхронно.

При просмотре на Youtube, Google I / O 2011: больше 9 секунд Пожалуйста: под крышками хранилища данных с высокой репликацией в 13: 11, среднее время ожидания:

Ведущий / Ведомый:

  • Чтение: 15 мс
  • Запись: 20 мс

Высокая репликация:

  • Чтение: 15 мс
  • Запись: 45 мс

Насколько существенно NDB влияет на эти скорости с точки зрения приложения?

Редактировать: Особенно любопытно узнать статистику по времени (в миллисекундах).

Дополнительный кредит: Я также слышал, что Ник Джонсон ссылался на запросы, занимающие около 160 мс каждый (в 2009 г.) [link] Предоставляет ли NDB какие-либо преимущества в скорости запросов?

Ответы [ 2 ]

18 голосов
/ 31 марта 2012

Вам придется самим сравнивать - время зависит от многих факторов, таких как размер и сложность объекта: больше свойств или больше элементов в повторяющихся свойствах -> более сложные.

Числа, которые вы цитируете, действительно старые и, вероятно, больше не отражают реальность; Опыт большинства пользователей заключается в том, что HRD в среднем не медленнее, чем M / S (отчасти потому, что M / S имеет гораздо более высокую вариабельность).

Здесь были сделаны некоторые тесты NDB: http://code.google.com/p/appengine-ndb-experiment/issues/detail?id=118 - но он не сравнивает числа со старыми БД.

Вы можете использовать Appstats для быстрого выполнения операций в реальном приложении.

10 голосов
/ 31 марта 2012

Использование NDB делает ваши вызовы хранилища данных, с точки зрения вашего приложения, значительно быстрее.

READ: лучший вариант, чтение производится из кэша экземпляра или memcache. В большинстве случаев это будет значительно быстрее, чем чтение из хранилища данных.

WRITE: метод put / write NDB возвращается сразу после аннулирования кэша. Это намного быстрее, чем обычная запись. Так что с точки зрения вашего приложения, это довольно быстро. Однако фактическая запись выполняется асинхронно.

NDB против DB (высокая репликация). С точки зрения скорости, с точки зрения вашего приложения, NDB должен быть явной победой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...