EQSP 11/20: Автоматизация изменений в базе данных | Liquibase [software quality crash course]

  Рет қаралды 3,604

Yegor Bugayenko

Yegor Bugayenko

Жыл бұрын

Лекция в Высшей Школе Экономики для бакалавров четвертого курса.
Blog: www.yegor256.com
Books: www.yegor256.com/books.html
GitHub: github.com/yegor256 (don’t hesitate to follow in order to stay informed)
Telegram channel with recent news and updates: t.me/yegor256news (subscribe to not miss a thing)
Twitter with daily and weekly updates: / yegor256 (follow me!)
iTunes: podcasts.apple.com/us/podcast...
SoundCloud: / yegor256
Yandex Music podcast by yegor256: music.yandex.ru/album/31142286

Пікірлер: 27
@aleksfrolov9250
@aleksfrolov9250 Жыл бұрын
я разработчик простой, вижу новый видос Егора - ставлю лайк)
@titaniumhocker
@titaniumhocker Жыл бұрын
Может я чего-то не понимаю, но мне кажется, что миграции бд это не такой сложный вопрос чтоб так его раздувать. Я работаю в основном на питоне и там alembic решает для меня проблему миграций уже давно и довольно успешно. Файлы миграций лежат в репе рядом с исходным кодом, на каждый коммит или PR миграции прогоняются в CI. В случае если разные разработчики сделали разные миграции в своих ветках, то CI попросту сломается. UPD: Сорр, не заметил, что это лекция для универа. В таком контексте лекция норм, мне в колледже вообще втирали, что все в проде используют MS SQL, а изображения всегда нужно хранить в СУБД как бинари, и ни в коем случае не складывать их на диск или, еще хуже, в S3. Если бы у меня был такой препод, может я бы и ходил туда почаще.
@codingfox
@codingfox Жыл бұрын
Вначале подумал, что Егор заново изобретает миграции, но потом понял - это учебная лекция 😁
@nikitazinoviev1724
@nikitazinoviev1724 5 ай бұрын
Насчет того, зачем нужен индекс, созданный в файле *004*.xml (1:16:26) тут может помочь git, если посмотреть на git annotate на строку, содержащую CREATE INDEX, то можно найти какой код менялся одновременно с добавлением этого индекса и понять логику. Так что может быть, комментарий не так уж обязателен или по крайней мере, ситуация с его отсутствием не безнадежная.
@kali_256
@kali_256 Жыл бұрын
Слышал от вас, Егор, что в начале пути разрабатывали базы данных. Круто, что есть такой контент на ютюбе. Ждём всей командой чёрно-белые айти)
@yegor256
@yegor256 Жыл бұрын
Начал когда-то вот с этого: www.yegor256.com/pdf/1998/KRDB98-article.pdf
@kali_256
@kali_256 Жыл бұрын
@@yegor256 это очень круто, прям впечатлен, серьёзно). а я начал с того, что отец привёз на новый год 486, в классе 4, много лет назад.. Жил в деревне, где компьютер был только у меня и в школе. Если бы рядом был человек, который показал ассемблер с си, а не дум и вольфенштейн с варкрафт, не потерял бы года на майонез). Огромная благодарнось вам, Егор, что не забываете подрастающее поколение) вот кроме Пайтона подучу раст с джавой и приду к вам с просьбой о сотрудничестве.
@yegor256
@yegor256 Жыл бұрын
@@kali_256 буду ждать :)
@VictorSudakovTomsk
@VictorSudakovTomsk Жыл бұрын
Как философская и идеологическая - лекция хороша, спасибо. На практике при сложных базах вряд ли получится такого идеала достигнуть, хотя стремиться к полному управлению проектом из VCS - нужно.
@yegor256
@yegor256 Жыл бұрын
Да, Вы правы, на практике все обычно получается не так красиво.
@user-fk6ng8bk7s
@user-fk6ng8bk7s Жыл бұрын
После просмотра видео остался вопрос, что делать с инсертом тестовых данных в продовую таблицу. За видео спасибо, очень полезно и понятно
@kali_256
@kali_256 Жыл бұрын
И, если будет возможность, в черно-белом айти, хотелось бы послушать про мёрдж, бранч, гит и альтернативы ему, типо нотебаг, особенно во времена, когда гитхабный опер сорс под Майкрософт становится постепенно цензурируемым большим братом)
@borinhood
@borinhood Жыл бұрын
Для больших и сложных баз такой метод не подойдёт. Не получится каждый раз создавать всю базу с нуля. Вероятно, система должна быть посложнее. Чтобы скрипты позволяли не только монотонно инкрементить состояние базы, но и назад откатывать. Путь даже не очень далеко. Хотя бы до той точки, которая в продакшене.
@codingfox
@codingfox Жыл бұрын
Когда будут новые выпуски Черно-белого айти? Ждём 🙂
@yegor256
@yegor256 Жыл бұрын
Я тоже жду!
@dieff_automation
@dieff_automation Жыл бұрын
Егор сниимите пожалуйста видео почему вы уехали из США
@dieff_automation
@dieff_automation Жыл бұрын
Мы не понимаем просто щас туда народ нелегалами идёт а вы самостоятельно уехали в голове не укладывается
@yegor256
@yegor256 Жыл бұрын
потому что там качество жизни ниже, еда невкусная, а женщины некрасивые :)
@dieff_automation
@dieff_automation Жыл бұрын
@@yegor256 как же ниже когда они там вон в каких домах живут и причём это обычные люди не программисты не какие
@yegor256
@yegor256 Жыл бұрын
@@dieff_automation изучите: realty.rbc.ru/news/5ddad8359a79476313d8d084
@kselnaag2482
@kselnaag2482 Жыл бұрын
Дропать таблицы это, конечно, весело, особенно прямо на проде, но с данными то что делать ? Я бы их куда то сохранил, передропал всё, изменил структуру и залил обратно, но как ?
@dimkafn
@dimkafn Жыл бұрын
Ну по сути ты можешь сделать дамп бд с ддл и инсертами (условно через pg_dump), потом залить измененный ддл и инсерты меняющие данные под этот ддл (ну т.е. фактически сделать дифф старого ддл и нового + залить инсерты с старого дампа). Т.е. по сути это можно даже в ликвибейз скл скрипты запихнуть.
@AlekseyV82
@AlekseyV82 Жыл бұрын
Лучше наоборот. Обновить структуру (добавить новые таблицы, столбцы), записать данные в новые столбцы, потом уже дропать старые.
@user-QesOrwuMqN
@user-QesOrwuMqN Жыл бұрын
Так а почему это не разбирается на существующих инструментах для миграций? зачем писать велосипед, который оторван от текущих практик по этому вопросу. Я бы понял если бы использовался устаревшая тулза, но которая раньше использовалась …
@andrey7829
@andrey7829 Жыл бұрын
Я только не понял как же отлаживать все запросы, если даже тестовой базы нет?
@yegor256
@yegor256 Жыл бұрын
Тестовая база нужна, но только на время тестов
@nikitazinoviev1724
@nikitazinoviev1724 5 ай бұрын
А нет смысла squash'ить схему базы данных хотя бы раз в год? Скажем, раз в major release. Я понимаю, что Liquibase хранит md5 и так просто не даст это сделать в продакшн. Но получается, как будто мы код храним в git не в виде целых файлов, а в виде diff'ов и через год разработки неудобно, что нет места, где можно посмотреть полную или почти полную схему. Плюс, возможно, запуск тестов будет существенно замедлен, если перед ним нужно будет применить все changesets к БД с начала истории проекта. В идеале, мы могли бы хранить схему и миграции, а по изменениям схемы в git liquibase строил бы ALTER TABLES.. Или хранить схему, плюс то, что отличает ее от предыдущей ревизии, чтобы liquibase накатывал изменения, двигаясь по истории в git.
Playing hide and seek with my dog 🐶
00:25
Zach King
Рет қаралды 33 МЛН
Эффект Карбонаро и нестандартная коробка
01:00
История одного вокалиста
Рет қаралды 9 МЛН
Gym belt !! 😂😂  @kauermtt
00:10
Tibo InShape
Рет қаралды 16 МЛН
Best Practices for Managing Liquibase Changelogs
59:18
Liquibase
Рет қаралды 16 М.
Илья и Федор Сазоновы - БД-укротитель
48:03
JPoint, Joker и JUG ru
Рет қаралды 4,7 М.
Как в 44 года стать программистом на Python. Объясняю с чего начать.
19:32
SQLite Databases With Python - Full Course
1:29:37
freeCodeCamp.org
Рет қаралды 659 М.
Притворилась БЕРЕМЕННОЙ 😱 #shorts
1:00
Лаборатория Разрушителя
Рет қаралды 4,2 МЛН
GiGaMoN! 5 🗿 #gigachad #sigma
0:53
The Logan Chitwood
Рет қаралды 7 МЛН
Czn Burak vs Argenby Which sigma is better?
0:19
ARGEN
Рет қаралды 6 МЛН
Why Is He Unhappy…?
0:26
Alan Chikin Chow
Рет қаралды 7 МЛН
HE’S BACK! 😰
0:11
HeyItzPuppies
Рет қаралды 13 МЛН