DuckDB 0.6.0,發布了用於分析查詢的 SQLite 變體

DuckDB 0.6.0 DBMS 版本現已推出,它結合了 SQLite 的功能,例如緊湊性、以嵌入式庫形式連接的能力、將數據庫存儲在單個文件中和方便的 CLI 界面,以及用於執行覆蓋大部分存儲數據的分析查詢的工具和優化,例如,對錶的全部內容進行聚合或合併多個大表。 該項目代碼是根據 MIT 許可證分發的。 由於存儲庫格式尚未穩定並且版本之間存在變化,因此開發仍處於形成實驗版本的階段。

DuckDB 提供了 SQL 語言的擴展方言,其中包括處理非常複雜和長時間運行的查詢的附加功能。 它支持使用複雜類型(數組、結構、聯合)以及執行任意和嵌套相關子查詢的能力。 支持同時執行多個查詢,直接從 CSV 和 Parquet 格式的文件執行查詢。 可以從 PostgreSQL DBMS 導入。

除了來自 SQLite 的 shell 代碼外,該項目還使用了來自 PostgreSQL 的解析器、來自 MonetDB 的 Date Math 組件、自己的窗口函數實現(基於線段樹聚合算法)、基於 RE2 庫的正則表達式處理器、自己的查詢優化器、用於管理任務同時執行的 MVCC 機制(多版本並發控制)以及基於 Hyper-Pipelined Query Execut 算法的矢量化查詢執行引擎,它允許您處理大量值​​​​一次操作即可完成。

新版本的變化包括:

  • 改進存儲格式的工作仍在繼續。 已經實現了樂觀磁盤寫入模式,其中當在一個事務中加載大數據集時,數據被壓縮並從數據庫流式傳輸到文件,而無需等待 COMMIT 命令確認事務。 在COMMIT命令到達期間,數據已經寫入磁盤,當執行ROLLBACK時,數據被丟棄。 以前,數據最初完全存儲在內存中,提交後,數據被保存到磁盤上。
  • 添加了對數據並行加載到單獨表中的支持,這可以顯著提高多核系統上的加載速度。 例如,在之前的版本中,在150核CPU上加載10億行的數據庫需要91秒,而在新版本中,這個操作需要17秒。 並行加載有兩種模式——保留記錄順序和不保留記錄順序。
  • 對於數據壓縮,使用 FSST(快速靜態符號表)算法,該算法允許您使用類型匹配的通用字典將數據打包到行內。 新算法的應用使得測試數據庫的大小從761MB減少到251MB。
  • 為了壓縮浮點數(DOUBLE 和 FLOAT),提出了 Chimp 和 Patas 算法。 與之前的 Gorillas 算法相比,Chimp 提供了更高級別的壓縮和更快的解壓縮。 Patas算法在壓縮方面落後於Chimp,但在解壓縮速度上明顯更快,與讀取未壓縮數據幾乎相同。
  • 添加了將 CSV 文件中的數據加載到多個並行流中的實驗功能 (SET Experimental_parallel_csv=true),這顯著減少了大型 CSV 文件的加載時間。 例如,啟用該選項後,720 MB CSV 文件的下載時間從 3.5 秒減少到 0.6 秒。
  • 並行執行創建和管理索引的操作的可能性已經實現。 例如,對具有 16 萬條記錄的列執行 CREATE INDEX 操作的執行時間從 5.92 秒減少到 1.38 秒。
  • 提供了包含表達式“COUNT(DISTINCT col)”的查詢中聚合操作的並行化。
  • SQL 中添加了對 UNION 類型的支持,這允許將多個類型綁定到同一元素(例如,“UNION(num INT, error VARCHAR))”。
  • SQL 提供了生成以“FROM”而不是“SELECT”開頭的查詢的能力。 在本例中,假設查詢以“SELECT *”開頭。
  • SQL 添加了對“COLUMNS”表達式的支持,它允許您對多個列執行操作,而無需重複表達式。 例如,“從 obs 中選擇 MIN(COLUMNS(*));” 將導致對 obs 表中的每一列執行 MIN 函數,並且“SELECT COLUMNS('val[0-9]+') from obs;” 對於名稱由“val”和數字組成的列。
  • 添加了對列表操作的支持,例如“SELECT [x + 1 for x in [1, 2, 3]] AS l;”。
  • 優化內存消耗。 Linux平台默認使用jemalloc庫進行內存管理。 當內存有限時,哈希合併操作的性能顯著提高。
  • 在命令行界面中添加了“.mode duckbox”輸出模式,根據終端窗口的寬度丟棄中間列(適合快速直觀地評估具有大量列的查詢結果,例如“SELECT * FROM tbl”,通常分佈在幾行中)。 使用“.maxrows X”參數,您還可以限制輸出行數。
  • CLI 提供考慮上下文的輸入自動完成功能(完成關鍵字、表名、函數、列名和文件名的輸入)。
  • 默認情況下啟用 CLI 以顯示查詢進度指示器。

來源: opennet.ru

添加評論