DBMS SQLite 3.42 və DuckDB 0.8.0-ın buraxılışı. SQLite üçün saxlanılan prosedurların həyata keçirilməsi ilə CG/SQL

Plug-in kitabxanası kimi hazırlanmış yüngül DBMS olan SQLite 3.42-nin buraxılışı nəşr olundu. SQLite kodu ictimai domendə paylanır, yəni. istənilən məqsəd üçün məhdudiyyətsiz və pulsuz istifadə oluna bilər. SQLite tərtibatçılarına maliyyə dəstəyi Adobe, Oracle, Mozilla, Bentley və Bloomberg kimi şirkətlərin daxil olduğu xüsusi yaradılmış konsorsium tərəfindən həyata keçirilir.

Əsas dəyişikliklər:

  • FTS5 tam mətn indeksləri üçün, silindikdən sonra bütün qalıq məlumatları tamamilə təmizləyən təhlükəsiz sil əmri həyata keçirilir.
  • JSON formatında məlumatların işlənməsi funksiyaları indi JSON5 uzantılarını dəstəkləyir.
  • Təkmilləşdirilmiş sorğu planlayıcısı. Baxış sayının optimallaşdırılması defolt olaraq aktivdir. Alt sorğularda istifadə olunmamış sütunların işlənməsi aradan qaldırıldı. Təkmilləşdirilmiş təkmil optimallaşdırma tətbiqi.
  • ".testctrl" kimi bəzi təhlükəli əmrlərin sınaqda istifadəsinə icazə vermək üçün CLI-yə "--unsafe-testing" seçimi əlavə edildi. Təhlükəsiz rejimdə ("--safe") ".log on" və ".log off" əmrlərinə icazə verilir. Seçimlərin işlənməsinin dayandırıldığı arqumentlər üçün "—" ayırıcısı üçün əlavə dəstək. Sonsuzluq və NaN dəyərləri ilə əlaqəli ":inf" və ":nan" parametrləri əlavə edildi.
  • Tətbiq tərəfindən müəyyən edilmiş SQL funksiyalarının adlarının CROSS, FULL, INNER, LEFT, NATURAL, OUTER və RIGHT açar sözləri ilə kəsişməsinə icazə verilir.
  • Genişləndirilmiş PRAGMA integrity_check imkanları. DEYİL NULL şərti olan sütunlarda NaN dəyərinin təyin edilməsi üçün yoxlama əlavə edildi. Səhv mesajlarının təkmilləşdirilmiş məlumat məzmunu.
  • Sessiya əlavə edilməsi ROWID-ləri olmayan cədvəllərdən dəyişikliklərin tutulmasına imkan verir.
  • "Subec" dəyişdiricisi saniyələrin fraksiyalarından istifadə etmək üçün vaxt və tarixlərlə işləmək funksiyalarına əlavə edilmişdir.
  • Massivlər və JSON obyektləri üçün defolt rekursiya dərinliyi 2000-dən 1000-ə endirildi.

Bundan əlavə, saxlanılan məlumatların əhəmiyyətli bir hissəsini əhatə edən analitik sorğuların yerinə yetirilməsi üçün funksiyalar və optimallaşdırmalarla təkmilləşdirilmiş, məsələn, cədvəllərin bütün məzmununu birləşdirən və ya bir neçə faylı birləşdirən SQLite variantını inkişaf etdirən DuckDB 0.8.0 DBMS buraxılışı formalaşdırıldı. böyük masalar. SQL dilinin genişləndirilmiş dialekti, o cümlədən çox mürəkkəb və uzun müddət davam edən sorğuların idarə edilməsi üçün əlavə imkanlar, həmçinin mürəkkəb tiplər (massivlər, strukturlar, birliklər) üçün dəstək, çoxsaylı sorğuların eyni vaxtda yerinə yetirilməsi və birbaşa sorğuların icrası təmin edilir. CSV, JSON və Parket formatında fayllar. PostgreSQL DBMS-dən idxal etmək mümkündür.

SQLite-dən qabıq koduna əlavə olaraq, layihə ayrı bir kitabxanaya köçürülmüş PostgreSQL-dən analizatordan, MonetDB-dən Tarix Riyaziyyat komponentindən, pəncərə funksiyalarının özünün tətbiqindən (Seqment Ağacı Aqreqasiya alqoritmi əsasında), müntəzəm ifadə prosessorundan istifadə edir. RE2 kitabxanasına, öz sorğu optimallaşdırıcısına, tapşırıqların eyni vaxtda icrasına MVCC idarəetmə mexanizmi (Çox versiyalı Parametrlərə Nəzarət), həmçinin böyük dəstlərin emalına imkan verən Hyper-Pipelining Sorğunun İcrası alqoritminə əsaslanan vektorlaşdırılmış sorğuların icrası mühərrikinə əsaslanır. bir əməliyyatda bir anda dəyərlər. Layihə kodu MIT lisenziyası altında paylanır.

DuckDB-nin yeni versiyasında:

  • Sətirləri sütunlara və əksinə çevirmək üçün yeni "PIVOT" və "UNPIVOT" ifadələri əlavə edildi.
  • Məlumatların idxalı və ixracı zamanı təkmilləşdirilmiş paralelləşdirmə. Varsayılan olaraq, CSV formatındakı fayllardan çoxsaylı axınlara oxumaq və çox yivli yazı Parket, CSV və JSON formatlarından istifadə edərkən həyata keçirilir.
  • Fayl yollarını təyin edərkən qovluqlar üzərində rekursiv təkrarlamaq üçün "**" operatoru əlavə edildi (məsələn, FROM "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Qeydlərin birləşdirilməsi meyarının dəqiq deyil, dəyərlərin təxmini uyğunluğu olduğu zaman seriyası (müəyyən vaxt intervallarında parametr dəyərlərinin dilimləri) şəklində məlumatlar üçün birləşmə əməliyyatları üçün əlavə dəstək (JOIN) zamanla bir sahədə (məsələn, qeydləri birləşdirə bilərsiniz, vaxt 1 dəqiqədən çox olmayan).
  • Verilənlər bazası metaməlumatlarının təxirə salınmış yüklənməsi həyata keçirildi ki, bu da DBMS-nin işə salınmasını XNUMX dəfə sürətləndirməyə imkan verdi.
  • Python-da xüsusi funksiyaları birləşdirmək üçün əlavə dəstək.
  • Apache Arrow istifadə edərək məlumat ötürülməsi üçün ADBC ​​(Arrow Database Connectivity) API üçün əlavə dəstək.
  • Swift kodu ilə inteqrasiya üçün bağlanma həyata keçirilmişdir.
  • Bölmə ("/") operatorunun davranışı dəyişdirildi, indi tam ədəd əməliyyatları əvəzinə defolt olaraq üzən nöqtə hesablamalarını yerinə yetirir. Tam ədədlərin bölünməsi üçün yeni "//" operatoru təklif edilmişdir. Köhnə davranış "SET integer_division=true;" təyin edilməklə qaytarıla bilər.
  • Çeşidləmə zamanı null qeydlərin uçotu metodu "NULLS FIRST"-dən "NULLS LAST"-ə dəyişdirildi, yəni. NULL dəyərlər indi siyahının əvvəlində deyil, sonunda göstəriləcək. Köhnə davranış "SET default_null_order='nulls_first';" parametri ilə bərpa edilə bilər.

Əlavə olaraq, Facebook tərəfindən hazırlanmış və SQLite ilə saxlanılan prosedurlardan istifadə üçün kod generatoru təmin edən CG/SQL layihəsini qeyd etmək olar. CG/SQL, T-SQL-in (Transact-SQL) xüsusi dialektində saxlanılan prosedurları tərtib etməyə imkan verir ki, bu da standart C kitabxanasının funksiyalarını çağırmağa və SQLite-də verilənlərə daxil olmağa imkan verir. Yaradılmış saxlanan prosedurlar müəyyən edilmiş hərəkətləri yerinə yetirmək və mürəkkəb sorğuları emal etmək üçün SQLite C API-dən istifadə edən C koduna yığılır. Tərtib edilmiş saxlanılan prosedurlar C, Java və Objective-C proqramları ilə əlaqələndirilə bilər. Layihə kodu C dilində yazılmışdır və MIT lisenziyası altında paylanmışdır.

Mənbə: opennet.ru

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