在靜態資料庫上高效地評估連接查詢是資料管理中的一個基本問題。 長期以來,研究人員一直致力於設計和分析能夠根據輸入和輸出大小最小化查詢執行總運行時間的演算法。 然而,在許多資料處理場景中,將查詢執行分為兩個階段是有益的:預處理階段和列舉階段。預處理階段計算一個空間高效的中間資料結構,而列舉階段則使用該資料結構盡可能快地列舉查詢結果,以最小化輸出結果中兩個連續元組之間的延遲。這種區分在以下幾個方面都是有益的:例如,在許多情況下,用戶希望盡快看到查詢的一個(或幾個)結果,在這種情況下,我們希望最小化預處理階段的時間,以便我們可以快速輸出第一個結果。另一方面,資料處理管道可能要求下游任務多次訪問查詢結果,在這種情況下,在預處理階段花費更多時間以保證更快的列舉速度和更小的延遲是更好的選擇。
資料庫文獻中的先前工作主要集中在尋找能夠以 O(|D|) 預處理時間(其中 D 是輸入資料庫實例)和在列舉階段具有恆定延遲來計算的查詢類別。該研究方向的主要結果表明,完全(即沒有投影)的非循環連接查詢 (CQ) 允許線性預處理時間和恆定延遲。如果 CQ 不是完全的,但其自由變數滿足自由連接屬性,則仍然可以實現相同的預處理時間和延遲保證。眾所周知,對於任何(可能是非完全的)非循環 CQ,在線性預處理時間後可以實現線性延遲。先前使用結構分解方法的工作將這些結果推廣到具有自由變數的任意 CQ,並表明可以使用 O(|D|fhw) 延遲列舉投影解,其中 fhw 是查詢的分數超樹寬度。此外,還顯示了關於具有固定數量元的連接查詢類別的二分法,其中可以使用多項式延遲 (WPD) 計算此類答案。當 CQ 是完全的但不是非循環的時,分解資料庫使用 O(|D|fhw) 預處理時間來實現恆定延遲。我們在此應當指出,我們始終可以在預處理期間計算和實例化查詢結果以實現恆定延遲列舉,但这需要指數級的空間。
上述先前工作研究了預處理時間-延遲權衡空間中的特定點。雖然完全非循環 CQ 的情況相對完整,但對於一般 CQ 而言並非如此,即使對於具有投影的非循環 CQ 也是如此。例如,考慮最簡單的此類查詢:Qtwo-path = πx,z(R(x, y)⋊⋉S(y, z)),它連接兩個二元關係,然後投影出連接屬性。對於此查詢,[BDG07] 排除了除非布爾矩陣乘法指數為 ω = 2,否則具有線性時間預處理的恆定延遲演算法。但是,我們可以通過 O(|D|) 預處理時間獲得 O(|D|) 延遲。我們還可以通過計算和存儲完整結果,通過 O(|D|2) 預處理獲得 O(1) 延遲。值得一問的是,在預處理時間和延遲之間的這種權衡中,是否存在其他有趣的點。為此,Kara 等人的開創性工作表明,對於任何分層 CQ1(可能帶有投影),預處理時間和延遲之間始終存在平滑的權衡。這是十多年來對涉及投影的查詢的 Bagan 等人結果的首次改進。應用於查詢 Qtwo-path,[KNOZ20] 的主要結果表明,對於任何 ϵ ∈[0, 1],我們可以通過 O(|D|1+ϵ) 預處理時間獲得 O(|D|1−ϵ) 延遲。
在本文中,我們繼續研究具有投影的 CQ 的預處理時間和延遲之間的權衡。我們專注於兩類 CQ:星型查詢和路徑查詢。星型查詢是分層查詢的一個流行子集,而路徑查詢是非分層查詢中的一個有用子集。我們出於兩個原因而專注於這兩類。首先,星型查詢在實踐中具有極大的意義,因為它們與集合交集、集合相似性連接以及實體匹配的應用有關。實踐中最常見的星型查詢是 Qtwo-path。路徑查詢也是如此,它們在圖形處理中至關重要。其次,正如我們將在本文中看到的那樣,權衡情況很複雜,即使對於簡單的星型查詢類別也需要開發新技術。我們還提供了一個關於稱為左深度的分層 CQ 子集的結果。我們的關鍵見解是設計列舉演算法,這些演算法不僅依賴於輸入大小 |D|,而且還了解其他特定於資料的參數,例如輸出大小。
為了說明我們的結果,以 Qtwo-path 為例,並用 OUT⋊
⋉表示底層完整查詢的輸出(即 R(x, y)⋊⋉S(y, z))。我們可以顯示以下結果:
定理 1.1 給定任何資料庫實例 D,在 O(|D|) 預處理時間之後,可以使用 O(|D|2/|OUT⋊
⋉|) 延遲列舉 Qtwo-path = πx,z(R(x, y)⋊⋉S(y, z)) 的輸出。
在這個時候,讀者可能會想知道上述結果的改進之處。[KNOZ20] 意味著在預處理時間為 O(|D|) 的情況下,最壞情況下的延遲保證為 O(|D|)。這就引出了一個問題,即定理 1.1 中的延遲是否是真正的演算法改進,而不僅僅是對 [KNOZ20] 的改進分析。我們肯定地回答了這個問題。具體來說,我們表明存在一個資料庫實例,其中從定理 1.1 獲得的延遲是對 [KNOZ20] 的實際保證的多項式改進,而不僅僅是最壞情況。我們提出的演算法通過巧妙地使用存儲的預先計算輸出來保持延遲保證,並與生成新輸出但速度不足以滿足延遲保證的進一步連接處理交替進行,從而優於先前的工作。當預處理時間為線性時,我們結果所暗示的延遲取決於完整連接的大小。對於 |OUT⋊
⋉| = Θ(|D|2) 的最壞情況輸出大小,我們獲得了最佳延遲,這將是恆定的。將此與 [KNOZ20] 的結果進行比較,後者需要接近 O(|D|2) 的預處理時間才能實現相同的保證。另一方面,如果 |OUT⋊
⋉| = Θ(|D|),我們只獲得 O(|D|) 的線性延遲保證。讀者可能會想知道我們的結果通常與 [KNOZ20] 中最壞情況下的權衡相比如何;我們將證明,我們始終可以獲得至少與 [KNOZ20] 中一樣好的權衡點。圖 1 總結了先前的工作和本文中提出的結果。
在本文中,我們改進了具有投影的 CQ 子集的最先進的預處理時間-延遲權衡。我們在下面總結了我們的主要技術貢獻(圖 1 中突出顯示):
(1) 我們的第一個貢獻是一種新穎的演算法(定理 4.1),該演算法在線性預處理時間後實現了星型查詢(在第 2.3 節中正式定義)的輸出相關延遲保證。具體來說,我們可以在線性預處理後實現 O(|D|k/(k−1)/|OUT⋊
⋉|1/k−1) 延遲。我們的關鍵思想是確定一個適當的度數閾值,將關係劃分為重分區和輕分區,這使我們能夠執行高效的列舉。對於星型查詢,我們的結果意味著預處理時間和延遲保證之間沒有 [KNOZ20] 中所述的針對一般分層查詢類別的平滑權衡。
(2) 我們在列舉演算法的背景下引入了交錯連接查詢計算的新穎思想,這構成了我們演算法的基礎,並且可能具有獨立的意義。具體來說,我們表明可以將兩個演算法 A 和 A' 的輸出與 δ 延遲保證進行合併,其中 A 以 δ 延遲保證列舉查詢結果,而 A' 則沒有。當無法以良好的延遲保證進行列舉時,此技術允許我們動態計算查詢的子集。
(3) 我們使用快速矩陣乘法技術來獲得比 [KNOZ20] 更好的預處理時間-延遲權衡。我們還展示了一種用於具有線性預處理時間和輸出相關延遲保證的左深度分層查詢的演算法。
(4) 最後,我們提出了關於非分層 CQ(路徑查詢類別)(在第 2.3 節中正式定義)的預處理時間-延遲權衡的新結果。我們的結果表明,對於任何 ϵ ∈[0, 1),我們可以通過 O(|D|2−ϵ/(k−1)) 預處理時間實現延遲 O(|D|ϵ)。
翻譯成其他語言
從原文內容
arxiv.org
深入探究