29.11.2020

Релиз СУБД SQLite 3.32. Проект DuckDB развивает вариант SQLite для аналитических запросов


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

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

  • Реализован апромксимированный вариант команды ANALYZE, который позволяет в очень больших БД обойтись частичным сбором статистики, без полного сканирования индексов. Ограничение на число записей при сканировании одного индекса задаётся при помощи новой директивы «PRAGMA analysis_limit«.
  • Добавлена новая виртуальная таблица «bytecode«, в которой предложена информация о байткоде заранее подготовленных выражений (prepared statement).
  • Добавлена VFS-прослойка checksum, добавляющая 8-байтовые контрольные суммы в конец каждой страницы данных в БД и проверяющая их при каждом чтении из БД. Прослойка позволяет выявлять повреждения БД в результате случайного искажения битов в устройствах хранения.
  • Добавлена новая SQL-функция iif(X,Y,Z), возвращающая значение Y, если выражение X является истинным, или Z, в противном случае.
  • В выражениях INSERT и UPDATE теперь всегда применяется закрепление типов столбцов (column affinity) перед вычислением условий в блоке CHECK.
  • Лимит на число параметров повышен с 999 до 32766.
  • Добавлено расширение UINT collating sequence с реализацией сортировки последовательностей, учитывающей целые числа в тексте для сортировки этого текста в числовом порядке.
  • В интерфейсе командной строки в команду «.import» добавлены опции «—csv», «—ascii» и «—skip». В команде «.dump» разрешено использование нескольких LIKE-шаблонов с слиянием на выходе всех таблиц, соответствующих заданным маскам. Добавлена команда «.oom» для отладочных сборок. В команды «.excel», «.output» и «.once» добавлена опция «—bom». В команду «.filectrl» добавлена опция «—schema».
  • Указанное с оператором LIKE выражение ESCAPE теперь переопределяет символы подстановки, что соответствует поведению PostgreSQL .

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

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

Добавить комментарий