Форум программистов, компьютерный форум, киберфорум
sqltd1
Войти
Регистрация
Восстановить пароль

DuckDB - первые впечатления - 1

Запись от sqltd1 размещена 28.04.2022 в 19:02
Показов 3333 Комментарии 0
Метки duckdb

Я собрался использовать в своем новом проекте DuckDB в качестве встраиваемого SQL-движка. Возможно, мои эксперименты будут интересны другим и подвигнут кого-нибудь переехать с Sqlite на DuckDB.

Когда я первый раз услышал о DuckDB, он продвигался под слоганом "DuckDB - это Sqlite для аналитиков".
Сейчас этот слоган почти исчез из употребления, но тем не менее "уши" Sqlite остались торчать во многих местах.

С одной стороны это облегчает переезд с Sqlite на DuckDB, в некоторых аспектах они достаточно сильно похожи.
С другой стороны - это совершенно разные продукты как по сфере применения, так и по предоставлеяемому сторонним разработчикам АПИ.

Когда можно использовать DuckDB?
  • При обработке столбчатых(columnar) данных, предоставляемых в формате CSV или Parquet
  • Для решения аналитических задач, в которых требуется связывать, группировать и агрегировать данные из многих таблиц

Когда не стоит использовать DuckDB?
  • Запись/модификация данных от большого количества независимых клиентских приложений

Итак поехали.

В этой заметке я расскажу как устанавливается консольный клиент DuckDB.
Заодно проведем несколько экспериментов.

Загрузка.

Зайдите на страницу https://duckdb.org/docs/installation/
Выберите CLI в разделе Environment, Binary в разделе Package и ОС(Windows/MacOS/Linux) в разделе Platform

Загрузите zip-архив, потом распакуйте и переместите в любое удобное место. Я для экспериментов создал каталог test,
в который и поместил все файлы для тестирования (в моем случае там находятся еще sqlite3, с которым мы будем осуществлять сравнение, и некоторые другие файлы).

Сравним DuckDB и Sqlite по скорости загрузки CSV-файла. Для этого загрузим 250-мб файл с данными по Нью-Йоркским такси
https://nyc-tlc.s3.amazonaws.c... 022-01.csv

Все файлы (за исключением файла данных) с тестами для экспериментов прикреплены к этой заметке

Первый тест - загрузка в базу данных DuckDB.

Code
1
2
3
4
5
6
time ./duckdb testduck.db ".read test1duckdb.sql"
 
Время выполнения:
real    0m5.787s
user    0m4.061s
sys     0m0.789s

объем файла testduck.db - 149.2mb

Второй тест - загрузка в базу данных Sqlite.

Code
1
2
3
4
5
6
time sqlite3 testsqlite.db ".read test1sqlite.txt"
 
Время выполнения:
real    0m6.037s
user    0m5.076s
sys     0m0.519s

объем файла testsqlite.db - 271.4mb

Можно сделать первые выводы. Скорость загрузки данных в обоих случаях примерно одинакова. Но размеры файлов баз данных различаются почти в два раза.

Третий тест - суммирование значений столбца (DuckDB).

Code
1
2
3
4
5
6
time ./duckdb testduck.db ".read test2duckdb.sql"
 
Время выполнения:
real    0m0.072s
user    0m0.018s
sys     0m0.010s

Четвертый тест - суммирование значений столбца (Sqlite).

Code
1
2
3
4
5
6
time sqlite3 testsqlite.db ".read test2sqlite.txt"
 
Время выполнения:
real    0m0.300s
user    0m0.235s
sys     0m0.064s

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

На сегодня все.
Вложения
Тип файла: txt test1duckdb.txt (138 байт, 355 просмотров)
Тип файла: txt test1sqlite.txt (108 байт, 298 просмотров)
Тип файла: txt test2duckdb.txt (101 байт, 253 просмотров)
Тип файла: txt test2sqlite.txt (102 байт, 357 просмотров)
Метки duckdb
Размещено в DuckDB
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru