DuckDB 0.6.0 diterbitkeun, Pilihan SQLite pikeun queries analitik

Pelepasan DuckDB 0.6.0 DBMS sayogi, ngagabungkeun sipat SQLite sapertos kompak, kamampuan pikeun nyambungkeun dina bentuk perpustakaan anu dipasang, nyimpen databés dina hiji file sareng antarmuka CLI anu merenah, kalayan alat sareng optimasi pikeun palaksanaan. queries analitik ngawengku bagian signifikan tina data nu disimpen, contona nu agrégat sakabéh eusi tabel atawa ngagabungkeun sababaraha tabel badag. Kodeu proyék disebarkeun dina lisénsi MIT. Pangwangunan masih dina tahap ngabentuk sékrési ékspérimén, sabab format panyimpen henteu acan stabil sareng robih tina vérsi ka vérsi.

DuckDB nyayogikeun dialék SQL canggih anu kalebet kamampuan tambahan pikeun nanganan patarosan anu rumit sareng nyéépkeun waktos. Pamakéan tipe kompléks (arrays, struktur, union) jeung kamampuhan pikeun ngaéksekusi wenang jeung nested subqueries correlated dirojong. Éta ngadukung ngajalankeun sababaraha patarosan sakaligus, ngajalankeun patarosan langsung tina file CSV sareng 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.

Diantara parobihan dina sékrési énggal:

  • Karya terus ningkatkeun format gudang. Modeu tulisan disk anu optimis parantos dilaksanakeun, dimana nalika ngamuat sakumpulan data anu ageung dina hiji transaksi, data dikomprés sareng diserat kana file tina pangkalan data dina mode streaming, tanpa ngantosan transaksi dikonfirmasi ku paréntah COMMIT. . Nalika paréntah COMMIT ditampi, data parantos ditulis kana disk, sareng nalika ROLLBACK dieksekusi, éta dipiceun. Saméméhna, data mimitina lengkep disimpen dina mémori, sareng nalika komitmen, éta disimpen kana disk.
  • Ditambahkeun rojongan pikeun loading paralel data kana tabel misah, nu ngidinan Anjeun pikeun nyata ngaronjatkeun speed loading on sistem multi-core. Contona, dina release saméméhna, loading database kalawan 150 juta baris dina CPU 10-inti nyandak 91 detik, tapi dina versi anyar operasi ieu réngsé dina 17 detik. Aya dua modeu loading paralel - kalayan pelestarian urutan rékaman sarta tanpa pelestarian urutan.
  • Pikeun komprési data, algoritma FSST (Fast Static Symbol Table) dipaké, nu ngidinan Anjeun pikeun ngarangkep data jero string maké kamus umum tina patandingan has. Pamakéan algoritma anyar ngamungkinkeun pikeun ngirangan ukuran database tés tina 761MB ka 251MB.
  • Algoritma Chimp sareng Patas parantos diajukeun pikeun ngompres angka titik ngambang (GANDA sareng NGAMBANG). Dibandingkeun jeung algoritma Gorillas saméméhna, Chimp nyadiakeun tingkat luhur komprési jeung decompression gancang. Algoritma Patas lags balik Chimp dina rasio komprési, tapi leuwih gancang dina speed decompression, nu ampir teu béda ti maca data uncompressed.
  • Ditambahkeun kamampuan ékspérimén pikeun ngamuat data tina file CSV kana sababaraha aliran paralel (SET experimental_parallel_csv=true), anu sacara signifikan ngirangan waktos anu diperyogikeun pikeun ngamuat file CSV ageung. Salaku conto, nalika pilihan ieu diaktipkeun, waktos undeuran pikeun file CSV 720 MB diréduksi tina 3.5 ka 0.6 detik.
  • Kamungkinan palaksanaan paralel nyiptakeun indéks sareng operasi manajemén parantos dilaksanakeun. Salaku conto, operasi CREATE INDEX dina kolom kalayan 16 juta rékaman diréduksi tina 5.92 ka 1.38 detik.
  • Diaktipkeun parallelization operasi aggregation dina queries ngandung éksprési "COUNT(DISTINCT col)".
  • SQL parantos nambihan dukungan pikeun jinis UNION, anu ngamungkinkeun sababaraha jinis kabeungkeut kana hiji unsur (contona, "UNION (num INT, kasalahan VARCHAR))").
  • SQL nyadiakeun kamampuhan pikeun ngabentuk queries nu dimimitian ku kecap "FROM" tinimbang "PILIH". Dina hal ieu, dianggap query dimimitian ku "PILIH *".
  • SQL parantos nambihan dukungan pikeun éksprési COLUMNS, anu ngamungkinkeun anjeun ngalaksanakeun operasi dina sababaraha kolom tanpa ngaduplikasi éksprési. Contona, "PILIH MIN (KOLOM (*)) ti obs;" bakal ngabalukarkeun fungsi MIN bisa dieksekusi pikeun tiap kolom dina tabel obs, sarta "PILIH COLUMNS ('val [0-9] +') ti obs;" pikeun kolom kalawan ngaran diwangun ku "val" jeung angka.
  • Ditambahkeun rojongan pikeun operasi dina daptar, contona, "PILIH [x + 1 pikeun x dina [1, 2, 3]] AS l;".
  • Konsumsi mémori parantos dioptimalkeun. Sacara standar, platform Linux nganggo perpustakaan jemalloc pikeun manajemén mémori. Ningkatkeun kinerja operasi hash merging sacara signifikan nalika mémori diwatesan.
  • Ditambahkeun ".mode duckbox" mode kaluaran kana panganteur garis paréntah, nu discards kolom tengah nyokot kana akun lebar tina jandela terminal (cocog pikeun gancang visually assessing hasil queries kalawan jumlah badag kolom, kayaning "PILIH * FROM tbl", anu dina modeu normal sumebar dina sababaraha garis). Ngagunakeun parameter ".maxrows X", Anjeun Sajaba bisa ngawatesan jumlah baris dipintonkeun.
  • CLI nyadiakeun autocompletion of input nyokot kana akun konteks (input kecap konci, ngaran tabel, fungsi, ngaran kolom jeung ngaran file geus réngsé).
  • CLI gaduh indikator kamajuan query diaktipkeun sacara standar.

sumber: opennet.ru

Tambahkeun komentar