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
130
Звонки на стероидах
deeprefactoring
0
120
Make Time
deeprefactoring
0
86
Learn-to-Rank или как научить бездушную машину хорошо искать
deeprefactoring
0
180
Уменьшаем количество рефлексии в коде
deeprefactoring
1
88
Прикладная кодогенерация для Java разработчика
deeprefactoring
0
430
Пишем игровой навык для Алисы Яндекс с помощью Excel
deeprefactoring
0
180
Подружиться с исключениями. Иван Гришаев, Exoscale
deeprefactoring
0
180
Other Decks in Education
See All in Education
0121
cbtlibrary
0
120
渡辺研Slackの使い方 / Slack Local Rule
kaityo256
PRO
10
11k
滑空スポーツ講習会2025(実技講習)EMFT講習 実施要領/JSA EMFT 2025 procedure
jsaseminar
0
100
✅ レポート採点基準 / How Your Reports Are Assessed
yasslab
PRO
0
270
Cifrado asimétrico
irocho
0
380
令和エンジニアの学習法 〜 生成AIを使って挫折を回避する 〜
moriga_yuduru
0
230
KBS新事業創造体験2025_科目説明会
yasuchikawakayama
0
160
都市の形成要因と 「都市の余白」のあり方
sakamon
0
150
Human Perception and Cognition - Lecture 4 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
1.3k
10分で学ぶ すてきなモナド
soukouki
1
140
【洋書和訳:さよならを待つふたりのために】第2章 ガン特典と実存的フリースロー
yaginumatti
0
210
Adobe Express
matleenalaakso
1
8.1k
Featured
See All Featured
Site-Speed That Sticks
csswizardry
13
1.1k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
72
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
240
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
AI: The stuff that nobody shows you
jnunemaker
PRO
2
240
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
420
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
730
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
640
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Optimising Largest Contentful Paint
csswizardry
37
3.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
Конец — Вопросы?