Выпуск СУБД SQLite 3.42 и DuckDB 0.8.0. CG/SQL с реализацией хранимых процедур для SQLite

Опубликован релиз SQLite 3.42, легковесной СУБД, оформленной в виде подключаемой библиотеки. Код SQLite распространяется как общественное достояние (public domain), т.е. может использоваться без ограничений и безвозмездно в любых целях. Финансовую поддержку разработчиков SQLite осуществляет специально созданный консорциум, в который входят такие компании, как Adobe, Oracle, Mozilla, Bentley и Bloomberg.

Основные изменения:

  • Для полнотекстовых индексов FTS5 реализована команда secure-delete, производящая полную чистку всех остаточных данных после удаления.

  • В функциях для обработки данных в формате JSON реализована поддержка расширений JSON5.
  • Улучшен планировщик запросов. По умолчанию включена оптимизация «count-of-view». Исключена обработка неиспользуемых столбцов в подзапросах. Улучшена реализация оптимизации push-down.

  • В интерфейс командной строки добавлена опция »--unsafe-testing», позволяющая использовать некоторые опасные команды, такие как ».testctrl», предназначенные для применения при тестировании. В безопасном режиме (»--safe») разрешено использование команд ».log on» и ».log off». Добавлена поддержка разделителя »--», для аргументов после которого отключается обработка опций. Добавлены параметры »: inf» и »: nan», связанные со значениями бесконечность и NaN.

  • В именах определяемых на стороне приложения SQL-функций, разрешено пересечение с ключевыми словами CROSS, FULL, INNER, LEFT, NATURAL, OUTER и RIGHT.

  • Расширены возможности PRAGMA integrity_check. Добавлена проверка указания значения NaN в столбцах с условием NOT NULL. Улучшена информативность сообщений об ошибках.

  • В дополнении session разрешён перехват изменений из таблиц без ROWID.

  • В функции для работы с временем и датами добавлен модификатор «subsec» для использования долей секунд.

  • Глубина рекурсии для массивов и объектов JSON по умолчанию уменьшена с 2000 до 1000.




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

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

  • Изменено поведение оператора деления (»/»), который теперь по умолчанию выполняет вычисления с плавающей запятой вместо целочисленных операций. Для целочисленного деления предложен новый оператор »//». Старое поведение можно вернуть настройкой «SET integer_division=true;».
  • Метод учёта нулевых записей при сортировке изменён с «NULLS FIRST» на «NULLS LAST», т.е. значения NULL теперь будут выводиться в конце, а не начале списка. Старое поведение можно вернуть настройкой «SET default_null_order='nulls_first';».
  • Добавлены новые выражения «PIVOT» и «UNPIVOT» для трансформации строк в столбцы и наоборот.
  • Улучшено распараллеливание при импорте и экспорте данных. По умолчанию реализовано чтение из файлов в формате CSV в несколько потоков и многопоточная запись при использовании форматов Parquet, CSV и JSON.
  • Добавлен оператор »**» для рекурсивного перебора каталогов при определении файловых путей (например, FROM »'data/glob/crawl/stackoverflow/**/*.csv';»).

  • Добавлена поддержка операций слияния (JOIN) для данных в форме временного ряда (срезы значений параметров через заданные промежутки времени), в которых в качестве критерия слияния записей используется не точное, а приблизительное совпадение значений в поле со временем.

  • Реализована отложенная загрузка метаданных, позволившая ускорить запуск СУБД.
  • Добавлена поддержка подключения пользовательских функций на языке Python.
  • Добавлена поддержка API ADBC (Arrow Database Connectivity) для передачи данных с использованием Apache Arrow.
  • Реализована привязка для интеграции с кодом на языке Swift.




Дополнительно можно отметить развиваемый компанией Facebook проект CG/SQL, предоставляющий генератор код для использования хранимых процедур с SQLite. CG/SQL позволяет оформить хранимые процедуры на специальном диалекте T-SQL (Transact-SQL), допускающем вызов функций стандартной Си-библиотеки и обращение к данным в SQLite. Созданные хранимые процедуры компилируются в код на языке Си, использующий SQLite C API для выполнения заданных действий и обработки сложных запросов. Скомпилированные хранимые процедуры могут подключаться к программам на языках Си, Java и Objective-C. Код проекта написан на языке Си и распространяется под лицензией MIT.



Источник: http://www.opennet.ru/opennews/art.shtml? num=59157

OpenNet прочитано 21493 раза