DBMS SQLite 3.42 va DuckDB 0.8.0 ning chiqarilishi. SQLite uchun saqlangan protseduralarni amalga oshirish bilan CG/SQL

Plagin kutubxonasi sifatida yaratilgan engil ma'lumotlar bazasi bo'lgan SQLite 3.42 versiyasi nashr etildi. SQLite kodi ommaviy domenda tarqatiladi, ya'ni. har qanday maqsadda cheklovlarsiz va bepul foydalanish mumkin. SQLite ishlab chiquvchilari uchun moliyaviy yordam Adobe, Oracle, Mozilla, Bentley va Bloomberg kabi kompaniyalarni o'z ichiga olgan maxsus yaratilgan konsorsium tomonidan amalga oshiriladi.

Asosiy o'zgarishlar:

  • FTS5 to'liq matnli indekslari uchun xavfsiz o'chirish buyrug'i amalga oshiriladi, bu o'chirilgandan keyin barcha qoldiq ma'lumotlarni to'liq tozalaydi.
  • JSON formatidagi ma'lumotlarni qayta ishlash funksiyalari endi JSON5 kengaytmalarini qo'llab-quvvatlaydi.
  • Yaxshilangan so'rovlar rejalashtiruvchisi. Ko'rishlar sonini optimallashtirish sukut bo'yicha yoqilgan. Quyi so'rovlarda foydalanilmagan ustunlar bilan ishlash bekor qilindi. Yaxshilangan surish-pastga optimallashtirish amalga oshirish.
  • Sinovda ".testctrl" kabi xavfli buyruqlardan foydalanishga ruxsat berish uchun CLI-ga "--unsafe-testing" opsiyasi qo'shildi. Xavfsiz rejimda ("--safe") ".log on" va ".log off" buyruqlariga ruxsat beriladi. Variantlarni qayta ishlash o'chirilgan argumentlar uchun "—" ajratgichni qo'llab-quvvatlash qo'shildi. Infinity va NaN qiymatlari bilan bog'liq ":inf" va ":nan" parametrlari qo'shildi.
  • Ilova tomonidan belgilangan SQL funksiyalarining nomlari CROSS, FULL, INNER, LEFT, NATURAL, OUTER va RIGHT kalit so‘zlari bilan kesishishiga ruxsat etiladi.
  • Kengaytirilgan PRAGMA integrity_check imkoniyatlari. NO NULL sharti bo'lgan ustunlarda NaN qiymatini belgilash uchun tekshirish qo'shildi. Xato xabarlarining ma'lumotlar tarkibi yaxshilandi.
  • Seansni qo'shish ROWIDsiz jadvallardagi o'zgarishlarni ushlab turish imkonini beradi.
  • Vaqt va sana bilan ishlash funksiyalariga soniyalarning kasrlaridan foydalanish uchun "subsek" modifikatori qo'shildi.
  • Massivlar va JSON obyektlari uchun standart rekursiya chuqurligi 2000 dan 1000 gacha qisqartirildi.

Bundan tashqari, SQLite variantini ishlab chiqadigan DuckDB 0.8.0 DBMS relizi shakllantirildi, u saqlangan ma'lumotlarning muhim qismini qamrab oluvchi analitik so'rovlarni bajarish uchun xususiyatlar va optimallashtirishlar bilan takomillashtirildi, masalan, jadvallarning butun tarkibini jamlash yoki bir nechtasini birlashtirish. katta stollar. SQL tilining kengaytirilgan dialekti, jumladan, juda murakkab va uzoq davom etadigan so'rovlarni boshqarish uchun qo'shimcha imkoniyatlar, shuningdek, murakkab turlarni (massivlar, tuzilmalar, birlashmalar) qo'llab-quvvatlash, bir vaqtning o'zida bir nechta so'rovlarni bajarish va so'rovlarni to'g'ridan-to'g'ri CSV, JSON va Parket formatidagi fayllar. PostgreSQL DBMS dan import qilish mumkin.

SQLite-ning qobiq kodiga qo'shimcha ravishda, loyiha alohida kutubxonaga ko'chirilgan PostgreSQL-dan tahlil qiluvchidan, MonetDB-dan Date Math komponentidan, oyna funktsiyalarini o'z amalga oshirishidan (Segment Tree Aggregation algoritmi asosida), oddiy ifoda protsessoridan foydalanadi. RE2 kutubxonasi, o'zining so'rovlar optimallashtiruvchisi, MVCC boshqaruv mexanizmi, bir vaqtning o'zida vazifalarni bajarish (Multi-Version Concurrency Control), shuningdek, katta hajmli so'rovlarni qayta ishlashga imkon beruvchi Hyper-Pipelining Query Execution algoritmiga asoslangan vektorlashtirilgan so'rovlarni bajarish mexanizmi. qiymatlarni bir vaqtning o'zida bitta operatsiyada. Loyiha kodi MIT litsenziyasi ostida tarqatiladi.

DuckDB ning yangi versiyasida:

  • Qatorlarni ustunlarga va aksincha aylantirish uchun yangi "PIVOT" va "UNPIVOT" iboralari qo'shildi.
  • Ma'lumotlarni import qilish va eksport qilishda yaxshilangan parallelizatsiya. Odatiy bo'lib, CSV formatidagi fayllardan bir nechta oqimlarga o'qish va ko'p tarmoqli yozish Parket, CSV va JSON formatlaridan foydalanganda amalga oshiriladi.
  • Fayl yoʻllarini aniqlashda kataloglar boʻyicha rekursiv takrorlash uchun “**” operatori qoʻshildi (masalan, FROM “'data/glob/crawl/stackoverflow/**/*.csv';").
  • Vaqt seriyasi (belgilangan vaqt oralig'idagi parametr qiymatlari bo'laklari) ko'rinishidagi ma'lumotlar uchun birlashtirish operatsiyalarini qo'llab-quvvatlash (JOIN) qo'shildi, bunda yozuvlarni birlashtirish mezoni aniq emas, balki qiymatlarning taxminiy mosligi hisoblanadi. vaqt bilan maydonda (masalan, siz 1 daqiqadan ko'p bo'lmagan vaqt bilan farq qiladigan yozuvlarni birlashtirishingiz mumkin).
  • Ma'lumotlar bazasi metama'lumotlarini kechiktirilgan yuklash amalga oshirildi, bu ma'lumotlar bazasini ishga tushirishni o'n barobar tezlashtirish imkonini berdi.
  • Python-da maxsus funktsiyalarni ulash uchun qo'shimcha yordam.
  • Apache Arrow yordamida ma'lumotlarni uzatish uchun ADBC ​​(Arrow Database Connectivity) API qo'llab-quvvatlashi qo'shildi.
  • Swift kodi bilan integratsiya qilish uchun ulanish amalga oshirildi.
  • Bo'linish ("/") operatorining xatti-harakati o'zgartirildi, endi u butun son operatsiyalari o'rniga sukut bo'yicha suzuvchi nuqta hisoblarini bajaradi. Butun sonlarga bo'lish uchun yangi "//" operatori taklif qilindi. Eski xatti-harakatni "SET integer_division=true;" o'rnatish orqali qaytarish mumkin.
  • Saralashda null yozuvlarni hisobga olish usuli "NULLS FIRST" dan "NULLS LAST" ga o'zgartirildi, ya'ni. NULL qiymatlari endi ro'yxat boshida emas, oxirida ko'rsatiladi. Eski xatti-harakatni "SET default_null_order='nulls_first';" sozlamasi bilan tiklash mumkin.

Bundan tashqari, Facebook tomonidan ishlab chiqilgan, SQLite bilan saqlangan protseduralardan foydalanish uchun kod generatorini taqdim etadigan CG/SQL loyihasini qayd etish mumkin. CG/SQL T-SQL ning maxsus dialektida (Transact-SQL) saqlangan protseduralarni yozish imkonini beradi, bu esa standart C kutubxonasining funksiyalarini chaqirish va SQLite-da ma'lumotlarga kirish imkonini beradi. Yaratilgan saqlangan protseduralar belgilangan amallarni bajarish va murakkab so'rovlarni qayta ishlash uchun SQLite C API dan foydalanadigan C kodiga kompilyatsiya qilinadi. Kompilyatsiya qilingan saqlangan protseduralar C, Java va Objective-C dasturlari bilan bog'lanishi mumkin. Loyiha kodi C tilida yozilgan va MIT litsenziyasi ostida tarqatiladi.

Manba: opennet.ru

a Izoh qo'shish