The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Релиз СУБД DuckDB 1.2.0

13.02.2025 09:46

Опубликован выпуск СУБД DuckDB 1.2.0, ориентированной на выполнение аналитических запросов и концептуально напоминающей SQLite. DuckDB сочетает такие свойства SQLite, как компактность, подключение в форме встраиваемой библиотеки, хранение БД в одном файле и CLI-интерфейс, с возможностями и оптимизациями для выполнения аналитических запросов, охватывающих значительную часть хранимых данных, например, выполняющих агрегирование всего содержимого таблиц или слияние нескольких больших таблиц. Код проекта написан на языке C++ и распространяется под лицензией MIT.

DuckDB предоставляет расширенный диалект языка SQL, включающий дополнительные возможности для обработки очень сложных и длительно выполняемых запросов. Возможно использование сложных типов (массивы, структуры, объединения), а также выполнение произвольных и вложенных коррелирующих подзапросов. Поддерживается одновременное выполнение нескольких запросов, выполнение запросов напрямую из файлов в форматах CSV и Parquet. Доступна поддержка импорта из СУБД PostgreSQL.

Проектом используется оболочка из SQLite, парсер из PostgreSQL, компонент Date Math из MonetDB, своя реализация оконных функций (на базе алгоритма Segment Tree Aggregation), обработчик регулярных выражений на основе библиотеки RE2, собственные оптимизатор запросов, MVCC-механизм управления одновременным выполнением заданий (Multi-Version Concurrency Control), а также векторизованный движок выполнения запросов на базе алгоритма Hyper-Pipelining Query Execution, позволяющий в одной операции разом обрабатывать большие наборы значений.

В новой версии:

  • Реализована поддержка новых методов сжатия, которые не включены по умолчанию для сохранения совместимости БД-файлов с прошлыми версиями DuckDB. Для использования улучшенного формата БД-файлов предложена возможность привязки БД к номеру версии - при открытии файла при помощи параметра "STORAGE_VERSION" теперь можно задать минимально поддерживаемую версию БД ("ATTACH 'file.db' (STORAGE_VERSION 'v1.2.0');"). Для преобразования нового формата в старый можно использовать SQL-команду COPY, например:
    
       ATTACH 'file1.db';
       ATTACH 'converted_file.db' (STORAGE_VERSION 'v1.0.0');
       COPY FROM DATABASE file1 TO converted_file;
    
  • Добавлена поддержка SQL-команды "ALTER TABLE ... ADD PRIMARY KEY" для добавления первичного ключа к существующей таблице.
  • Убрано ограничение, не позволявшее повторно добавлять идентификаторы, для которых присутствует индекс отслеживания уникальности, если данные идентификаторы были удалены в текущей транзакции. Например, нижеприведённый SQL-код теперь не приводит к ошибке:
    
       CREATE TABLE students (id INTEGER PRIMARY KEY, name VARCHAR);
       INSERT INTO students VALUES (1, 'John Doe');
    
       BEGIN;
          DELETE FROM students WHERE id = 1;
          INSERT INTO students VALUES (1, 'Jane Doe');
    
  • Добавлена поддержка загрузки CSV-файлов в кодировках Latin-1 и UTF-16 (ранее поддерживалась только кодировка UTF-8).
    
       FROM read_csv('cities-latin-1.csv', encoding = 'latin-1');
    
  • Добавлена поддержка использования в CSV-файлах многобайтовых разделителей (до 4 байт), что позволяет указывать emoji в качестве разделителя столбцов.
      
       a🦆b
       hello🦆world
    
       FROM read_csv('example.dsv', sep = '🦆');
    
  • По умолчанию включён строгий режим разбора файлов CSV ("strict_mode = true"), проверяющий соответствие форматирования спецификации RFC 4180. В строгом режиме допускается использование только одного символа для разделения строк, что приведёт к ошибке при попытке разбора файлов, для разделения строк в которых используется не только символ перевода строки, но и символ возврата каретки ("\r\n").
  • В парсере CSV задействован новый алгоритм определения новой строки, поддерживающий распараллеливание операций. Использование нового алгоритма ускорило разбор CSV примерно на 15%.
  • Убрано ограничение на размер строки в CSV файлах (ранее строка не должна была превышать 8 МБ).
  • При экспорте данных в формате Parquet реализована поддержка хэшей (словарей) и индексов на базе фильтра Блума. Реализован метод сжатия DELTA_BINARY_PACKED, позволяющий существенно сократить размер Parquet-файлов.
  • В интерфейс командной строки добавлен безопасный режим, активируемый при помощи опции "-safe" или команды ".safe_mode". В данном режиме разрешается доступ только к изначально указанному файлу БД, а попытка открытия других файлов приведёт к выводу ошибки.
  • В интерфейсе командной строки улучшено автодополнение ввода. Код для автодополнения переведён на использование PEG (Parsing Expression Grammar).
  • При выполнение команд в интерфейсе командной строки реализовано наглядное отображение больших чисел, например, при отображении числа 100000000, будет дополнительно приписано "(100 миллионов)".
  • В SQL добавлена поддержка синтаксиса, при котором сокращённые наименования таблиц и выражений можно указывать до значений на которые они указывают (вместо использования синтаксиса "выражение AS наименование"):
    
       SELECT 
           e1: some_long_and_winding_expression,
           e2: t2.a_column_name 
       FROM
           t1: long_schema.some_long_table_name,
           t2: short_s.tbl;
    
  • В команде "SELECT" реализована поддержка операции "RENAME" для переименования полей, выводимых при указании выражения "*":
    
       SELECT * RENAME (col1 AS new_col1) FROM integers;
    
  • В команде "SELECT" разрешено использование операций "LIKE" и "SIMILAR TO" при выводе через "*" :
    
       SELECT * LIKE 'val%' FROM key_val;
    
  • Повышено качество генерации псевдослучайных чисел.
  • Модернизирован оптимизатор запросов. Производительность при прохождении теста TPC-H SF100 увеличилась на 13%.
  • Предложен новый Си-подобный API для разработки дополнений, который можно использовать, например, для создания новых агрегатных или табличных функций.
  • Добавлена поддержка систем со стандартной Си-библиотекой Musl.


  1. Главная ссылка к новости (https://duckdb.org/2025/02/05/...)
  2. OpenNews: Проект libSQL начал развитие форка СУБД SQLite
  3. OpenNews: Разработчики SQLite развивают бэкенд HC-tree с поддержкой параллельных операций записи
  4. OpenNews: Проекты CBS и sqld развивают облачный и серверный варианты SQLite
  5. OpenNews: Проект Redka развивает реализацию протокола и API Redis поверх SQLite
  6. OpenNews: Google использовал большую языковую модель для выявления уязвимости в SQLite
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/62712-duckdb
Ключевые слова: duckdb, sqlite
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (43) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 10:25, 13/02/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Вот видите для чего можно базы использовать, а не хранить там конфиги.
     
     
  • 2.5, Аноним (5), 11:06, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Аналитегам уже приготовлено местечко в аду.
     
     
  • 3.30, нах. (?), 13:55, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    они там всего лишь запрос на двести экранов будут редактировать, а ты - в смоле вон пока покипи.

     
  • 2.54, Аноним (54), 07:49, 14/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Зато теперь с конфигами можно будет выполнять аналитические запросы.
     

  • 1.4, Аноним (4), 10:35, 13/02/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А утка довольно жирная. Название хоть поменяли бы
     
     
  • 2.8, Массоны Рептилоиды (?), 11:11, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > А утка довольно жирная. Название хоть поменяли бы

    "Утка считается одним из самых жирных видов мяса из-за своей анатомии: у неё есть естественный слой жира под кожей. Этот слой необходим уткам, чтобы они могли легко держаться на плаву."

    Вывод: если бы утка не была жирной, то не смогла бы держаться на плаву. См. Electron

     
     
  • 3.9, Аноним (9), 11:16, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    На самом деле это не жир позволяет. А естественный отбор. Все нежирные утки утонули.  
     
  • 3.11, Аноним (11), 11:31, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А как же гуси? У них мясо не жирное, но плавают же.
     
     
  • 4.14, Массоны Рептилоиды (?), 11:50, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > А как же гуси? У них мясо не жирное, но плавают же.

    "Гусятина — мясо гуся, темное мясо, как и мясо пернатой дичи, уток и голубей. Оно очень питательно и отличается высоким содержанием белков и жиров. Самым жирным и самым калорийным является жареный гусь, в 100 г которого содержится 620 ккал. Мясо гуся, особенно жареное, не рекомендуется употреблять в пищу людям, страдающим ожирением."

     
     
  • 5.17, Аноним (17), 12:21, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А свиньи?
    (В частности - сейчас ем сало с хлебом.)
    Они наверное тоже не могут утонуть?
    и жира у них точно больше, чем у уток и гусей...
     
     
  • 6.33, pkdr (ok), 14:42, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Хрюшки, в общем-то, отлично умеют плавать.
     
  • 5.37, mos87 (ok), 15:03, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    что говорят масоны про тyнца? он ещё как плавает.
    Мясо красное жира нет совсем.


    ЗЫ 🤪🤪🤪
    ПРЕДУПРЕЖДЕНИЕ: В сообщении используется неприемлемая лексика.
    Выражение, на которое сработало предупреждение: 'тYнца'

     
     
  • 6.45, нах. (?), 19:02, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > что говорят масоны про тyнца? он ещё как плавает.

    жрут молча. Массоны, чо с них взять...

     
     
  • 7.46, mos87 (ok), 19:03, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    вот и я обычно его жру молча... стоп, погодитя...
     
  • 6.60, nrv (ok), 04:20, 15/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    *серьезные не понимающие шуток люди говорят что*
    тунец плавает под водой, а утки гуси и хрюши - на поверхности
     
  • 4.15, Самый Лучший Гусь (?), 11:50, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    У гусей тоже есть жир. Про мясо не могу ответить.
     
     
  • 5.56, Кодогенератор (?), 08:44, 14/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Вы поаккуратнее тут. Съедят же. Вон Массон что-то уже косо поглядывает...
     
  • 4.19, Admino (ok), 12:22, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Гуси плавают за счёт несмачиваемых перьев. Если гуся облить бензином или мыльным раствором (не повторяйте), гусь утонет.
     
     
  • 5.29, нах. (?), 13:54, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    у утки тоже несмачиваемые. И облить ее бензином явно безопаснее чем эту шипящую тварь.

     
     
  • 6.40, Аноним (40), 17:04, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А вы, я посмотрю оба добрые.
    А что будет, если облить бензином свинью?
    Она утонет, или сразу на стол?
     
     
  • 7.44, нах. (?), 18:55, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    харам будет, фу как нехорошо.
    Сначала ж поджечь надо, а уж потом - на стол.

     
  • 7.52, _ (??), 00:23, 14/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ты вначале заставь еЁ отрастить перья ... 8-)
     
     
  • 8.58, нах. (?), 13:38, 14/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    чешую С перьями все сложно ... текст свёрнут, показать
     
  • 7.53, голос_из_леса (ok), 05:01, 14/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Сначала позвать Винни Пуха. И показать что с Пятачком сделали.

    "А куда ты денешься?" (С)

     

  • 1.12, Аноним (11), 11:34, 13/02/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >DuckDB сочетает такие свойства SQLite, как компактность, подключение в форме встраиваемой библиотеки

    Amarok, приготовится к подключению и этой библиотеки.

     
     
  • 2.20, Аноним (17), 12:25, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    а нафейхуа, извините, аудиоплееру куча библиотек для подключения к СУДБ?
    оно там музыку собирается хранить?
    или (зачем то) выдергивать метаинформацию из аудио-файлов, и (зачем то) складывать ее в БД?
    простите неофиту глупые вопросы.
     
     
  • 3.22, Аноним (22), 12:36, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    очевидно, чтобы изобразить бурную деятельность, за которую платят
    главное, чтобы код был, а нужон он или нет уже не так важно. выкладываешь на гитхаб и указываешь в резюме. hr'ы будут в шоке от того какой ты гений и сразу предложат мульён в месяц
     
  • 3.31, Аноним (31), 14:08, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > или (зачем то) выдергивать метаинформацию из аудио-файлов, и (зачем то) складывать ее в БД?

    Да, там есть медиатека, с функцией поиска. Как ты это представляешь себе без БД?

     
     
  • 4.41, Аноним (40), 17:08, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Я это представляю себе без БД, как поиск по файлам.
    Или у вас файлы лежат на ленточном носителе, что долго их проиндексировать?
    Или же вы все файлы кидаете на рабочий стол\папку ДаунЛоад, а потом пускай оно само как нибудь рассортируется по внутренним тегам?
    Тогда у меня для вас плохие новости...
     
     
  • 5.43, Аноним (31), 18:27, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Я это представляю себе без БД, как поиск по файлам.

    При каждом запуске плеера парсить несколько тысяч файлов и грузить всю инфу в RAM? Ну-ну...

     
  • 5.48, 0x00000000 (?), 21:03, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Я это представляю себе без БД, как поиск по файлам.

    месье знает толк в извращениях, поиск без индексации - это мощно

     
     
  • 6.55, EULA (?), 07:52, 14/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    С точки зрения продавца электроэнергии - это лучше, чем всякие там СУБД.
    С точки зрения всяких там гуру чакр - это позволит перед тем, как послушать музыку немного по медитировать.
     
  • 3.49, Аноним (49), 21:59, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >а нафейхуа, извините, аудиоплееру куча библиотек для подключения к СУДБ?

    С подключением. Если у вас задач больше, чем последовательное воспроизведение, то уже база не помешает. Например, сколько раз вы уже слушали этот трек? Как насчёт индексации названий? Как насчёт произвольной иерархии файлов, при этом файлы не должны теряться?

     
  • 3.59, Аноним (59), 17:50, 14/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так MySQL им зачем-то нужен.
     

  • 1.13, pkdr (ok), 11:46, 13/02/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > Добавлена поддержка использования в CSV-файлах многобайтовых разделителей (до 4 байт), что позволяет указывать emoji в качестве разделителя столбцов

    А jpeg-картинки, что нельзя использовать в качестве разделителя столбцов в csv файле?

     
     
  • 2.21, Аноним (17), 12:30, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >И тут ср..ные эмодзи, та ну бл.

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

     
     
  • 3.26, Аноним (26), 13:34, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Emoji защита от скуфов.
     
  • 3.27, аноним1111 (?), 13:38, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Время снежинок, да. А делать это фильтром ноосфера не позволяет?
     
  • 3.50, Аноним (49), 22:04, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >мои файловые менеджеры требуют для подобного два знакоместа вместо одного аскии-шного

    А патч в файловый менеджер прислать или хотя-бы баг открыть - религия не позволяет? You have an error in handling full-width characters.

     
  • 2.35, mos87 (ok), 14:57, 13/02/2025 [^] [^^] [^^^] [ответить]  
  • +/
    ЭТО_ГЕНИАЛЬНО.jpg
     

  • 1.34, mos87 (ok), 14:54, 13/02/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Какой гибрид умывальника с холодильником.
     
  • 1.42, Аноним (42), 17:39, 13/02/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Лютое bloatware, статически слинкованное со всеми зависимостями, заинлайненными в репозиторий.
     
  • 1.51, Аноним (49), 22:07, 13/02/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Возможно использование сложных типов (массивы, структуры, объединения)

    Я надеюсь оно не слаботипизированное, как sqlite

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру