Keluaran DBMS SQLite 3.42 dan DuckDB 0.8.0. CG/SQL dengan pelaksanaan prosedur tersimpan untuk SQLite

Keluaran SQLite 3.42, DBMS ringan yang direka sebagai perpustakaan pemalam, telah diterbitkan. Kod SQLite diedarkan sebagai domain awam, i.e. boleh digunakan tanpa sekatan dan percuma untuk sebarang tujuan. Sokongan kewangan untuk pembangun SQLite disediakan oleh konsortium yang dicipta khas, termasuk syarikat seperti Adobe, Oracle, Mozilla, Bentley dan Bloomberg.

Perubahan utama:

  • Untuk indeks teks penuh FTS5, perintah padam-selamat telah dilaksanakan, yang mengosongkan sepenuhnya semua data sisa selepas pemadaman.
  • Fungsi untuk memproses data JSON kini menyokong sambungan JSON5.
  • Perancang pertanyaan yang dipertingkatkan. Secara lalai, pengoptimuman kiraan paparan didayakan. Pemprosesan lajur yang tidak digunakan dalam subkueri dihapuskan. Peningkatan pelaksanaan pengoptimuman tolak ke bawah.
  • Menambahkan pilihan "--unsafe-testing" pada antara muka baris arahan, yang membenarkan penggunaan beberapa arahan berbahaya, seperti ".testctrl", bertujuan untuk digunakan dalam ujian. Dalam mod selamat (“-safe”), penggunaan arahan “.log on” dan “.log off” dibenarkan. Menambahkan sokongan untuk pembatas "—", untuk argumen yang selepas itu pemprosesan pilihan dilumpuhkan. Menambahkan parameter ":inf" dan ":nan" yang dikaitkan dengan nilai infiniti dan NaN.
  • Nama fungsi SQL yang ditakrifkan aplikasi membenarkan persilangan dengan kata kunci LINTAS, PENUH, DALAM, KIRI, SEMULAJADI, LUAR dan KANAN.
  • Keupayaan PRAGMA integrity_check telah diperluaskan. Penambahan pemeriksaan untuk menentukan nilai NaN dalam lajur dengan keadaan NOT NULL. Kandungan maklumat yang dipertingkatkan bagi mesej ralat.
  • Alat tambah sesi membenarkan memintas perubahan daripada jadual tanpa ROWID.
  • Pengubah suai "subsec" telah ditambahkan pada fungsi untuk bekerja dengan masa dan tarikh untuk menggunakan pecahan saat.
  • Kedalaman rekursi lalai untuk tatasusunan dan objek JSON telah dikurangkan daripada 2000 kepada 1000.

Di samping itu, keluaran DuckDB 0.8.0 DBMS telah dicipta, yang membangunkan versi SQLite, diperluas dengan keupayaan dan pengoptimuman untuk melaksanakan pertanyaan analitik yang meliputi sebahagian besar data yang disimpan, contohnya, melaksanakan pengagregatan keseluruhan kandungan daripada jadual atau menggabungkan beberapa jadual besar. Menyediakan dialek lanjutan SQL yang merangkumi keupayaan tambahan untuk memproses pertanyaan yang sangat kompleks dan memakan masa, dan juga menyokong jenis kompleks (tatasusunan, struktur, kesatuan), menjalankan berbilang pertanyaan serentak dan menjalankan pertanyaan terus daripada fail CSV, JSON dan Parket . Ia adalah mungkin untuk mengimport dari DBMS PostgreSQL.

Sebagai tambahan kepada kod shell daripada SQLite, projek ini menggunakan penghurai daripada PostgreSQL dalam perpustakaan berasingan, komponen Date Math daripada MonetDB, pelaksanaan fungsi tetingkapnya sendiri (berdasarkan algoritma Pengagregatan Pokok Segmen), pemproses ungkapan biasa berdasarkan perpustakaan RE2, pengoptimum pertanyaannya sendiri dan mekanisme kawalan MVCC pelaksanaan tugas secara serentak (Kawalan Konkurensi Berbilang Versi), serta enjin pelaksanaan pertanyaan bervektor berdasarkan algoritma Perlaksanaan Pertanyaan Hyper-Pipelining, yang membenarkan set nilai yang besar untuk diproses sekali gus dalam satu operasi. Kod projek diedarkan di bawah lesen MIT.

Dalam versi baharu DuckDB:

  • Menambah ungkapan baharu "PIVOT" dan "UNPIVOT" untuk mengubah baris menjadi lajur dan sebaliknya.
  • Penyelarasan yang lebih baik apabila mengimport dan mengeksport data. Secara lalai, bacaan berbilang benang daripada fail CSV dan tulisan berbilang benang dilaksanakan apabila menggunakan format Parket, CSV dan JSON.
  • Menambahkan pengendali "**" untuk melelar secara rekursif melalui direktori apabila menentukan laluan fail (contohnya, DARI "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Sokongan tambahan untuk operasi penggabungan (JOIN) untuk data dalam bentuk siri masa (kepingan nilai parameter pada selang masa tertentu), di mana kriteria untuk penggabungan rekod bukanlah tepat, tetapi anggaran kebetulan nilai. dalam medan dengan masa (contohnya, anda boleh menggabungkan rekod, masa yang berbeza tidak lebih daripada 1 minit).
  • Melaksanakan pemuatan malas metadata pangkalan data, yang memungkinkan untuk mempercepatkan pelancaran DBMS sebanyak puluhan kali.
  • Menambah sokongan untuk menyambungkan fungsi tersuai dalam Python.
  • Menambah sokongan untuk API ADBC ​​(Arrow Database Connectivity) untuk memindahkan data menggunakan Apache Arrow.
  • Pengikatan telah dilaksanakan untuk penyepaduan dengan kod Swift.
  • Mengubah tingkah laku operator bahagian ("/") untuk melakukan pengiraan titik terapung dan bukannya operasi integer secara lalai. Pengendali baharu “//” dicadangkan untuk pembahagian integer. Tingkah laku lama boleh dikembalikan dengan menetapkan "SET integer_division=true;".
  • Kaedah mengambil kira rekod sifar apabila pengisihan telah ditukar daripada "NULLS FIRST" kepada "NULLS LAST", i.e. Nilai NULL kini akan dicetak pada penghujung dan bukannya permulaan senarai. Tingkah laku lama boleh dikembalikan dengan menetapkan “SET default_null_order='nulls_first';”.

Selain itu, kita boleh perhatikan projek CG/SQL yang dibangunkan oleh Facebook, yang menyediakan penjana kod untuk menggunakan prosedur tersimpan dengan SQLite. CG/SQL membolehkan anda menulis prosedur tersimpan dalam dialek khas T-SQL (Transact-SQL), yang membolehkan fungsi panggilan pustaka C standard dan mengakses data dalam SQLite. Prosedur tersimpan yang dijana disusun ke dalam kod C yang menggunakan API SQLite C untuk melaksanakan tindakan tertentu dan memproses pertanyaan kompleks. Prosedur tersimpan yang disusun boleh disambungkan ke program C, Java dan Objektif-C. Kod projek ditulis dalam C dan diedarkan di bawah lesen MIT.

Sumber: opennet.ru

Tambah komen