Каковы скорости сравнения NDB и DB (в хранилище данных с высокой репликацией)?
Взято из Обзор Python NDB:
Когда приложение считывает объект, этот объект автоматически кэшируется; это дает быстрые (и недорогие) чтения для часто читаемых сущностей.
...
Функция NDB, которая записывает данные (например, put()), возвращается после недействительности кеша; Фаза Применить происходит асинхронно.
При просмотре на Youtube Google I/O 2011: больше 9s Пожалуйста: под обложками хранилища данных высокой репликации, в 13: 11-иш, средние задержки:
Мастер/ведомый:
- Читать: 15ms
- Запись: 20 мс
Высокая репликация:
- Читать: 15ms
- Запись: 45 мс
Насколько значительно NDB влияет на эти скорости, с точки зрения приложения?
Изменить: В особенности интересно узнать статистику времени (в миллисекундах).
Дополнительный кредит: я также слышал, что Ник Джонсон ссылался на запросы, занимающие около 160 мс каждый (в 2009 году) [link]
Предоставляет ли NDB любые преимущества по скорости при запросах?
Ответы
Ответ 1
Вам придется ориентироваться на себя - времена зависят от многих факторов, таких как размер сущности и сложность: больше свойств или больше элементов в повторяющихся свойствах → более сложный.
Цифры, которые вы цитируете, действительно старые и, вероятно, больше не отражают реальность; опыт большинства пользователей заключается в том, что HRD в среднем не медленнее, чем M/S (отчасти потому, что M/S имеет гораздо более высокую изменчивость).
Здесь были некоторые тесты NDB: http://code.google.com/p/appengine-ndb-experiment/issues/detail?id=118 - но он не сравнивает числа со старым db.
Вы можете использовать Appstats для быстрого выполнения некоторых операций в реальном приложении.
Ответ 2
С помощью NDB ваши вызовы хранилища данных отображаются с точки зрения вашего приложения значительно быстрее.
READ: Лучший сценарий, чтение делается из кеша экземпляра или memcache. В большинстве случаев это будет значительно быстрее, чем чтение из хранилища данных.
WRITE: метод put/write NDB возвращается сразу после недействительности кеша. Это быстрее, чем обычная запись. Итак, с точки зрения вашего приложения, это довольно быстро. Фактическая запись, однако, выполняется асинхронно.
NDB vs DB (высокая репликация): с точки зрения скорости с точки зрения вашего приложения, NDB должен быть явным выигрышем.