DuckDB 0.6.0 Nəşr edilmiş, Analitik Sorğular üçün SQLite Seçimi

DuckDB 0.6.0 DBMS-nin buraxılışı mövcuddur, SQLite-in yığcamlıq, quraşdırılmış kitabxana şəklində qoşulma qabiliyyəti, verilənlər bazasını bir faylda saxlamaq və rahat CLI interfeysi, icrası üçün alətlər və optimallaşdırmalar kimi xüsusiyyətlərini özündə birləşdirən mövcuddur. saxlanılan məlumatların əhəmiyyətli bir hissəsini əhatə edən analitik sorğular, məsələn, cədvəllərin bütün məzmununu birləşdirən və ya bir neçə böyük cədvəli birləşdirən. Layihə kodu MIT lisenziyası altında paylanır. Yaddaş formatı hələ sabitləşmədiyi və versiyadan versiyaya dəyişdiyi üçün inkişaf hələ də eksperimental buraxılışların formalaşma mərhələsindədir.

DuckDB çox mürəkkəb və vaxt aparan sorğuların idarə edilməsi üçün əlavə imkanları özündə birləşdirən təkmil SQL ləhcəsini təqdim edir. Mürəkkəb tiplərin (massivlər, strukturlar, birliklər) istifadəsi və ixtiyari və iç-içə korrelyasiya alt sorğularını icra etmək imkanı dəstəklənir. O, eyni vaxtda birdən çox sorğu işlətməyi, birbaşa CSV və Parket fayllarından sorğuları icra etməyi dəstəkləyir. PostgreSQL DBMS-dən idxal etmək mümkündür.

SQLite-dən qabıq koduna əlavə olaraq, layihə ayrıca kitabxanada PostgreSQL-dən analizatordan, MonetDB-dən Tarix Riyaziyyat komponentindən, pəncərə funksiyalarının özünün həyata keçirilməsindən (Seqment Ağacı Aqreqasiya alqoritmi əsasında), müntəzəm ifadə prosessorundan istifadə edir. RE2 kitabxanası, öz sorğu optimallaşdırıcısı və tapşırıqların eyni vaxtda yerinə yetirilməsi üçün MVCC idarəetmə mexanizmi (Multi-Version Concurrency Control), həmçinin böyük dəyər dəstlərinə imkan verən Hyper-Pipelining Query Execution alqoritminə əsaslanan vektorlaşdırılmış sorğu icra mühərriki bir əməliyyatda bir anda işlənməlidir.

Yeni buraxılışda dəyişikliklər arasında:

  • Yaddaş formatının təkmilləşdirilməsi üzrə işlər davam etdirildi. Optimist disk yazma rejimi tətbiq edilmişdir ki, bu rejimdə böyük bir məlumat toplusunu bir tranzaksiyada yükləyərkən, əməliyyatın COMMIT əmri ilə təsdiqlənməsini gözləmədən, axın rejimində verilənlər bazasından fayla sıxılır və yazılır. . COMMIT əmri qəbul edildikdə, məlumatlar artıq diskə yazılır və ROLLBACK yerinə yetirildikdə, atılır. Əvvəllər məlumatlar əvvəlcə tamamilə yaddaşda saxlanılırdı, yerinə yetirildikdə isə diskdə saxlanılırdı.
  • Çox nüvəli sistemlərdə yükləmə sürətini əhəmiyyətli dərəcədə artırmağa imkan verən ayrı-ayrı cədvəllərə verilənlərin paralel yüklənməsi üçün əlavə dəstək. Məsələn, əvvəlki buraxılışda 150 nüvəli CPU-da 10 milyon cərgədən ibarət verilənlər bazasını yükləmək 91 saniyə çəkirdisə, yeni versiyada bu əməliyyat 17 saniyəyə tamamlanır. İki paralel yükləmə rejimi var - qeydlərin ardıcıllığının qorunması ilə və nizamın qorunması olmadan.
  • Məlumatların sıxılması üçün FSST (Fast Static Symbol Cədvəli) alqoritmi istifadə olunur ki, bu da tipik uyğunluqların ümumi lüğətindən istifadə edərək məlumatları sətirlərin içərisinə yığmağa imkan verir. Yeni alqoritmin istifadəsi test bazasının ölçüsünü 761MB-dan 251MB-a qədər azaltmağa imkan verib.
  • Üzən nöqtə nömrələrini (DOUBLE və FLOAT) sıxışdırmaq üçün Chimp və Patas alqoritmləri təklif edilmişdir. Əvvəlki Gorillas alqoritmi ilə müqayisədə, Chimp daha yüksək səviyyələrdə sıxılma və daha sürətli dekompressiya təmin edir. Patas alqoritmi sıxılma nisbətinə görə Chimp-dən geri qalır, lakin dekompressiya sürətinə görə daha sürətlidir, bu, sıxılmamış məlumatları oxumaqdan demək olar ki, heç bir fərqi yoxdur.
  • CSV fayllarından məlumatları çoxsaylı paralel axınlara yükləmək üçün eksperimental imkan əlavə edildi (SET experimental_parallel_csv=true), bu, böyük CSV fayllarının yüklənməsi üçün lazım olan vaxtı əhəmiyyətli dərəcədə azaldır. Məsələn, bu seçim aktiv olduqda, 720 MB-lıq CSV faylı üçün yükləmə vaxtı 3.5 saniyədən 0.6 saniyəyə endirildi.
  • İndekslərin yaradılması və idarə edilməsi əməliyyatlarının paralel icrası imkanı həyata keçirilmişdir. Məsələn, 16 milyon qeyddən ibarət sütunda CREATE INDEX əməliyyatı 5.92 saniyədən 1.38 saniyəyə endirildi.
  • “COUNT(DISTINCT col)” ifadəsini ehtiva edən sorğularda toplama əməliyyatlarının paralelləşdirilməsi aktivləşdirildi.
  • SQL UNION tipinə dəstək əlavə etdi ki, bu da bir neçə növün bir elementə bağlanmasına imkan verir (məsələn, “UNION(num INT, xəta VARCHAR))”).
  • SQL “SEÇ” əvəzinə “FROM” sözü ilə başlayan sorğular yaratmaq imkanı verir. Bu halda sorğunun "SEÇ *" ilə başladığı güman edilir.
  • SQL, ifadəni təkrarlamadan bir neçə sütunda əməliyyat yerinə yetirməyə imkan verən COLUMNS ifadəsi üçün əlavə dəstək verdi. Məsələn, "obs-dan MIN(COLUMNS(*)) SEÇ;" obs cədvəlindəki hər bir sütun üçün MIN funksiyasının yerinə yetirilməsinə səbəb olacaq və "obs-dan SÜTUNLAR SEÇİN('val[0-9]+');" "val" və rəqəmlərdən ibarət adı olan sütunlar üçün.
  • Siyahılarda əməliyyatlar üçün əlavə dəstək, məsələn, “SEÇİN [x + 1 in [1, 2, 3]] AS l;”.
  • Yaddaş istehlakı optimallaşdırılıb. Varsayılan olaraq, Linux platforması yaddaşın idarə edilməsi üçün jemalloc kitabxanasından istifadə edir. Yaddaş məhdud olduqda hash birləşmə əməliyyatlarının əhəmiyyətli dərəcədə təkmilləşdirilmiş performansı.
  • Komanda xətti interfeysinə terminal pəncərəsinin enini nəzərə alaraq orta sütunları ləğv edən “.mode duckbox” çıxış rejimi əlavə edildi (“SEÇ* kimi çoxlu sayda sütunlu sorğuların nəticələrini tez vizual qiymətləndirmək üçün uyğundur) FROM tbl”, normal rejimdə bir neçə sətirə yayılmışdır). “.maxrows X” parametrindən istifadə edərək, siz əlavə olaraq göstərilən cərgələrin sayını məhdudlaşdıra bilərsiniz.
  • CLI kontekst nəzərə alınmaqla daxiletmənin avtomatik tamamlamasını təmin edir (açar sözlər, cədvəl adları, funksiyalar, sütun adları və fayl adlarının daxil edilməsi tamamlanır).
  • CLI-də defolt olaraq aktivləşdirilmiş sorğu irəliləyiş göstəricisi var.

Mənbə: opennet.ru

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