DuckDB становится неудержимым...

BBetter Stack
컴퓨터/소프트웨어창업/스타트업AI/미래기술

스크립트

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Увидимся в следующем видео.

핵심 요약

DuckDB превосходит Pandas в группировках благодаря многопоточным объединениям и SQL-оптимизатору, предоставляя бесплатную замену облачным хранилищам вроде Snowflake на масштабах одной локальной машины.

하이라이트

  • DuckDB выполняет SQL-запросы к удаленным Parquet-файлам напрямую через интернет без предварительной загрузки за пять секунд.

  • Версия 1.4 добавляет полностраничное шифрование AES-256, запись таблиц Apache Iceberg и команду MERGE INTO для обновлений в стиле Git.

  • Тип данных variant в версии 1.5 объединяет целые числа, строки, массивы и объекты в одном столбце без синтаксического анализа JSON.

  • База данных имеет ограничение в один пишущий процесс одновременно, что делает ее непригодной для бэкенда приложений или хранения сессий.

  • При обработке миллиардов строк на одной машине DuckDB может исчерпать доступную оперативную память и завершить работу с ошибкой.

타임라인

Отличие аналитических баз данных от транзакционных систем

  • DuckDB работает локально без сервера в виде одного файла по аналогии со SQLite.
  • Столбчатая структура обеспечивает быстрое сканирование и суммирование миллионов строк.
  • Чтение файлов Parquet, CSV и JSON происходит напрямую без предварительного импорта данных.

Традиционный подход при росте объемов данных требует перехода на облачные хранилища вроде Snowflake или BigQuery. Локальная база данных решает эту задачу на одном ноутбуке за счет оптимизации под аналитические вычисления. Инструмент выполняет SQL-запрос к удаленному файлу в интернете за пять секунд без скачивания всего объема информации.

Технические новшества в версиях 1.4 и 1.5

  • Релиз 1.4 в сентябре стал первой версией с долгосрочной поддержкой.
  • Команда MERGE INTO выполняет сложные обновления данных внутри одного SQL-выражения без кода на Python или Spark.
  • Тип данных variant хранит типизированные бинарные данные со сжатием эффективнее стандартного JSON.

Версия 1.4 превратила инструмент из простого движка запросов в полноценную систему хранения данных на одной машине. В марте версия 1.5 дополнила функционал обновленным интерфейсом командной строки с цветным выводом и поддержкой геометрии в ядре. Безопасность обеспечивается шифрованием AES-256 на уровне страниц, где управление ключами полностью лежит на пользователе.

Сравнение производительности и эксплуатационные ограничения

  • Наличие SQL-оптимизатора ускоряет группировки данных по сравнению с библиотекой Pandas.
  • Архитектура с одним пишущим процессом исключает использование системы в роли транзакционного бэкенда.
  • Обработка миллиардов строк сопряжена с риском падения процесса из-за нехватки оперативной памяти.

SQLite хранит данные построчно и оптимизирован для транзакций, в то время как DuckDB использует столбцовый формат для анализа. Облачные платформы Snowflake и BigQuery предназначены для петабайтных объемов и командной работы, а локальное решение работает внутри одного процесса бесплатно под лицензией MIT. Потеря пользовательского ключа шифрования приводит к безвозвратной утрате доступа к файлу базы данных.

커뮤니티 글

모든 글 보기