騰訊雲資料庫TDSQL與中國人民大學最新聯合研究成果被SIGMOD 2022接收並將通過長文形式發表。SIGMOD是國際數據管理與資料庫領域頂尖的學術會議之一,騰訊雲資料庫TDSQL論文已連續多年入選VLDB、SIGMOD、ICDE等國際頂級會議。 本次入選論文題目為:CompressDB: Ena ...
騰訊雲資料庫TDSQL與中國人民大學最新聯合研究成果被SIGMOD 2022接收並將通過長文形式發表。SIGMOD是國際數據管理與資料庫領域頂尖的學術會議之一,騰訊雲資料庫TDSQL論文已連續多年入選VLDB、SIGMOD、ICDE等國際頂級會議。
本次入選論文題目為:CompressDB: Enabling Efficient Compressed Data Direct Processing for Various Databases。論文針對壓縮數據的直接操作與處理,提出一項新型資料庫處理技術——CompressDB。**本研究提出並實現了新型資料庫技術,利用上下文無關文法來壓縮數據,通過新的數據結構和演算法設計實現對語法規則進行解析,CompressDB支持直接對壓縮後的數據進行數據查詢和操作,並且支持各種資料庫系統。 **
SIGMOD評委對CompressDB的創新性給予了高度評價:在本文中,作者提出了一個支持直接對壓縮數據進行更新和計算的系統CompressDB,是一個優秀的系統工作。其作為文件系統層實現,可以被現有的資料庫系統直接使用,作者通過在其上運行一系列關係資料庫和 NoSQL 資料庫來證明瞭這一點。同時作者在實現中表明,啟用CompressDB可以讓資料庫系統實現更高的吞吐量和更低的延遲,同時減少存儲空間。
一、論文概述
在如今的數據管理系統中,處理大數據時直接在壓縮數據上進行操作被證明是一種很成功的方式。這類系統展示了較大的壓縮優勢和性能提升。但是,當前此類系統只關註數據查詢,而一個完整的大數據管理系統必須支持數據查詢和數據操作。我們開發了一個新型存儲引擎CompressDB。CompressDB 支持壓縮數據上的直接數據處理,有以下優點:
第一,CompressDB 利用 context-free 語法來壓縮數據,並且同時支持數據查詢和數據操作。
第二,我們將CompressDB 集成到文件系統中,使很多資料庫系統可以在不做任何改變的情況下使用CompressDB。
第三,我們將運算元操作下推到存儲層,使得可以直接在存儲系統中執行數據查詢和數據操作,而不需要把大數據轉移到記憶體中,這提高了系統效率。
我們驗證了 CompressDB 可以支持多種類型的資料庫系統,包括 SQLite、LevelDB、MongoDB 和ClickHouse。我們用真實應用中的數據集測試了 CompressDB 在單機和分散式環境下的性能,這些數據集有不同的數據量大小、結構和內容。實驗表明 CompressDB 平均帶來 40% 的吞吐量提升和 44% 的延遲縮短,並實現 1.81 倍的壓縮比。
二、研究動機
現代大數據系統面臨指數級增長的數據量,並使用數據壓縮來減少存儲空間。為了避免頻繁的壓縮和解壓縮操作的開銷,現有的研究探索了直接對壓縮數據執行大數據操作。這些系統在數據分析應用程式中表現出優秀的壓縮效率和性能提升。由於大數據通常存儲在磁碟中,我們的想法是基於規則在存儲層對壓縮數據進行隨機更新。
三、現有技術的局限性
現有的壓縮技術在只讀的查詢處理方面顯示出巨大潛力,但功能完整的大數據系統必須同時支持數據的讀和寫。這就需要系統支持隨機更新以及數據的插入和刪除。現有的壓縮技術並不支持在壓縮數據上直接修改數據,因此每次修改時都必須解壓縮和重新壓縮相對較大的數據塊,從而導致巨大的開銷。
四、重要發現
本研究希望開發一種高效的技術來填補現有技術的不足,以支持直接對壓縮數據進行更新、插入和刪除,從而實現一個支持數據查詢和數據操作的高效的大數據系統。這是一項具有挑戰性的任務,因為現有的壓縮技術大多僅針對壓縮效率或讀數據操作進行了優化。此外,現有技術的壓縮數據結構不能修改。例如,一些壓縮技術基於索引和尾碼數組,其中壓縮元素相互依賴,如果一小部分數據需要更新,則效率極低。
五、系統設計
本研究開發了一個新的存儲引擎CompressDB,支持直接對壓縮數據進行數據查詢和數據操作,並且支持各種資料庫系統。我們發現,如果基於規則的壓縮方法的DAG(directed acyclic graph,有向無環圖)深度被限制在較小的數值,那麼這種壓縮方法開銷較小,並適用於數據操作。基於此,CompressDB採用基於規則的壓縮技術並限制其規則生成深度。同時,CompressDB可以通過操作語法規則對數據進行實時壓縮和操作。與之前基於規則的壓縮方法相比,我們開發了一系列新的設計:在元素級別,我們提出了一種新的數據結構——數據洞(block hole)。在規則級別,我們為隨機更新啟用了有效的規則定位和規則拆分方案。在 DAG 級別,我們降低了規則的深度以提高效率。通過利用新的數據結構和演算法設計,CompressDB無需解壓即可高效處理數據。
5.1 系統設計
圖1展示了CompressDB 的系統結構。CompressDB由三大模塊組成:1)數據結構模塊,2)壓縮模塊,3)運算模塊。這三個模塊支持基於CompressDB的資料庫系統。數據結構模塊為壓縮模塊和運算模塊提供必要的數據結構,包括三種:blockHashTable表示數據內容到塊位置的映射關係,blockRefCount記錄塊被引用次數,blockHole是更新操作引起的存儲空洞。壓縮模塊支持文件系統中的分層壓縮,可應用於各種基於塊的文件系統。操作模塊可以將用戶操作下推到文件系統。
圖 : CompressDB系統結構
5.2 操作下推
為了降低數據傳輸成本,本研究將運算元操作下推到存儲層。運算元下推是指數據處理直接發生在文件系統層(較低的軟體層),使處理操作發生在更接近數據的地方。基於這種技術,CompressDB可以顯著減少對磁碟的數據訪問量,並加速所有上層資料庫應用程式。
5.3 與資料庫系統的交互
為了使CompressDB能夠支持各種資料庫,本研究在文件系統中開發CompressDB。在文件系統層,CompressDB 可以處理讀取和寫入等系統調用,因為它們可以通過“提取”“替換”“添加”等操作實現。因此,CompressDB 可以支持在文件系統上運行的不同類型的資料庫系統(例如,SQLite、MySQL、MongoDB 等)。這些資料庫系統依賴於 CompressDB 提供的系統調用。因此,CompressDB 可以支持資料庫系統的各種數據類型(例如,整數、浮點數、字元串等)和操作(例如,連接、選擇、插入等)。此外,我們為CompressDB開發了一些文件系統不支持的操作,例如“插入”和“刪除”。因為這些操作沒有對應的POSIX介面,我們提供了一組單獨的 API,可以有效地使用。
5.4 適用性
CompressDB是一個存儲引擎,主要應用是支持各種資料庫系統,而無需修改代碼。用戶唯一需要做的就是將系統存儲目錄設置為 CompressDB 的存儲目錄。通常來說,CompressDB 適用於有大量冗餘數據,並需要進行數據分析和操作的資料庫系統。對於其他應用場景,它可能仍然有效,但尚未驗證。
六、主要成果和貢獻
為了驗證 CompressDB 的性能,本研究使用CompressDB支持多個資料庫系統,包括 SQLite、LevelDB、MongoDB和ClickHouse。本研究分別在單節點和集群環境中,使用多個具有不同尺寸、結構和內容的真實數據集來評估性能。集群環境中的實驗使用五節點集群和一種高性能網路分散式文件系統MooseFS。MooseFS 在集群中傳輸數據並提供對數據的高吞吐量訪問。與 MooseFS 的原始版本相比,CompressDB平均帶來了 40% 的吞吐量提升、44% 的延遲減少和 1.81 的壓縮比,這證明瞭本研究的有效性。本研究做出以下主要貢獻:
• 本研究直接在壓縮數據上開發高效的數據操作,例如插入、刪除和更新。除了隨機訪問,本研究還支持數據查詢和數據操作。
• 本研究開發了CompressDB,這是一種集成到文件系統中的存儲引擎。CompressDB可以無縫支持各種資料庫系統,而無需修改資料庫。
• 本研究將數據運算元操作下推到存儲系統,避免了記憶體和磁碟之間不必要的數據移動,從而提高了壓縮數據的處理效率。
七、本次研究成果面向的領域
本研究成果面向同時支持數據查詢和數據操作的大數據管理系統。CompressDB提供的壓縮能力使數據管理系統能夠存儲較大的數據量,同時支持壓縮數據上高效的數據查詢和操作。存儲效率和數據查詢、操作效率在當今大數據時代是至關重要的性能指標,CompressDB可以幫助現有的資料庫系統同時提升這些指標的性能。
福利來啦!為幫助廣大資料庫愛好者更加詳細地瞭解本篇論文內容,我們邀請到了中國人民大學副教授、博士生導師、騰訊犀牛鳥基金獲得者張峰老師來到直播間深度解讀。6 月 21 日 15:00,一起來直播間學習吧!