Незнание персистентности может масштабироваться?

Допустим, вы хотите обнаружить только мотоцикл и человека . внутри файла visualization_util.py, перейдите к def draw_bounding_box_on_image_array, есть функция:

  draw_bounding_box_on_image(image_pil, ymin, xmin, ymax, xmax, color,
                         thickness, display_str_list,
                         use_normalized_coordinates)

поместите этот вызов функции внутри условия, подобного этому

if (display_str_list[0][0:3]=="per" or display_str_list[0][0:3]=="mot"):

  draw_bounding_box_on_image(image_pil, ymin, xmin, ymax, xmax, color,
                         thickness, display_str_list,
                         use_normalized_coordinates)

здесь «per» это первые три буквы «лица» и «мот» это первые три буквы мотоцикла. Таким образом, вы можете обнаружить желаемый объект из всех других

9
задан 3 revs, 2 users 100% 13 February 2009 в 14:10
поделиться

3 ответа

Это - хороший вопрос, и по моему скромному мнению они могут масштабироваться точно так же как любой пользовательский DAL. Я только использовал nHibernate, таким образом, я сфокусируюсь только на нем и функции, которые он имеет, который может помочь масштабировать систему.

  • Ленивая Загрузка - Так как это поддерживает ленивую загрузку Вас, может постараться не загружать любые unnessecary объекты. Конечно, необходимо не упустить Выбор n+1 проблема однако существуют вещи в системе для предотвращения этого.
  • Нетерпеливая Выборка - существует различные способы нетерпеливо выбрать объекты, которые Вам, возможно, понадобилось бы разрешение Вам избежать дополнительных прохождений в SQL.
  • Второй Кэш Уровня - nHibernate имеет поддержку второго кэша уровня, который может использоваться для увеличения масштабируемости путем сокращения прохождений в DB. Существуют различные поставщики поддержки, доступные, которые дают Вам некоторую гибкость.
  • Запишите свой собственный SQL - В nHibernate, который можно назвать хранимыми процедурами или обеспечить SQL-запрос, встроенный, который возвратит объекты. Это позволит Вам использовать свой собственный SQL, когда сгенерированный sql не сократит его. Например, нетерпеливая загрузка сам присоединение к древовидному использованию рекурсивного запроса.

Теперь после этих слов я думаю, что легче первоначально настроить пользовательский уровень DAL, потому что Ваш являются близкими с его конструкцией и может точно настроить его; однако, хороший ORM обеспечит много рычагов, которые позволяют Вам оптимизировать вполне немного. Просто необходимо провести некоторое время, изучая это.

Я также чувствую, что, если у Вас есть производительность критическая область кода и Вы не можете заставить свой ORM работать в Ваших требованиях затем для той крошечной области Вашего применения, Вы можете сделанный на заказ Ваш собственный уровень DAL. При использовании достойного шаблона разработки, такого как Репозиторий, созданный фабрикой то все, что необходимо сделать, выгружают реализацию репозитория

5
ответ дан 4 December 2019 в 22:30
поделиться

Будьте в спящем режиме Черепки портируются к NHibernate, который будет допускать горизонтальное масштабирование.

Существуют также некоторые очень прохладные взломы как этот для реализации sharding.

Таким образом, ответ да, NHibernate может масштабироваться неосведомленным постоянству и полностью прозрачным способом.

2
ответ дан 4 December 2019 в 22:30
поделиться

Просто неправильно сказать, что приложения, созданные в ORM, не масштабируются хорошо. Конечно, это произошло перед тем небрежным или ленивым devs злоупотребляют ORM написанием кода, которое генерирует ужасно неэффективный SQL. Создание производительных приложений означает понимать что-то о том, что все прекрасные абстракции на самом деле делают под капотом. Не требуется многого для пребывания вне этого прерывания как бы то ни было. Используя ORM никогда не означает не открывать профилировщика SQL или Профилировщика NHibernate.

И относительно заявления, что SPS просто намного быстрее, считайте это и это. И кроме того, ORMs (NHibernate, по крайней мере) дают Вам довольно простые способы использовать SPS, если Вы когда-нибудь должны.

1
ответ дан 4 December 2019 в 22:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: