스크립트
00:00:00Годами, как только наши данные переставали помещаться в таблицу, совет был неизменным.
00:00:05Запускайте облачное хранилище данных, Snowflake или BigQuery.
00:00:09Но есть крошечная бесплатная база данных, работающая прямо на вашем ноутбуке,
00:00:13и пока все смотрели в сторону облаков, она тихо повзрослела.
00:00:16Теперь в ней есть полноценное шифрование, upsert'ы в стиле Git и первый релиз с долгосрочной поддержкой.
00:00:22Это DuckDB, и я хочу показать вам, как именно она показывает себя в 2026 году,
00:00:26включая один важный момент, в котором люди постоянно ошибаются.
00:00:35Итак, DuckDB.
00:00:36Просто представьте: это SQLite, но для аналитики.
00:00:40Ну, знаете, SQLite.
00:00:41Один файл, никакого сервера, встроена прямо в ваше приложение.
00:00:45DuckDB — это ровно та же идея, только вместо транзакций
00:00:50она создана для вычислений.
00:00:52Она предназначена для того, чтобы очень быстро сканировать и суммировать миллионы строк.
00:00:56И одна из лучших ее особенностей — она читает файлы Parquet, CSV и JSON напрямую.
00:01:02Никакого импорта, не нужно сначала загружать данные.
00:01:05Вы просто используете SQL по отношению к файлу.
00:01:08Позвольте показать, как это ощущается.
00:01:09Если вам нравятся инструменты для кодинга, ускоряющие работу, обязательно подпишитесь.
00:01:13У нас постоянно выходят новые видео.
00:01:15Теперь в моем терминале я ввожу DuckDB, и мгновенно попадаю в SQL-интерфейс.
00:01:20А теперь смотрите.
00:01:21Я делаю выборку из Parquet-файла, который лежит по ссылке в интернете.
00:01:27Я не скачивал его.
00:01:28Я ничего не настраивал и не запускал сервер.
00:01:30DuckDB обратилась к удаленному файлу, скачала его и выполнила SQL-запрос в одну строку.
00:01:36Это, выполненное за пять секунд, — причина, по которой люди ее любят.
00:01:40Но вот в чем люди ошибаются.
00:01:43Здесь задействованы два релиза, и интернет постоянно путает их между собой.
00:01:48Те самые крутые функции, о которых все говорят — полноценное AES-256 шифрование вашей базы данных,
00:01:54команда “merge-into” для upsert'ов в стиле Git, и возможность записывать таблицы Apache Iceberg,
00:01:59ничего из этого не было в 1.5.
00:02:02Все они появились в DuckDB 1.4 в сентябре, что также стало первым релизом DuckDB с долгосрочной поддержкой.
00:02:08поддержкой.
00:02:09Затем, в марте, в версии 1.5 мы получили обновление этого всего.
00:02:14Отличный новый клиент командной строки с цветами и постраничным выводом, новый тип variant для неструктурированных данных
00:02:20и геометрия, встроенная в ядро.
00:02:24Вместо одного быстрого запроса, позвольте показать, как обновленная DuckDB ощущается на практике,
00:02:30функции 1.4 плюс 1.5 поверх них.
00:02:34Итак, у меня по-прежнему есть тот запрос к parquet, который мы видели ранее.
00:02:38А вот и новая функция в 1.5: тип variant.
00:02:43Я создаю таблицу и вставляю разные типы: целые числа, строки, массивы и объекты, всё в одном столбце.
00:02:50в одном столбце.
00:02:51Нет никакой схемы, никакого парсинга JSON, это просто работает.
00:02:54И она хранит типизированные бинарные данные, которые сжимаются и запрашиваются лучше, чем обычный JSON.
00:02:59Это и есть новая функция variant.
00:03:02Далее идет функция, которая реально изменила то, что можно создавать с DuckDB: merge into.
00:03:08Это из версии 1.4.
00:03:09Не путайте это.
00:03:10Одно чистое SQL-выражение.
00:03:12Никакой логики приложения.
00:03:13Это то, для чего раньше требовались Spark или свой код на Python.
00:03:17Затем также шифрование, раз уж мы здесь.
00:03:21Я могу сделать обычный запрос, но если попытаюсь открыть этот же файл в новой сессии без ключа,
00:03:27то получу ошибку, как и должно быть.
00:03:30AES-256 на уровне страниц, ключ вы приносите сами.
00:03:33DuckDB его не хранит и не управляет им.
00:03:36И это еще до того, как мы перешли к записи Iceberg или поддержке геометрии, которую многие из вас
00:03:41могут просто использовать через spatial вместо geometry.
00:03:43Вот почему 1.4 была большим обновлением.
00:03:45Она превратилась из движка для запросов в нечто, чему можно доверить реальные данные на одной машине.
00:03:50машине.
00:03:51Безопасные файлы, надежные upsert'ы и современные форматы озера данных.
00:03:55Версия 1.5 просто сделала работу намного лучше благодаря улучшенному CLI и новому типу variant.
00:04:00Хорошо, чем же это отличается от инструментов, которые уже есть у вас?
00:04:04Возьмем SQLite.
00:04:05Тоже один файл, ощущение отсутствия сервера.
00:04:08Но SQLite — это построчное хранилище, созданное для транзакций.
00:04:12А DuckDB — это столбчатое хранилище, созданное для анализа.
00:04:15Далее, возьмем Pandas.
00:04:17DuckDB предлагает настоящий SQL-оптимизатор и многопоточные объединения.
00:04:21Так что при больших группировках она часто работает немного быстрее.
00:04:24Если взять Snowflake или BigQuery, это облачные хранилища для целых команд
00:04:30и петабайтов данных.
00:04:32DuckDB — это одна машина, работающая в вашем процессе бесплатно.
00:04:35Самая частая жалоба, снова и снова, — это память.
00:04:40Дайте DuckDB миллиард строк, и она может выйти за пределы памяти и упасть.
00:04:45Она может быть слишком нестабильной для продакшена, если вы имеете дело с такими объемами.
00:04:49Второе: это не транзакционная база данных.
00:04:53У нее один писатель.
00:04:54Один процесс пишет за раз.
00:04:57Поэтому не стоит подключать её к бэкенду приложения или хранилищу сессий.
00:05:01Это работа для Postgres или SQLite для небольших MVP.
00:05:05И вся эта часть с шифрованием: она реальная, глубокая, но ключ приносите вы.
00:05:10DuckDB не хранит ключ.
00:05:12Она не меняет ключ.
00:05:14Она ни за чем не следит.
00:05:15Потеряете ключ —
00:05:16ваши данные пропадут.
00:05:17А запись Iceberg находится в расширении, которое всё ещё довольно новое.
00:05:22Если вы занимаетесь аналитикой, обработкой parquet и CSV, запускаете ELT-преобразования, исследуете данные
00:05:28в блокноте, что угодно от нескольких мегабайт до масштаба одной машины, DuckDB — один из лучших
00:05:33инструментов, которые вы можете установить.
00:05:35И она полностью бесплатна, по лицензии MIT и без платного доступа.
00:05:39Но если вам нужен транзакционный бэкенд для приложения, или вы постоянно обрабатываете миллиарды
00:05:44строк и не хотите вручную настраивать память, это неподходящий инструмент, и это нормально.
00:05:50Для каждой задачи своя база данных.
00:05:52Если вам нравятся такие советы и подсказки по кодингу, обязательно подпишитесь на BetterStack Chick.
00:05:56Увидимся в следующем видео.