Rilis DBMS SQLite 3.42 dan DuckDB 0.8.0. CG/SQL dengan penerapan prosedur tersimpan untuk SQLite

Rilis SQLite 3.42, DBMS ringan yang dirancang sebagai pustaka plug-in, telah dipublikasikan. Kode SQLite didistribusikan di domain publik, mis. dapat digunakan tanpa batasan dan gratis untuk tujuan apa pun. Dukungan keuangan untuk pengembang SQLite disediakan oleh konsorsium yang dibuat khusus, yang mencakup perusahaan seperti Adobe, Oracle, Mozilla, Bentley, dan Bloomberg.

Perubahan besar:

  • Untuk indeks teks lengkap FTS5, perintah hapus-aman diterapkan, yang sepenuhnya membersihkan semua data sisa setelah penghapusan.
  • Fungsi untuk memproses data dalam format JSON kini mendukung ekstensi JSON5.
  • Perencana kueri yang ditingkatkan. Pengoptimalan jumlah tampilan diaktifkan secara default. Menghilangkan penanganan kolom yang tidak digunakan dalam subkueri. Implementasi pengoptimalan push-down yang ditingkatkan.
  • Menambahkan opsi "--unsafe-testing" ke CLI untuk memungkinkan beberapa perintah berbahaya seperti ".testctrl" digunakan dalam pengujian. Dalam mode aman ("--safe"), perintah ".log on" dan ".log off" diperbolehkan. Menambahkan dukungan untuk pemisah "β€”", untuk argumen setelah pemrosesan opsi dinonaktifkan. Menambahkan parameter ":inf" dan ":nan" yang terkait dengan nilai infinity dan NaN.
  • Nama fungsi SQL yang ditentukan aplikasi diizinkan untuk bersinggungan dengan kata kunci CROSS, FULL, INNER, LEFT, NATURAL, OUTER, dan RIGHT.
  • Kemampuan pemeriksaan integritas PRAGMA yang diperluas. Menambahkan centang untuk menentukan nilai NaN di kolom dengan kondisi NOT NULL. Peningkatan konten informasi dari pesan kesalahan.
  • Penambahan sesi memungkinkan intersepsi perubahan dari tabel tanpa ROWID.
  • Pengubah "subsec" telah ditambahkan ke fungsi untuk bekerja dengan waktu dan tanggal untuk menggunakan sepersekian detik.
  • Mengurangi kedalaman rekursi default untuk array dan objek JSON dari tahun 2000 menjadi 1000.

Selain itu, rilis DBMS DuckDB 0.8.0 telah dibentuk, yang mengembangkan varian SQLite, ditingkatkan dengan fitur dan pengoptimalan untuk melakukan kueri analitik yang mencakup sebagian besar data yang disimpan, misalnya, menggabungkan seluruh konten tabel atau menggabungkan beberapa meja besar. Dialek bahasa SQL yang diperluas disediakan, termasuk kemampuan tambahan untuk menangani kueri yang sangat kompleks dan berjalan lama, serta dukungan untuk tipe kompleks (array, struktur, gabungan), eksekusi beberapa kueri secara bersamaan, dan eksekusi kueri langsung dari file dalam format CSV, JSON dan Parquet. Dimungkinkan untuk mengimpor dari DBMS PostgreSQL.

Selain kode shell dari SQLite, proyek ini menggunakan parser dari PostgreSQL, dipindahkan ke perpustakaan terpisah, komponen Date Math dari MonetDB, penerapan fungsi jendelanya sendiri (berdasarkan algoritma Agregasi Pohon Segmen), prosesor ekspresi reguler berdasarkan perpustakaan RE2, pengoptimal kuerinya sendiri, mekanisme kontrol MVCC eksekusi tugas secara simultan (Kontrol Konkurensi Multi-Versi), serta mesin eksekusi kueri vektor berdasarkan algoritme Eksekusi Kueri Hyper-Pipelining, yang memungkinkan pemrosesan set besar nilai sekaligus dalam satu operasi. Kode proyek didistribusikan di bawah lisensi MIT.

Di versi baru DuckDB:

  • Menambahkan ekspresi baru "PIVOT" dan "UNPIVOT" untuk mengubah baris menjadi kolom dan sebaliknya.
  • Peningkatan paralelisasi saat mengimpor dan mengekspor data. Secara default, membaca dari file dalam format CSV menjadi beberapa aliran dan penulisan multi-utas diimplementasikan saat menggunakan format Parquet, CSV, dan JSON.
  • Menambahkan operator "**" untuk mengulang direktori secara rekursif saat menentukan jalur file (mis. FROM "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Menambahkan dukungan untuk operasi penggabungan (JOIN) untuk data dalam bentuk deret waktu (irisan nilai parameter pada interval waktu tertentu), di mana kriteria untuk menggabungkan catatan tidak tepat, tetapi perkiraan kecocokan nilai di bidang dengan waktu (misalnya, Anda dapat menggabungkan catatan, waktu yang berbeda tidak lebih dari 1 menit).
  • Pemuatan metadata database yang ditangguhkan telah diterapkan, yang memungkinkan untuk mempercepat peluncuran DBMS sepuluh kali lipat.
  • Menambahkan dukungan untuk menghubungkan fungsi khusus dengan Python.
  • Menambahkan dukungan API ADBC ​​​​(Arrow Database Connectivity) untuk transfer data menggunakan Apache Arrow.
  • Pengikatan yang diterapkan untuk integrasi dengan kode Swift.
  • Mengubah perilaku operator divisi ("/"), yang sekarang melakukan perhitungan floating point secara default, bukan operasi bilangan bulat. Operator baru "//" telah diusulkan untuk pembagian bilangan bulat. Perilaku lama dapat dikembalikan dengan menyetel "SET integer_division=true;".
  • Metode penghitungan catatan nol saat pengurutan telah diubah dari "NULLS FIRST" menjadi "NULLS LAST", yaitu. Nilai NULL sekarang akan ditampilkan di bagian akhir, bukan di awal daftar. Perilaku lama dapat dipulihkan dengan pengaturan "SET default_null_order='nulls_first';".

Selain itu, proyek CG/SQL yang dikembangkan oleh Facebook, yang menyediakan pembuat kode untuk menggunakan prosedur tersimpan dengan SQLite, dapat dicatat. CG/SQL memungkinkan Anda menulis prosedur tersimpan dalam dialek khusus T-SQL (Transact-SQL), yang memungkinkan Anda memanggil fungsi pustaka C standar dan mengakses data dalam SQLite. Prosedur tersimpan yang dihasilkan dikompilasi ke dalam kode C yang menggunakan SQLite C API untuk melakukan tindakan tertentu dan memproses kueri kompleks. Prosedur tersimpan yang dikompilasi dapat dihubungkan ke program C, Java, dan Objective-C. Kode proyek ditulis dalam C dan didistribusikan di bawah lisensi MIT.

Sumber: opennet.ru

Tambah komentar