Dapper + QueryObject, как замена ORM

Не так давно я утверждал, что нужно использовать высокоуровневую ORM и даже делал опрос на эту тему. Как показал опрос, не многие пишут SQL-запросы руками.

Проблематика

Для работы с типовыми проектами действительно не надо углубляться в вопросы специфики SQL. Но сейчас я веду проект, где без этого просто не обойтись. Речь про базы данных по 700ГБ и требования к отклику на UI менее 1 секунды. При этом происходит много разных расчетов, строятся графики и т.п.

Для начала я по привычке использовал NHibernate. Уже через пару итераций оказалось, что эта ORM мне не подойдет (не говоря уже про EntityFramework) по следующим причинам:

  • Скорость: создание сессии, маппинг и другие сопутствующие вещи отнимали до 200 мс. В моем случае это 20% времени, которое тратилось впустую;
  • Гибкость запросов: сначала я писал запросы на Linq, потом понял, что трудно сделать хитрые запросы и добавлять хинты через высокоуровневые интерфейсы типа Linq, QueryOver или Criteria. Из всех возможностей NHibernate я начал использовать только функцию ExecuteSql, но скорость маппинга была слишком низкой;
  • Утечки памяти: увы, но в NHibernate есть утечки памяти. Когда в вашей системе делается много запросов, это становится критичным. Сервисы через 20-30 часов работы падали с OutOfMemoryException и MemProfiler указал на NHibernate;
  • Много чтения, мало записи: в проекте мне надо считывать очень много данных, получается такой cRRRRud, поэтому UoW от NHibernate оказался тоже не нужен.

ALT.NET наносит ответный удар

3 марта 2013 г.

В конце апреля 2013 произойдет нечто большое для сообщества ALT.NET. Две конференции на русском dotnetconf.ru и английском dotnetconf.net.

Мы со Cкоттом Хансельманом решили устроить большую тусовку по продвижению лучших практик разработки ПО в мире .NET, это будет значимое событие.

Что планируется в русскоязычной части:

  • Мастер-классы, которые разделены на 2 потока: начинающие, опытные. Есть множество студентов, которые не могут сходить на конференцию, потому что темы слишком сложные. Мы хотим предложить им темы для начинающих;
  • Видео трансляция + хотелось бы увидеть мастер-классы из разных городов в полностью онлайн режиме.

Темы должны быть сопряжены с топовыми практиками и инструментами разработки. Для студентов это будет трек с введением в топовые практики и инструменты.

Друзья, я буду рад, если вы примете в этом участие:

  • Вы можете показать применение интересных подходов, "фишек", рассказать про свой OpenSource проект;
  • Написать об этом событии у себя в блоге или твиттере, чтобы как можно больше людей приняли в нем участие.

Вы можете связываться со мной на тему встречи по любому из контактов, либо писать в группу dotnetconf свои предложения.

Моя книга «Антихрупкость в IT»

Как достигать результатов в IT-проектах в условиях неопределённости. Подробнее...