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
420
Без ОРМ
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
120
Card Payments 101
deeprefactoring
0
100
Звонки на стероидах
deeprefactoring
0
93
Make Time
deeprefactoring
0
76
Learn-to-Rank или как научить бездушную машину хорошо искать
deeprefactoring
0
160
Уменьшаем количество рефлексии в коде
deeprefactoring
1
65
Прикладная кодогенерация для Java разработчика
deeprefactoring
0
380
Пишем игровой навык для Алисы Яндекс с помощью Excel
deeprefactoring
0
150
Подружиться с исключениями. Иван Гришаев, Exoscale
deeprefactoring
0
150
Other Decks in Education
See All in Education
Webリテラシー基礎
takenawa
0
1.2k
Linuxのよく使うコマンドを解説
mickey_kubo
1
110
Data Presentation - Lecture 5 - Information Visualisation (4019538FNR)
signer
PRO
0
2.4k
マネジメント「される側」 こそ覚悟を決めろ
nao_randd
10
5.2k
ビジネスモデル理解
takenawa
0
1.2k
Human-AI Interaction - Lecture 11 - Next Generation User Interfaces (4018166FNR)
signer
PRO
0
430
IMU-00 Pi
kanaya
0
360
JPCERTから始まる草の根活動~セキュリティ文化醸成のためのアクション~
masakiokuda
0
170
OJTに夢を見すぎていませんか? ロールプレイ研修の試行錯誤/tryanderror-in-roleplaying-training
takipone
1
130
America and the World
oripsolob
0
500
i-GIP 2025 中高生のみなさんへ資料
202200
0
440
検索/ディスプレイ/SNS
takenawa
0
1.2k
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Being A Developer After 40
akosma
91
590k
Typedesign – Prime Four
hannesfritz
42
2.6k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Visualization
eitanlees
146
16k
Unsuck your backbone
ammeep
671
58k
Art, The Web, and Tiny UX
lynnandtonic
298
21k
Into the Great Unknown - MozCon
thekraken
39
1.8k
A Tale of Four Properties
chriscoyier
159
23k
Site-Speed That Sticks
csswizardry
9
610
The Art of Programming - Codeland 2020
erikaheidi
54
13k
The World Runs on Bad Software
bkeepers
PRO
68
11k
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
Конец — Вопросы?