SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Downloaden Sie, um offline zu lesen
1
Confidential
Есть ли жизнь за пределами EF?
Владимир Ковригин
Senior Consultant, Solution Architect
2021-11-03
2
Confidential
2
Agenda
1. Введение
2. Исторический экскурс
3. Хранилища, типы, подходы
4. Pros&Сons обоих подходов
• Object-oriented + compile-time
• Runtime, procedural + script based
5. Вопросы, ответы, дискуссия
3
Confidential
Введение
• {ORM_Name} покрывает 90% потребностей
проектов
• Все проблемы с производительностью решаются
добавлением или удалением индекса
• 3й нормальной формы хватает при
проектировании БД ! (и еще много
восклицательных знаков)
• StackOverflow, Google и 3 часа упорного поиска
хватит Senior .NET разработчику для нахождения
ответа на любой (!) вопрос по базе
• Миграция с 4.7.2 на 3.1 (5, 6 ) пройдет как по
маслу
• Если надо, мы за два дня поменяем {ORM_A} на
{ORM_B} (преданья старины глубокой)
Цитаты замечательных людей
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
Confidential
Типы хранилищ данных
• Одна на всех: и транзакции, и
отчеты, и данные за 2005 год
• Операционная (OLTP):
нормализованная, только
свежие данные
• Для отчетов и аналитики
(OLAP): пред агрегированные
данные
• Холодное хранилище: дешево,
медленно, зато навека
Популярные и не очень
One for All Operational
Reporting Cold
Content
6
Confidential
Все в одном: откуда пришло и с чем его едят
• Мы так начинали, думали переделать, но все никак
• Developers, Developers, Developers, Developers (c)
- ORM, code first, migrations, all-from IDE
- Давайте купим “магические контролы” (Dev Express, гриды)
• Разработчики, тестировщики - все взаимозаменяемые
- Это не фуллстек-разработчик, это целый ИТ отдел (с) анекдот
- С ростом сложности задач универсальность играет в минус
- А где нам взять профи? На неделю. За 50 убитых енотов в час??!
Может попробуем получше поискать на StackOverflow
7
Confidential
Разделяй и властвуй
8
Confidential
8
Большие ORM
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
Confidential
Наши достоинства есть продолжение недостатков
• Делает все за вас, но как?!
• Расширяемость или текущая абстракция
• Универсальность - путь к тому, что все
есть, но все посредственно
• Breaking changes (6 to 7, 2.1 to 3.0)
• Нюансы хранилища (triggers, constraints,
views, statistics)
• Очень много зависит от конкретного
провайдера
• Нет варианта фикса багов без
перекомпиляции
• Unit of Work - гоняем данные в оба конца
11
Confidential
Свежий пример необычного и неудачного кейса
• Все началось как CRUD + ORM для
Loan Management System
• Когда добавили репортинг через ORM
дизайн устоял
• Когда прикрутили Data Science -
держался
• Как пошли клиенты - умер
12
12
Confidential
SQL, microORM
13
Confidential
Вся мощь: пишем и проектируем END-TO-END
• Можно использовать всю мощь
хранилища и движка БД
• Скорость. Скорость. Большая скорость
• Возможность деплоить без
перекомпиляции
• Версионирование: выбирай любую
утилиту
• Полный контроль и никаких сюрпризов
• У StackOverflow получилось. И мы
сможем (смотри справа)
14
Confidential
И вся королевская …. не может Шалтая-Болтая
собрать • Запросы. Захаркодженные. Тяжело
переиспользовать, еще тяжелее
рефакторить
• Проблема * (звёздочки)
• А кадры, Зин?
• А что делать с уникальными кадрами по
окончанию проекта?
• Долго. Очень долго разрабатывать
• YAGNI.
15
Confidential
.NET Senior познает hardcore SQL разработку
• Copy-Paste это хорошо. Нет,
действительно.
• Не все функции и “подпрограммы”
полезны для здоровья
• Статистика? Кардинальность?
Недетерменированное поведение на
разных базах?
• Временные таблицы, табличные
переменные… это же так удобно,
почему нельзя?
• Джоины бывают физические? Не
только Left and Right
• План запроса, профайлер - это разные
вещи, да?
16
Confidential
16
Каков же выход
17
Confidential
Кесарю кесарево, слесарю слесарево
• Для CRUD - ORM
• Для репортинга - SQL
• Знай базу и ее возможности
(констрейнты, кеширование, планы
запросов, fine-tuning)
• Для легковесных процессов - SQL, для
append-only и быстрых
• Для быстрого старта и MVP - ORM
• Развивайтесь. Не PRIMARY SKILL единым
• Архитекторы и лиды: расширяйте
кругозор
Синергия и правильное использование
18
Confidential
18
Questions and Answers

Weitere ähnliche Inhalte

Was ist angesagt?

Test driven development in net
Test driven development in netTest driven development in net
Test driven development in netAlex Tumanoff
 
Разработка high load системы на .NET Core
Разработка high load системы на .NET CoreРазработка high load системы на .NET Core
Разработка high load системы на .NET CoreAndrew Gubskiy
 
Joker 2015. WILD microSERVICES
Joker 2015. WILD microSERVICESJoker 2015. WILD microSERVICES
Joker 2015. WILD microSERVICESAleksandr Tarasov
 
Алексей Ильенко "In real-time with Apache Kafka"
Алексей Ильенко "In real-time with Apache Kafka"Алексей Ильенко "In real-time with Apache Kafka"
Алексей Ильенко "In real-time with Apache Kafka"Fwdays
 
Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...
Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...
Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...Сбертех | SberTech
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityPositive Hack Days
 
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"IT Event
 
Разработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоРазработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоDotNetConf
 
Agile и мультикомандность - как это работает на примере реального проекта
Agile и мультикомандность - как это работает на примере реального проекта  Agile и мультикомандность - как это работает на примере реального проекта
Agile и мультикомандность - как это работает на примере реального проекта SQALab
 
Continuous Delivery with Jenkins: Lessons Learned
Continuous Delivery with Jenkins: Lessons LearnedContinuous Delivery with Jenkins: Lessons Learned
Continuous Delivery with Jenkins: Lessons LearnedAleksandr Tarasov
 
рентабельный код
рентабельный кодрентабельный код
рентабельный кодMax Arshinov
 
DevOps Fest 2020. Сергей Погорелов. Локально распределенное окружение разрабо...
DevOps Fest 2020. Сергей Погорелов. Локально распределенное окружение разрабо...DevOps Fest 2020. Сергей Погорелов. Локально распределенное окружение разрабо...
DevOps Fest 2020. Сергей Погорелов. Локально распределенное окружение разрабо...DevOps_Fest
 
Микросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокМикросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокDotNetConf
 
Как приручить реактивное программирование
Как приручить реактивное программированиеКак приручить реактивное программирование
Как приручить реактивное программированиеDotNetConf
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxDotNetConf
 
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days
 
Moscow js node.js enterprise development
Moscow js node.js enterprise developmentMoscow js node.js enterprise development
Moscow js node.js enterprise developmentPavel Tiunov
 

Was ist angesagt? (18)

Test driven development in net
Test driven development in netTest driven development in net
Test driven development in net
 
Разработка high load системы на .NET Core
Разработка high load системы на .NET CoreРазработка high load системы на .NET Core
Разработка high load системы на .NET Core
 
Joker 2015. WILD microSERVICES
Joker 2015. WILD microSERVICESJoker 2015. WILD microSERVICES
Joker 2015. WILD microSERVICES
 
Алексей Ильенко "In real-time with Apache Kafka"
Алексей Ильенко "In real-time with Apache Kafka"Алексей Ильенко "In real-time with Apache Kafka"
Алексей Ильенко "In real-time with Apache Kafka"
 
Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...
Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...
Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps Community
 
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
 
Разработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоРазработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешево
 
Agile и мультикомандность - как это работает на примере реального проекта
Agile и мультикомандность - как это работает на примере реального проекта  Agile и мультикомандность - как это работает на примере реального проекта
Agile и мультикомандность - как это работает на примере реального проекта
 
Continuous Delivery with Jenkins: Lessons Learned
Continuous Delivery with Jenkins: Lessons LearnedContinuous Delivery with Jenkins: Lessons Learned
Continuous Delivery with Jenkins: Lessons Learned
 
рентабельный код
рентабельный кодрентабельный код
рентабельный код
 
DevOps Fest 2020. Сергей Погорелов. Локально распределенное окружение разрабо...
DevOps Fest 2020. Сергей Погорелов. Локально распределенное окружение разрабо...DevOps Fest 2020. Сергей Погорелов. Локально распределенное окружение разрабо...
DevOps Fest 2020. Сергей Погорелов. Локально распределенное окружение разрабо...
 
Микросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокМикросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бок
 
Как приручить реактивное программирование
Как приручить реактивное программированиеКак приручить реактивное программирование
Как приручить реактивное программирование
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под Linux
 
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
 
Coding like a sex
Coding like a sexCoding like a sex
Coding like a sex
 
Moscow js node.js enterprise development
Moscow js node.js enterprise developmentMoscow js node.js enterprise development
Moscow js node.js enterprise development
 

Ähnlich wie NET Webinar #1 "Is There a Life Outside the Entity Framework"

20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...IT-Portfolio
 
разработка бизнес приложений (7)
разработка бизнес приложений (7)разработка бизнес приложений (7)
разработка бизнес приложений (7)Alexander Gornik
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrusAlex Chistyakov
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
 
131024 производственное планирование как метод решения проблем itsm forum r...
131024   производственное планирование как метод решения проблем itsm forum r...131024   производственное планирование как метод решения проблем itsm forum r...
131024 производственное планирование как метод решения проблем itsm forum r...Андрей Степенко
 
50 команд как одна команда. Как в компании Петер-Сервис боролись за согласова...
50 команд как одна команда. Как в компании Петер-Сервис боролись за согласова...50 команд как одна команда. Как в компании Петер-Сервис боролись за согласова...
50 команд как одна команда. Как в компании Петер-Сервис боролись за согласова...Валерий Павлович Сысик
 
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...Fwdays
 
Восьмая лекция курса "Введение в системную инженерию"
Восьмая лекция курса "Введение в системную инженерию"Восьмая лекция курса "Введение в системную инженерию"
Восьмая лекция курса "Введение в системную инженерию"Anatoly Levenchuk
 
Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?etyumentcev
 
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...Provectus
 
Greenplum: история одной миграции
Greenplum: история одной миграцииGreenplum: история одной миграции
Greenplum: история одной миграцииКРОК
 
Микросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesМикросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesDenis Izmaylov
 
#ITsubbotnik Spring 2017: Sergey Chernolyas "JPA for NoSQL"
#ITsubbotnik Spring 2017: Sergey Chernolyas "JPA for NoSQL"#ITsubbotnik Spring 2017: Sergey Chernolyas "JPA for NoSQL"
#ITsubbotnik Spring 2017: Sergey Chernolyas "JPA for NoSQL"epamspb
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, ParallelsNikolay Samokhvalov
 
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы.  «АБС в крупном Банке. Тестирование PostgreSQL...Андрей Кондрашов, Банк Москвы.  «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...Mail.ru Group
 
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...GoSharp
 
от авгиевых конюшен к звездам
от авгиевых конюшен к звездамот авгиевых конюшен к звездам
от авгиевых конюшен к звездамLev Goncharov
 
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...Yandex
 
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...Yandex
 
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...DevOps_Fest
 

Ähnlich wie NET Webinar #1 "Is There a Life Outside the Entity Framework" (20)

20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 
разработка бизнес приложений (7)
разработка бизнес приложений (7)разработка бизнес приложений (7)
разработка бизнес приложений (7)
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
131024 производственное планирование как метод решения проблем itsm forum r...
131024   производственное планирование как метод решения проблем itsm forum r...131024   производственное планирование как метод решения проблем itsm forum r...
131024 производственное планирование как метод решения проблем itsm forum r...
 
50 команд как одна команда. Как в компании Петер-Сервис боролись за согласова...
50 команд как одна команда. Как в компании Петер-Сервис боролись за согласова...50 команд как одна команда. Как в компании Петер-Сервис боролись за согласова...
50 команд как одна команда. Как в компании Петер-Сервис боролись за согласова...
 
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
 
Восьмая лекция курса "Введение в системную инженерию"
Восьмая лекция курса "Введение в системную инженерию"Восьмая лекция курса "Введение в системную инженерию"
Восьмая лекция курса "Введение в системную инженерию"
 
Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?
 
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
 
Greenplum: история одной миграции
Greenplum: история одной миграцииGreenplum: история одной миграции
Greenplum: история одной миграции
 
Микросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesМикросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и Kubernetes
 
#ITsubbotnik Spring 2017: Sergey Chernolyas "JPA for NoSQL"
#ITsubbotnik Spring 2017: Sergey Chernolyas "JPA for NoSQL"#ITsubbotnik Spring 2017: Sergey Chernolyas "JPA for NoSQL"
#ITsubbotnik Spring 2017: Sergey Chernolyas "JPA for NoSQL"
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы.  «АБС в крупном Банке. Тестирование PostgreSQL...Андрей Кондрашов, Банк Москвы.  «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
 
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
 
от авгиевых конюшен к звездам
от авгиевых конюшен к звездамот авгиевых конюшен к звездам
от авгиевых конюшен к звездам
 
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
 
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
 
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...
 

Mehr von GlobalLogic Ukraine

GlobalLogic Embedded Community x ROS Ukraine Webinar "Surgical Robots"
GlobalLogic Embedded Community x ROS Ukraine Webinar "Surgical Robots"GlobalLogic Embedded Community x ROS Ukraine Webinar "Surgical Robots"
GlobalLogic Embedded Community x ROS Ukraine Webinar "Surgical Robots"GlobalLogic Ukraine
 
GlobalLogic Java Community Webinar #17 “SpringJDBC vs JDBC. Is Spring a Hero?”
GlobalLogic Java Community Webinar #17 “SpringJDBC vs JDBC. Is Spring a Hero?”GlobalLogic Java Community Webinar #17 “SpringJDBC vs JDBC. Is Spring a Hero?”
GlobalLogic Java Community Webinar #17 “SpringJDBC vs JDBC. Is Spring a Hero?”GlobalLogic Ukraine
 
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”GlobalLogic Ukraine
 
Штучний інтелект як допомога в навчанні, а не замінник.pptx
Штучний інтелект як допомога в навчанні, а не замінник.pptxШтучний інтелект як допомога в навчанні, а не замінник.pptx
Штучний інтелект як допомога в навчанні, а не замінник.pptxGlobalLogic Ukraine
 
Задачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptxЗадачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptxGlobalLogic Ukraine
 
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptxЩо треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptxGlobalLogic Ukraine
 
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...GlobalLogic Ukraine
 
JavaScript Community Webinar #14 "Why Is Git Rebase?"
JavaScript Community Webinar #14 "Why Is Git Rebase?"JavaScript Community Webinar #14 "Why Is Git Rebase?"
JavaScript Community Webinar #14 "Why Is Git Rebase?"GlobalLogic Ukraine
 
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...GlobalLogic Ukraine
 
Страх і сила помилок - IT Inside від GlobalLogic Education
Страх і сила помилок - IT Inside від GlobalLogic EducationСтрах і сила помилок - IT Inside від GlobalLogic Education
Страх і сила помилок - IT Inside від GlobalLogic EducationGlobalLogic Ukraine
 
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”GlobalLogic Ukraine
 
GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic QA Webinar “What does it take to become a Test Engineer”GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic QA Webinar “What does it take to become a Test Engineer”GlobalLogic Ukraine
 
“How to Secure Your Applications With a Keycloak?
“How to Secure Your Applications With a Keycloak?“How to Secure Your Applications With a Keycloak?
“How to Secure Your Applications With a Keycloak?GlobalLogic Ukraine
 
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...GlobalLogic Ukraine
 
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...GlobalLogic Ukraine
 
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”GlobalLogic Ukraine
 
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"GlobalLogic Ukraine
 
GlobalLogic Webinar "Introduction to Embedded QA"
GlobalLogic Webinar "Introduction to Embedded QA"GlobalLogic Webinar "Introduction to Embedded QA"
GlobalLogic Webinar "Introduction to Embedded QA"GlobalLogic Ukraine
 
C++ Webinar "Why Should You Learn C++ in 2021-22?"
C++ Webinar "Why Should You Learn C++ in 2021-22?"C++ Webinar "Why Should You Learn C++ in 2021-22?"
C++ Webinar "Why Should You Learn C++ in 2021-22?"GlobalLogic Ukraine
 
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...GlobalLogic Ukraine
 

Mehr von GlobalLogic Ukraine (20)

GlobalLogic Embedded Community x ROS Ukraine Webinar "Surgical Robots"
GlobalLogic Embedded Community x ROS Ukraine Webinar "Surgical Robots"GlobalLogic Embedded Community x ROS Ukraine Webinar "Surgical Robots"
GlobalLogic Embedded Community x ROS Ukraine Webinar "Surgical Robots"
 
GlobalLogic Java Community Webinar #17 “SpringJDBC vs JDBC. Is Spring a Hero?”
GlobalLogic Java Community Webinar #17 “SpringJDBC vs JDBC. Is Spring a Hero?”GlobalLogic Java Community Webinar #17 “SpringJDBC vs JDBC. Is Spring a Hero?”
GlobalLogic Java Community Webinar #17 “SpringJDBC vs JDBC. Is Spring a Hero?”
 
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
 
Штучний інтелект як допомога в навчанні, а не замінник.pptx
Штучний інтелект як допомога в навчанні, а не замінник.pptxШтучний інтелект як допомога в навчанні, а не замінник.pptx
Штучний інтелект як допомога в навчанні, а не замінник.pptx
 
Задачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptxЗадачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptx
 
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptxЩо треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
 
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
 
JavaScript Community Webinar #14 "Why Is Git Rebase?"
JavaScript Community Webinar #14 "Why Is Git Rebase?"JavaScript Community Webinar #14 "Why Is Git Rebase?"
JavaScript Community Webinar #14 "Why Is Git Rebase?"
 
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
 
Страх і сила помилок - IT Inside від GlobalLogic Education
Страх і сила помилок - IT Inside від GlobalLogic EducationСтрах і сила помилок - IT Inside від GlobalLogic Education
Страх і сила помилок - IT Inside від GlobalLogic Education
 
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
 
GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic QA Webinar “What does it take to become a Test Engineer”GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic QA Webinar “What does it take to become a Test Engineer”
 
“How to Secure Your Applications With a Keycloak?
“How to Secure Your Applications With a Keycloak?“How to Secure Your Applications With a Keycloak?
“How to Secure Your Applications With a Keycloak?
 
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
 
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
 
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
 
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
 
GlobalLogic Webinar "Introduction to Embedded QA"
GlobalLogic Webinar "Introduction to Embedded QA"GlobalLogic Webinar "Introduction to Embedded QA"
GlobalLogic Webinar "Introduction to Embedded QA"
 
C++ Webinar "Why Should You Learn C++ in 2021-22?"
C++ Webinar "Why Should You Learn C++ in 2021-22?"C++ Webinar "Why Should You Learn C++ in 2021-22?"
C++ Webinar "Why Should You Learn C++ in 2021-22?"
 
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
 

Kürzlich hochgeladen (9)

MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 

NET Webinar #1 "Is There a Life Outside the Entity Framework"

  • 1. 1 Confidential Есть ли жизнь за пределами EF? Владимир Ковригин Senior Consultant, Solution Architect 2021-11-03
  • 2. 2 Confidential 2 Agenda 1. Введение 2. Исторический экскурс 3. Хранилища, типы, подходы 4. Pros&Сons обоих подходов • Object-oriented + compile-time • Runtime, procedural + script based 5. Вопросы, ответы, дискуссия
  • 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 единым • Архитекторы и лиды: расширяйте кругозор Синергия и правильное использование