Издаване на СУБД 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. Подобрена е информативността на съобщенията за грешки.
  • В допълнението сесия е разрешен перехват на промените от таблици без ROWID.
  • В функцията за работа с време и дати е добавен модификатор „subsec“ за използване на части от секунди.
  • Дълбочината на рекурсията за масиви и обекти JSON по подразбиране е намалена от 2000 до 1000.

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

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

В новата версия на DuckDB:

  • Добавени са нови изрази „PIVOT“ и „UNPIVOT“ за трансформиране на редове в колони и обратно.
  • Подобрено е разпаралеляването при импорт и експорт на данни. По подразбиране е реализирано четене от файлове във формат CSV в няколко потока и многопоточна записване при използване на формати Parquet, CSV и JSON.
  • Добавен е оператор „**“ за рекурсивно обхождане на директории при определяне на файлови пътища (например, FROM ‘data/glob/crawl/stackoverflow/**/*.csv’;).
  • Добавена е поддръжка на операции за обединяване (JOIN) за данни под формата на времеви ред (изрязъци на стойности на параметри за зададени интервали от време), при които като критериал за обединяване на записи се използва не точна, а приблизителна съвпадение на стойностите в полето с времето (например, могат да се обединят записи, чиято времева разлика е не повече от 1 минута).
  • Реализирано е отложено зареждане на метаданни на БД, което значително ускори стартирането на СУБД.
  • Добавена поддръжка за свързване на потребителски функции на Python.
  • Добавена поддръжка за ADBC (Arrow Database Connectivity) API за предаване на данни с Apache Arrow.
  • Реализирана е обвързаност за интеграция с код на Swift.
  • Променено е поведението на оператора за деление ("/") , който сега по подразбиране извършва изчисления с плаваща запетая вместо цели числа. За целочислено деление е предложен нов оператор "//". Старото поведение може да бъде възстановено с настройка "SET integer_division=true;".
  • Методът на работа с нулеви стойности при сортиране е променен от "NULLS FIRST" на "NULLS LAST", т.е. NULL стойностите сега ще се извеждат в края на списъка, а не в началото. Старото поведение може да бъде възстановено с настройка "SET default_null_order='nulls_first';".

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

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster