Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Без ОРМ
Search
Deep Refactoring
October 26, 2017
Education
0
440
Без ОРМ
https://youtu.be/mb6-NHMzSkY
Deep Refactoring
October 26, 2017
Tweet
Share
More Decks by Deep Refactoring
See All by Deep Refactoring
Поворот на 90°
deeprefactoring
0
130
Card Payments 101
deeprefactoring
0
120
Звонки на стероидах
deeprefactoring
0
110
Make Time
deeprefactoring
0
79
Learn-to-Rank или как научить бездушную машину хорошо искать
deeprefactoring
0
170
Уменьшаем количество рефлексии в коде
deeprefactoring
1
78
Прикладная кодогенерация для Java разработчика
deeprefactoring
0
410
Пишем игровой навык для Алисы Яндекс с помощью Excel
deeprefactoring
0
170
Подружиться с исключениями. Иван Гришаев, Exoscale
deeprefactoring
0
170
Other Decks in Education
See All in Education
RSJ2025 ランチョンセミナー 一歩ずつ世界へ:学生・若手研究者のための等身大の国際化の始め方
t_inamura
0
320
KBS新事業創造体験2025_科目説明会
yasuchikawakayama
0
130
バケットポリシーの記述を誤りマネコンからS3バケットを操作できなくなりそうになった話
amarelo_n24
1
120
相互コミュニケーションの難しさ
masakiokuda
0
290
万博マニアックマップを支えるオープンデータとその裏側
barsaka2
0
940
「実践的探究」を志向する日本の教育研究における近年の展開 /jera2025
kiriem
0
130
Introduction - Lecture 1 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
2.6k
データで見る赤ちゃんの成長
syuchimu
0
330
Web Application Frameworks - Lecture 3 - Web Technologies (1019888BNR)
signer
PRO
0
3.1k
~キャラ付け考えていますか?~ AI時代だからこそ技術者に求められるセルフブランディングのすゝめ
masakiokuda
7
510
20250830_MIEE祭_会社員視点での学びのヒント
ponponmikankan
1
180
探査機自作ゼミ2025スライド
sksat
3
820
Featured
See All Featured
Embracing the Ebb and Flow
colly
88
4.9k
Building Applications with DynamoDB
mza
96
6.7k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
640
Code Reviewing Like a Champion
maltzj
526
40k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
2.9k
How STYLIGHT went responsive
nonsquared
100
5.9k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Why Our Code Smells
bkeepers
PRO
340
57k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.7k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Transcript
Без ORM Иван Гришаев, 2017
Википедия is a technique for converting data between incompatible type
systems using object-oriented programming languages.
ORM, например
Что дает — абстракция над БД — упрощает процесс разработки
— объектность™
В реальности — абстракции (чаще всего) зло — база меняется
редко (и болезненно) — коллекции > объекты
SQL — создан до ООП — декларативный — не-Тьюринг полный
— решает задачи
Задача о переводе SQL в объекты... — неразрешима в принципе!
— сравнима с трансляцией языков
Примерная сложность SEL/INS/UPD/DEL + (на этом пора заканчивать) INNER/LEFT JOIN
++ WITH RECURSIVE ++++ JSON(b) ++++++++ GIS ++++++++++++++ FULLTEXT SEARCH ++++++++++++++++++++++++++++ ...
Проблемы — ORM системы сложны — внутренние API не документированы
— не спасают от raw SQL
Боязнь raw SQL — доменный язык (как HTML, CSS) —
ООП-код растет — неэффективная работа с БД
None
None
Эти ваши объекты
К чему приводит ORM — Боязнь (незнание) SQL — Хрупкость
базы — Лишний ОО-код — ORM-specific bugs
К чему приводит ORM — Зависимость — Нечитаемые запросы —
Трудно понять, что на выходе
None
None
None
None
А если будет тормозить? — Сперва добейся! — Конфигурация —
Железо — Меньше кода
Вам не нужны объекты — опасные property — нужны удобные
структуры — и функции для работы с ними — Clojure, Go, Rust
Что предлагаешь? — Построители запросов — Запросы из структур данных
— SQL-шаблоны — Генерация функций
Построители запросов
Запросы из структур данных
SQL templates
Наш проект — PostgreSQL, JDBC/Clojure — 70 таблиц — до
15 join-ов в запросах — GIS, JSONb — рекурсивные запросы
None
SQL templates
HugSQL, YeSQL — Один *.sql файл — Clojure, JS, Python,
PHP, Perl, Go, C#, Erlang, Ruby
Конец — Вопросы?