14

Взятые из Python NDB Overview:Каковы скорости сопоставления NDB и DB (в хранилище данных с высокой репликацией)?

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

...

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

Наблюдая на Youtube, Google I/O 2011: More 9s Please: Under The Covers of the High Replication Datastore, в 13: 11-иш, средняя латентность являются:

Master/Slave:

  • Read: 15мс
  • Написать: 20ms

High Replication:

  • Read: 15мс
  • Запись: 45ms

Как значительно это NDB влияет на эти скорости, от приложения Perspect ив?

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

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

ответ

10

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

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

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

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

+0

Спасибо за быстрый ответ! Меня особенно интересует время, в миллисекундах. Редактирование сообщения, чтобы отразить это сейчас. :) – wTyeRogers

+0

@wTyeRogers Если вы хотите знать точные цифры, вам придется делать свои собственные тесты. –

+0

@NickJohnson, удивительный; благодаря! Поскольку это мой первый пост переполнения стека, у меня есть вопрос относительно этикета, которого нет в FAQ: редактирую ли я запись Альберта, чтобы включить статистику, или я отправляю свой собственный индивидуальный ответ? (Это просто немного странно, чтобы опубликовать ответ на мой собственный вопрос.) – wTyeRogers

18

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

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

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

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

+4

Полезно знать для моего первого сообщения о переполнении стека! Я тайно надеялся, что вы будете одним из респондентов, учитывая ваше глубокое знание NDB и вашу способность анализировать статистику до смерти с помощью своего рентгеновского видения Python - смертельной комбинации для этого вопроса. _Thank you_ для выделения некоторых точек сложности, и ссылка очень полезна. – wTyeRogers