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
280
Без ОРМ
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
95
Card Payments 101
deeprefactoring
0
66
Звонки на стероидах
deeprefactoring
0
61
Make Time
deeprefactoring
0
54
Learn-to-Rank или как научить бездушную машину хорошо искать
deeprefactoring
0
68
Уменьшаем количество рефлексии в коде
deeprefactoring
1
41
Прикладная кодогенерация для Java разработчика
deeprefactoring
0
250
Пишем игровой навык для Алисы Яндекс с помощью Excel
deeprefactoring
0
75
Подружиться с исключениями. Иван Гришаев, Exoscale
deeprefactoring
0
94
Other Decks in Education
See All in Education
論文の読み方 / How to survey
kaityo256
PRO
167
110k
パフォーマンス・チューニング入門
oracle4engineer
PRO
2
270
滑空スポーツ講習会2023 航空安全講習会 第1回 最近の変更点ほか / JSA Safety Seminar 2023 Tokuteishinsa
jsaseminar
0
710
「ロータリーって何?」と訊かれたら:国際ロータリー 2720地区 2023-2024年度 公共イメージ部門 副委員長・ 熊本南ロータリークラブ・ 株式会社ヒデコーポレーション 代表 大津 英敬 氏
2720japanoke
0
520
Microsoft Office 365
matleenalaakso
0
1.5k
WordPressを教える人のための視点と考え方
crebowinfo
0
200
第33回 JAWS-UG札幌 クラウド女子会コラボ 勉強会
nagisa53
2
330
スクフェスの学びにチームを惹き込め! 社内同時視聴会のすゝめ!
pokotyamu
0
490
HyRead2324
cbtlibrary
0
110
Projeto Ponte for Mentor
immi_lab
0
340
自己紹介 / who-am-i
yasulab
2
3k
D&I推進レポート〜テクノロジー分野のジェンダーギャップとその取り組みについて〜
codeforeveryone
1
290
Featured
See All Featured
Web Components: a chance to create the future
zenorocha
304
41k
5 minutes of I Can Smell Your CMS
philhawksworth
199
19k
Visualization
eitanlees
135
14k
Building Adaptive Systems
keathley
29
1.8k
Building a Scalable Design System with Sketch
lauravandoore
455
32k
Build The Right Thing And Hit Your Dates
maggiecrowley
23
1.9k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
18
1.8k
Done Done
chrislema
178
15k
Music & Morning Musume
bryan
39
5.4k
Robots, Beer and Maslow
schacon
PRO
154
7.9k
What’s in a name? Adding method to the madness
productmarketing
PRO
14
2.5k
Git: the NoSQL Database
bkeepers
PRO
421
63k
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
Конец — Вопросы?