TDSQL-基於壓縮數據直接計算技術,定義新型資料庫處理 | SIGMOD 2022入選論文解讀

来源:https://www.cnblogs.com/tencentdb/archive/2022/06/16/16381186.html
-Advertisement-
Play Games

騰訊雲資料庫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是更新操作引起的存儲空洞。壓縮模塊支持文件系統中的分層壓縮,可應用於各種基於塊的文件系統。操作模塊可以將用戶操作下推到文件系統。

file

圖 : 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,一起來直播間學習吧!

file


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 微信公眾號:趣編程ACE關註可瞭解更多的.NET日常實戰開發技巧,如需源碼 請公眾號後臺留言 源碼;[如果覺得本公眾號對您有幫助,歡迎關註] .Net6下集成微服務網關-Ocelot ​ 視頻講解 網關常見功能 1:路由 routing 2: 請求聚合 3:身份驗證和授權 4:速率限制 5:緩存 6 ...
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 前言 這裡說一下為什麼要在Windows子系統下安裝桌面版Ubuntu,可能有人會問虛擬機不香嗎,雙系統不香嗎?折騰雙系統一不留神就把原來的環境的搞崩了,安裝虛擬機的話可能又會因為電腦硬體限制導致虛擬機非常卡頓無法正常使用,所以這裡是只針對不想經 ...
  • Ubuntu中fcitx安裝失敗問題的原因是ubuntu用的是國外鏡像源,部分軟體下載不了。 對策: 更換國內鏡像源可以使 Ubuntu 的第三方軟體包的下載速度大步提升,這裡以更換為阿裡源為例: 源文件的相關信息在“/etc/apt/”路徑下,使用cd /etc/apt進入文件 源鏈接存放在文件[ ...
  • Memory Resource Controller 記憶體資源控制器 註意: 這個文檔完完全全地過時了,需要整個地重寫。但它還是包含了有用的信息,所以我們仍舊把它保留在這裡,但是如果你需要深入理解的話,需要確保核對過當前的代碼。 註意: 記憶體資源控制器在本文檔中指的是記憶體控制器。不要混淆了這裡記憶體控 ...
  • 延時統計Delay accounting 任務在執行時等待某個內核資源會意外遇到延遲,例如可運行的任務正在等待空閑CPU。 per-task的延時統計功能測量下列情況下任務經歷的延遲: 正在等待CPU,waiting for a CPU (while being runnable) 同步塊I/O的完 ...
  • 一、視圖概念 • 視圖概念 • 視圖是基於一個表或多個表或視圖的邏輯表(虛表),本身不包含數據,通過它可以對錶裡面的數據進行查詢。 • 基表 • 視圖是從一個或多個實際表中獲得的,這些表的數據存放在資料庫中。那些用於產生視圖的表叫做該視圖的基表。 • 視圖優點 • 簡化性 • 安全性 二、視圖分類 ...
  • 一、索引概念 • 在關係資料庫中,索引是一種與表有關的資料庫對象,它可以使對應於表的SQL查詢語句執行得更快。 • 索引的作用類似於圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容。 • 對於資料庫來說,索引是一個必選項,對於現在的各種大型資料庫來說,索引可以大大提高資料庫的性能,以至於它變成了數 ...
  • 一、觸發器簡介 • 什麼是觸發器(trigger) • 觸發器在資料庫里以獨立的對象存儲,由資料庫產生某一類事件而啟動運行,即觸發器是當某個事件發生時自動地隱式運行。 • 觸發器的特點 • 由特定事件觸發,外部無法調用。 • 觸發器無參數。 • 一個表上最多可有12個觸發器。 • 觸發器的作用 • ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...