DBMS SQLite 3.42 және DuckDB 0.8.0 шығарылымы. SQLite үшін сақталатын процедураларды енгізумен CG/SQL

SQLite 3.42 шығарылымы, қосылатын модуль кітапханасы ретінде жасалған жеңіл ДҚБЖ жарияланды. SQLite коды жалпыға ортақ доменде таратылады, яғни. кез келген мақсатта шектеусіз және тегін пайдалануға болады. SQLite әзірлеушілеріне қаржылық қолдау Adobe, Oracle, Mozilla, Bentley және Bloomberg сияқты компанияларды қамтитын арнайы құрылған консорциуммен қамтамасыз етіледі.

Негізгі өзгерістер:

  • FTS5 толық мәтінді индекстері үшін жойылғаннан кейін барлық қалдық деректерді толығымен тазартатын қауіпсіз жою пәрмені орындалды.
  • JSON деректерін өңдеуге арналған функциялар енді JSON5 кеңейтімдерін қолдайды.
  • Жақсартылған сұрауды жоспарлаушы. Әдепкі бойынша, көру санын оңтайландыру қосылған. Ішкі сұраулардағы пайдаланылмаған бағандарды өңдеу алынып тасталды. Төмен қарай оңтайландыруды енгізу жақсартылған.
  • Пәрмен жолы интерфейсіне тестілеуде пайдалануға арналған «.testctrl» сияқты қауіпті пәрмендерді пайдалануға мүмкіндік беретін «--unsafe-testing» опциясы қосылды. Қауіпсіз режимде («-қауіпсіз») «.log on» және «.log off» пәрмендерін пайдалануға рұқсат етіледі. Опцияны өңдеу өшірілген аргументтер үшін «—» бөлгішіне қолдау қосылды. Шексіздік және NaN мәндерімен байланысты ":inf" және ":nan" параметрлері қосылды.
  • Қолданбада анықталған SQL функциясы атауларына CROSS, FULL, INNER, LEFT, NATURAL, OUTER және RIGHT кілт сөздерімен қабаттасуға рұқсат етіледі.
  • PRAGMA integrity_check мүмкіндіктері кеңейтілді. НҰЛ ЕМЕС шарты бар бағандарда NaN мәндерін көрсетуді тексеру қосылды. Қате туралы хабарлардың жақсартылған ақпараттық мазмұны.
  • Сеанс қондырмасы ROWID жоқ кестелердегі өзгерістерді ұстауға мүмкіндік береді.
  • Секундтардың бөліктерін пайдалану үшін уақыт пен күнмен жұмыс істеу функцияларына «субсек» модификаторы қосылды.
  • Массивтер мен JSON нысандары үшін әдепкі рекурсия тереңдігі 2000-нан 1000-ға дейін қысқарды.

Сонымен қатар, сақталған деректердің маңызды бөлігін қамтитын аналитикалық сұрауларды орындау үшін мүмкіндіктері мен оңтайландыруларымен кеңейтілген, мысалы, бүкіл мазмұнды біріктіруді жүзеге асыратын SQLite нұсқасын әзірлейтін DuckDB 0.8.0 ДҚБЖ шығарылымы жасалды. кестелер немесе бірнеше үлкен кестелерді біріктіру. Өте күрделі және көп уақытты қажет ететін сұрауларды өңдеуге арналған қосымша мүмкіндіктерді қамтитын, сонымен қатар күрделі типтерді (массивтер, құрылымдар, бірлестіктер), бірнеше сұрауларды бір уақытта орындау және сұрауларды тікелей CSV, JSON және Parquet файлдарынан орындауға арналған кеңейтілген SQL диалектісін қамтамасыз етеді. . PostgreSQL ДҚБЖ-дан импорттауға болады.

SQLite қабықша кодынан басқа, жоба бөлек кітапханада PostgreSQL талдаушысын, MonetDB ұсынған Date Math компонентін, терезе функцияларының өзіндік іске асырылуын (сегменттердің ағашын біріктіру алгоритміне негізделген), тұрақты өрнек процессорын пайдаланады. RE2 кітапханасы, жеке сұрауларды оңтайландырғышы және тапсырмаларды бір уақытта орындауды (Multi-Version Concurrency Control) MVCC басқару механизмі, сондай-ақ мәндердің үлкен жиынына мүмкіндік беретін Hyper-Pipelining Query Execution алгоритміне негізделген векторланған сұранысты орындау механизмі. бір операцияда бірден өңделеді. Жоба коды MIT лицензиясы бойынша таратылады.

DuckDB жаңа нұсқасында:

  • Жолдарды бағандарға және керісінше түрлендіру үшін жаңа "PIVOT" және "UNPIVOT" өрнектері қосылды.
  • Деректерді импорттау және экспорттау кезінде жақсартылған параллельизация. Әдепкі бойынша, CSV файлдарынан көп ағынды оқу және көп ағынды жазу Parquet, CSV және JSON пішімдерін пайдаланған кезде жүзеге асырылады.
  • Файл жолдарын анықтау кезінде каталогтар арқылы рекурсивті қайталау үшін "**" операторы қосылды (мысалы, FROM "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Жазбаларды біріктіру критерийі нақты емес, шамалар сәйкестігі болатын уақыт қатары (белгіленген уақыт аралықтарында параметр мәндерінің кесінділері) түріндегі деректерге біріктіру операцияларына (JOIN) қолдау қосылды. уақыты бар өрісте (мысалы, 1 минуттан аспайтын уақыт айырмашылығы бар жазбаларды біріктіруге болады).
  • Деректер қорының метадеректерін жалқау жүктеу енгізілді, бұл ДҚБЖ іске қосылуын ондаған есе жылдамдатуға мүмкіндік берді.
  • Python тіліндегі теңшелетін функцияларды қосуға қолдау қосылды.
  • Apache Arrow көмегімен деректерді тасымалдауға арналған ADBC ​​(Arrow Database Connectivity) API қолдауы қосылды.
  • 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) диалектісінде жазуға мүмкіндік береді, бұл стандартты Си кітапханасының функцияларын шақыруға және SQLite деректеріне қол жеткізуге мүмкіндік береді. Жасалған сақталатын процедуралар көрсетілген әрекеттерді орындау және күрделі сұрауларды өңдеу үшін SQLite C API қолданатын С кодына құрастырылады. Құрастырылған сақталатын процедураларды C, Java және Objective-C бағдарламаларына қосуға болады. Жоба коды C тілінде жазылған және MIT лицензиясы бойынша таратылады.

Ақпарат көзі: opennet.ru

пікір қалдыру