Dolt: SQL, который ощущается как Git
BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology
Transcript
00:00:00У вас есть git для кода, а для данных? Вот в чём проблема: одна плохая CSV,
00:00:07одна правка в таблице — и приложение сломано. Нет нормального diff, ветки, pull request,
00:00:13очевидного отката. Это Dolt — SQL-база данных, которая работает прямо как git. Можно создавать ветки таблиц,
00:00:20редактировать строки, смотреть изменения, коммитить их и вливать обратно. Настоящий контроль версий
00:00:26для реальных данных. Покажу, как это запустить за пару минут.
00:00:35Мы знаем, что базы данных отлично справляются со своей задачей — хранить данные и позволять
00:00:41делать SQL-запросы. Но они плохо подходят для повседневных рабочих процессов: ветвления,
00:00:47просмотра изменений, слияния, отката и контроля того, кто именно внёс правки. Поэтому мы часто выбираем
00:00:54один из двух плохих вариантов. Первый: хранить данные в нормальной БД. Есть SQL-индексы,
00:01:00ограничения и структура, но при изменении данных процесс проверки изменений обычно отсутствует.
00:01:07Второй вариант: хранить данные в CSV, JSON или YAML, чтобы Git мог их отслеживать. Теперь есть
00:01:13коммиты и pull request, но теряются преимущества баз данных: нет реального SQL, слабая
00:01:20поддержка схем, болезненные diff и слияния. А когда кто-то спрашивает “кто изменил эту запись?”, ответ
00:01:27обычно сводится к “кто-то с доступом к базе данных”. Это несерьёзный рабочий процесс.
00:01:32Но представьте другое. Что, если можно было бы просто выполнить команду: dolt branch fix-data,
00:01:39dolt diff, dolt commit, dolt merge? Это привычные нам команды, но мы используем их
00:01:46прямо для таблиц нашей базы данных. Это и есть Dolt — контроль версий для БД.
00:01:52Если вам нравятся инструменты для ускорения работы, подписывайтесь. Мы выпускаем видео
00:01:57постоянно. Хватит разговоров, у нас есть варианты: Dolt для SQLite, Postgres и других. Давайте
00:02:04быстро попробуем. Перейду в папку и клонирую проект dolt-hub с GitHub,
00:02:10зайду в него. Сначала клонируем публичную базу Dolt, затем запустим dolt sql. Теперь мы
00:02:18внутри SQL, так что я могу выполнять команды прямо в терминале. Отлично, внесу небольшое изменение,
00:02:27и теперь мы запустим dolt diff, и это тот самый момент, когда хочется сказать: «подождите, что сейчас произошло?»
00:02:34Dolt не просто говорит, что какой-то файл изменился, он показывает diff таблицы: какая строка изменилась, какой столбец
00:02:43какой столбец, старое и новое значения. Я вижу это прямо здесь. Теперь можно сделать коммит: dolt add,
00:02:50затем dolt commit -m и добавим комментарий. Я могу создать целую ветку с помощью
00:02:56checkout, просто выполнив checkout -b [имя ветки]. Если сделаю ещё изменение, я снова могу
00:03:03сделать diff, снова закоммитить и добавить. Теперь, если я переключусь обратно
00:03:10и солью ветки, перейду на main и запущу dolt merge. Все эти команды мы уже знаем, просто теперь
00:03:17мы делаем это в SQL. В конце можно запустить dolt log. У базы появилась история коммитов, не просто бэкап,
00:03:24не дамп, не правка в таблице, а реальная версионируемая база данных. Вот основная идея:
00:03:31гит-воркфлоу для таблиц. Давайте подведём итоги и посмотрим, как это работает.
00:03:37Dolt кажется знакомым специально: есть команды status, diff, add, commit, branch,
00:03:44checkout. Если вы знаете Git, ваш мозг уже понимает структуру этого процесса.
00:03:48Dolt отслеживает не файлы, а реляционные таблицы. Можно использовать его из
00:03:55командной строки, или запустить dolt sql-server, чтобы подключаться с помощью
00:04:01MySQL-совместимых клиентов, ORM, BI-инструментов или кода приложения. Так что приложение видит Dolt
00:04:09как обычную SQL-базу, но вы получаете контроль версий данных. Это важно: не нужно выбирать
00:04:14базу данных и git-процессы: вы получаете и то, и другое в одном месте. Dolt использует технологию Prolly Tree. Если говорить просто,
00:04:22проще говоря: обычная база использует древовидные структуры для ускорения чтения и записи
00:04:29Dolt использует структуру, которая также хороша для версионирования. Вместо копирования всей
00:04:36базы при каждом коммите, Dolt может использовать общие неизменные части и отслеживать то, что
00:04:42действительно изменилось. Теперь мы не просто спрашиваем “какое значение сейчас?”, мы можем
00:04:47узнать: “как эта строка выглядела до того, как что-то случилось?” Это главное.
00:04:52Ведь когда что-то ломается, мы не хотим гадать. Вы хотите изучить историю.
00:04:56Можно посмотреть diff, изменения и, если нужно, откатиться. Это контроль версий
00:05:02для структурированных данных. Ветки, коммиты, diff, слияния, история для строк и столбцов. Так куда же
00:05:10вписывается Dolt? Звучит отлично, но здесь может возникнуть путаница.
00:05:15Вы можете услышать “Git для данных” и подумать: “Ну у нас же уже есть инструменты”.
00:05:21Да, они есть, но они решают другие задачи. Вы можете положить CSV и JSON в Git,
00:05:28это работает, когда данных мало и они простые. Но Git не понимает схему,
00:05:35первичные ключи, не обеспечит ограничения, не может делать JOIN между CSV,
00:05:41если не добавить больше инструментов. Git дает контроль версий, но не для БД.
00:05:47Ещё есть DVC. DVC хорош для ML-процессов, особенно с большими датасетами и артефактами моделей,
00:05:53но он не пытается быть вашей живой реляционной БД. Да, есть LakeFS, который приносит
00:06:00идеи Git в объектное хранилище и data-озёра. Очень полезно в масштабах озёр, но это другой уровень,
00:06:07это не то же самое, что ветвление SQL-таблицы, изменение строк, diff и слияние обратно.
00:06:13Традиционные БД тоже имеют инструменты истории: темпоральные таблицы, audit logs, CDC, но большинство из них
00:06:20не ощущаются как нормальный рабочий процесс. Они не дают чистый цикл ветвление-изменение-diff-слияние-откат.
00:06:27Я бы не стал бездумно внедрять Dolt в любую продакшн-систему. Суть в другом:
00:06:33если ваша работа включает структурированные данные, которые меняются со временем, и изменения могут что-то сломать,
00:06:40то Dolt стоит попробовать. Когда он в первый раз спасёт вас от тихого сбоя данных, процесс
00:06:46начнёт казаться очевидным. У нас есть Git, почему у нас нет чего-то подобного для данных? Теперь есть.
00:06:52Если вам нравятся такие инструменты, подписывайтесь на канал Better Stack. Увидимся в следующем
00:06:57видео.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video