Нещодавно відбувся вебінар “Is There a Life Outside the Entity Framework”!
Під час вебінару досвідчений Володимир Ковригін, Senior Consultant, Engineering, GlobalLogic, розповів, що знання баз даних потрібно частіше, ніж здається.
Відео та деталі заходу: https://bit.ly/3EmVnaK
3. 3
Confidential
Введение
• {ORM_Name} покрывает 90% потребностей
проектов
• Все проблемы с производительностью решаются
добавлением или удалением индекса
• 3й нормальной формы хватает при
проектировании БД ! (и еще много
восклицательных знаков)
• StackOverflow, Google и 3 часа упорного поиска
хватит Senior .NET разработчику для нахождения
ответа на любой (!) вопрос по базе
• Миграция с 4.7.2 на 3.1 (5, 6 ) пройдет как по
маслу
• Если надо, мы за два дня поменяем {ORM_A} на
{ORM_B} (преданья старины глубокой)
Цитаты замечательных людей
4. 4
Confidential
4
Хронология технологий доступа к данным в .NET
ADO.NET
DataSets
(regular and
typed)
NHibernate
Entity Framework
LINQ to EF
EF 7.0 aka
Entity Framework
Core
2003-2005 2005-2006 August 2008 2014-2015
5. 5
Confidential
Типы хранилищ данных
• Одна на всех: и транзакции, и
отчеты, и данные за 2005 год
• Операционная (OLTP):
нормализованная, только
свежие данные
• Для отчетов и аналитики
(OLAP): пред агрегированные
данные
• Холодное хранилище: дешево,
медленно, зато навека
Популярные и не очень
One for All Operational
Reporting Cold
Content
6. 6
Confidential
Все в одном: откуда пришло и с чем его едят
• Мы так начинали, думали переделать, но все никак
• Developers, Developers, Developers, Developers (c)
- ORM, code first, migrations, all-from IDE
- Давайте купим “магические контролы” (Dev Express, гриды)
• Разработчики, тестировщики - все взаимозаменяемые
- Это не фуллстек-разработчик, это целый ИТ отдел (с) анекдот
- С ростом сложности задач универсальность играет в минус
- А где нам взять профи? На неделю. За 50 убитых енотов в час??!
Может попробуем получше поискать на StackOverflow
9. 9
Confidential
Entity Framework: why do you love me?
• Идеально для CRUD операций
• Работает из коробки
• Unit of Work, Repository patterns
• Расширяемо
• Удобно для разработки и рефакторинга
Out of the box Refactoring
Compile-time
support
Migrations SQL features
support (Functions,
SP, Command
Interceptors)
LINQ
Transactions
Bulks
Extensions
10. 10
Confidential
Наши достоинства есть продолжение недостатков
• Делает все за вас, но как?!
• Расширяемость или текущая абстракция
• Универсальность - путь к тому, что все
есть, но все посредственно
• Breaking changes (6 to 7, 2.1 to 3.0)
• Нюансы хранилища (triggers, constraints,
views, statistics)
• Очень много зависит от конкретного
провайдера
• Нет варианта фикса багов без
перекомпиляции
• Unit of Work - гоняем данные в оба конца
11. 11
Confidential
Свежий пример необычного и неудачного кейса
• Все началось как CRUD + ORM для
Loan Management System
• Когда добавили репортинг через ORM
дизайн устоял
• Когда прикрутили Data Science -
держался
• Как пошли клиенты - умер
13. 13
Confidential
Вся мощь: пишем и проектируем END-TO-END
• Можно использовать всю мощь
хранилища и движка БД
• Скорость. Скорость. Большая скорость
• Возможность деплоить без
перекомпиляции
• Версионирование: выбирай любую
утилиту
• Полный контроль и никаких сюрпризов
• У StackOverflow получилось. И мы
сможем (смотри справа)
14. 14
Confidential
И вся королевская …. не может Шалтая-Болтая
собрать • Запросы. Захаркодженные. Тяжело
переиспользовать, еще тяжелее
рефакторить
• Проблема * (звёздочки)
• А кадры, Зин?
• А что делать с уникальными кадрами по
окончанию проекта?
• Долго. Очень долго разрабатывать
• YAGNI.
15. 15
Confidential
.NET Senior познает hardcore SQL разработку
• Copy-Paste это хорошо. Нет,
действительно.
• Не все функции и “подпрограммы”
полезны для здоровья
• Статистика? Кардинальность?
Недетерменированное поведение на
разных базах?
• Временные таблицы, табличные
переменные… это же так удобно,
почему нельзя?
• Джоины бывают физические? Не
только Left and Right
• План запроса, профайлер - это разные
вещи, да?
17. 17
Confidential
Кесарю кесарево, слесарю слесарево
• Для CRUD - ORM
• Для репортинга - SQL
• Знай базу и ее возможности
(констрейнты, кеширование, планы
запросов, fine-tuning)
• Для легковесных процессов - SQL, для
append-only и быстрых
• Для быстрого старта и MVP - ORM
• Развивайтесь. Не PRIMARY SKILL единым
• Архитекторы и лиды: расширяйте
кругозор
Синергия и правильное использование