Релиз СУБД DuckDB 1.2.0

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

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

Projekti përdor një mbështjellës nga SQLite, parserin nga PostgreSQL, komponentin Date Math nga MonetDB, realizimin e tij të funksioneve dritare (të bazuar në algoritmin Segment Tree Aggregation), një procesor për shprehje të rregullta të bazuar në bibliotekën RE2, optimizuesin e tij të kërkesave, mekanizmin MVCC për menaxhimin e ekzekutimit të përbashkët të detyrave (Multi-Version Concurrency Control), si dhe një motor të vectorizuar për ekzekutimin e kërkesave të bazuar në algoritmin Hyper-Pipelining Query Execution, i cili lejon përpunimin në një operacion të grupeve të mëdha të vlerave njëherësh.

Në versionin e ri:

  • Реализована поддержка новых методов сжатия, которые не включены по умолчанию для сохранения совместимости БД-файлов с прошлыми версиями 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.

Burimi: opennet.ru

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster