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

Публикувана версия SQLite 3.42, лека СУБД, представена като приставка. Кодът на SQLite се разпространява като обществено достояние, т.е. може да се използва без ограничения и безвъзмездно за всякакви цели. Финансовата подкрепа на разработчиците на 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.

В допълнение към кода на обвивката от 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.
  • Добавена поддръжка за API ADBC (Arrow Database Connectivity) за предаване на данни с използване на 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