Ngaleupaskeun DBMS SQLite 3.42 jeung DuckDB 0.8.0. CG / SQL kalayan palaksanaan prosedur disimpen pikeun SQLite

Pelepasan SQLite 3.42, DBMS ringan anu dirancang salaku perpustakaan plug-in, parantos diterbitkeun. Kode SQLite disebarkeun salaku domain publik, i.e. tiasa dianggo tanpa larangan sareng gratis pikeun tujuan naon waé. Pangrojong kauangan pikeun pamekar SQLite disayogikeun ku konsorsium anu didamel khusus, anu kalebet perusahaan sapertos Adobe, Oracle, Mozilla, Bentley sareng Bloomberg.

Parobahan utama:

  • Pikeun indéks téks lengkep FTS5, paréntah ngahapus-aman parantos dilaksanakeun, anu lengkep ngabersihkeun sadaya data sésa saatos ngahapus.
  • Fungsi pikeun ngolah data JSON ayeuna ngadukung ekstensi JSON5.
  • Nu Ngarencana query ningkat. Sacara standar, optimasi count-of-view diaktipkeun. Ngolah kolom anu henteu dianggo dina subqueries dileungitkeun. Ningkatkeun palaksanaan optimasi push-down.
  • Ditambahkeun "--unsafe-testing" pilihan kana panganteur garis paréntah, anu ngamungkinkeun pamakéan sababaraha paréntah bahaya, kayaning ".testctrl", dimaksudkeun pikeun pamakéan dina nguji. Dina modeu aman ("-aman"), pamakéan ".log on" jeung ".log off" Paréntah diwenangkeun. Ditambahkeun dukungan pikeun pembatas "-", pikeun argumen anu saatosna pamrosésan pilihan ditumpurkeun. Ditambahkeun parameter ": inf" sareng ": nan" pakait sareng infinity sareng nilai NaN.
  • Ngaran fungsi SQL anu ditetepkeun ku aplikasi diidinan tumpang tindih sareng kecap konci CROSS, FULL, INNER, KIRI, NATURAL, OUTER, sareng KANAN.
  • Kamampuh PRAGMA integrity_check geus dimekarkeun. Katambah mariksa pikeun nangtukeun nilai NaN dina kolom kalayan kaayaan NOT NULL. Ningkatkeun eusi inpormasi pesen kasalahan.
  • Sesi tambihan ngamungkinkeun intercepting parobahan tina tabel tanpa ROWID.
  • The "subsec" modifier geus ditambahkeun kana fungsi pikeun gawé bareng waktu jeung kaping ngagunakeun fraksi detik.
  • Jero rekursi standar pikeun arrays sareng objék JSON parantos dikirangan tina 2000 ka 1000.

Sajaba ti éta, sékrési DuckDB 0.8.0 DBMS geus dijieun, nu ngamekarkeun versi SQLite, dimekarkeun kalawan kamampuhan tur optimizations pikeun executing queries analitik ngawengku bagian signifikan tina data disimpen, contona, ngajalankeun aggregation tina sakabéh eusi. tina tabel atawa merging sababaraha tabel badag. Nyadiakeun dialek canggih tina SQL nu ngawengku kamampuhan tambahan pikeun ngolah queries pisan kompléks jeung waktu-consuming, sarta ogé ngarojong tipe kompléks (arrays, struktur, union), ngajalankeun sababaraha queries sakaligus, sarta ngajalankeun queries langsung ti CSV, JSON, sarta file Parquet. . Kasebut nyaéta dimungkinkeun pikeun ngimpor ti PostgreSQL DBMS.

Salian kode cangkang ti SQLite, proyék ngagunakeun parser ti PostgreSQL dina perpustakaan misah, komponén Tanggal Math ti MonetDB, palaksanaan sorangan fungsi jandela (dumasar kana algoritma Bagéan Tangkal Aggregation), processor éksprési biasa dumasar kana. perpustakaan RE2, optimizer query sorangan, sarta mékanisme kontrol MVCC palaksanaan simultaneous tugas (Multi-Vérsi Concurrency Control), kitu ogé mesin palaksanaan query vectorized dumasar kana algoritma Hyper-Pipelining Query Execution, nu ngidinan set badag tina nilai. pikeun diolah sakaligus dina hiji operasi. Kodeu proyék disebarkeun dina lisénsi MIT.

Dina versi anyar DuckDB:

  • Ditambahkeun éksprési anyar "PIVOT" sareng "UNPIVOT" pikeun ngarobih baris jadi kolom sareng sabalikna.
  • Ningkatkeun paralelisasi nalika ngimpor sareng ngékspor data. Sacara standar, bacaan multi-threaded tina file CSV sareng tulisan multi-threaded dilaksanakeun nalika nganggo format Parquet, CSV sareng JSON.
  • Ditambahkeun "**" operator pikeun recursively iterate ngaliwatan directories nalika nangtukeun jalur file (contona, FROM "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Ditambahkeun dukungan pikeun operasi merging (JOIN) pikeun data dina bentuk séri waktos (potongan nilai parameter dina interval waktos anu ditangtukeun), dimana kritéria pikeun ngahijikeun rékaman sanés persis, tapi perkiraan kabeneran nilai. dina widang kalawan waktu (contona, Anjeun bisa ngagabungkeun rékaman, waktu nu béda teu leuwih ti 1 menit).
  • Dilaksanakeun loading puguh tina metadata database, anu ngamungkinkeun pikeun nyepetkeun peluncuran DBMS ku puluhan kali.
  • Ditambahkeun dukungan pikeun nyambungkeun fungsi khusus dina Python.
  • Ditambahkeun dukungan pikeun API ADBC ​​(Arrow Database Connectivity) pikeun nransferkeun data nganggo Apache Arrow.
  • A mengikat geus dilaksanakeun pikeun integrasi jeung kode Swift.
  • Ngarobah paripolah operator division ("/") pikeun ngalakukeun itungan floating point tinimbang operasi integer sacara standar. A operator anyar "//" diusulkeun pikeun division integer. Paripolah heubeul bisa balik ku netepkeun "SET integer_division = leres;".
  • Metoda nyokot kana akun enol rékaman nalika asihan geus robah tina "NULLS FIRST" kana "NULLS LAST", i.e. Nilai NULL ayeuna bakal dicitak dina tungtung tinimbang awal daptar. Paripolah anu lami tiasa dipulangkeun ku netepkeun "SET default_null_order = 'nulls_first';".

Salaku tambahan, urang tiasa nyatet proyék CG / SQL anu dikembangkeun ku Facebook, anu nyayogikeun generator kode pikeun ngagunakeun prosedur anu disimpen sareng SQLite. CG / SQL ngidinan Anjeun pikeun nulis prosedur disimpen dina dialek husus tina T-SQL (Transact-SQL), nu ngidinan pungsi nelepon perpustakaan C baku sarta aksés data dina SQLite. Prosedur disimpen dihasilkeun téh disusun kana kode C anu ngagunakeun SQLite C API pikeun ngalakukeun lampah husus sarta prosés queries kompléks. Prosedur anu disimpen anu disusun tiasa dihubungkeun ka program C, Java, sareng Objective-C. Kodeu proyék ditulis dina C sareng disebarkeun dina lisénsi MIT.

sumber: opennet.ru

Tambahkeun komentar