TerarkDB宣稱不使用塊壓縮,這樣做的優勢真的很大嗎?

時間 2021-06-07 23:06:57

1樓:雷鵬

作為資料庫,在系統資源(cpu, 記憶體, ssd, 磁碟 ...) 一定的前提下,我們希望:

1. 儲存的資料更多:採用壓縮,這個世界上有各種各樣的壓縮演算法……

2. 訪問的速度更快:更快的壓縮(寫)/解壓(讀) 演算法,更大的快取……

幾乎所有的壓縮演算法都嚴重依賴上下文:

位置相鄰的資料,一般情況下相關性更高,內在冗餘度更大

上下文越大,壓縮率的上限越大(當然,有個極限)

對於普通的以資料塊/檔案為單位的壓縮,傳統的(流式)資料壓縮演算法工作得不錯,時間長了,大家也都習慣了這種資料壓縮的模式。基於這種模式的資料壓縮演算法層出不窮,不斷有新的演算法被實現出來。

對於資料庫,在計算機世界的古代,為 io 優化的 Btree 一直是不可撼動的,為磁碟優化的 Btree block/page size 比較大,正好讓傳統資料壓縮演算法能得到較大的上下文,於是,基於block/page的壓縮也就自然而然地應用到了各種資料庫中,在這個古代,記憶體的效能、容量,與磁碟的效能、容量,涇渭分明,各種應用對效能的需求也比較小,大家都相安無事。

現在,我們有了ssd,PCIe ssd,3d xpoint ……,記憶體也越來越大,塊壓縮的缺點也日益突出:

塊選小了,壓縮率不夠,塊選大了,效能無法忍

更要命的是,塊壓縮,節省的只是更大更便宜的磁碟、ssd

更貴更小的記憶體不但沒有節省,反而更浪費了(雙快取問題)

於是,對於很多實時性要求較高的應用,只能關閉壓縮……

TerarkDB 的壓縮,完全拋棄了塊壓縮,使用「全域性壓縮」,這是乙個理念上的突破,對於資料庫,「全域性壓縮」不但提高了壓縮率,更重要的是:

記憶體的利用率更高——因為沒有雙快取問題

對於每個 Query,只解壓需要的資料,從而 Query 延遲更低,更穩定(無慢Query問題)

再加上 TerarkDB 的索引壓縮,大家可以展開豐富的想象了……

相關問題: 如何評價中國產高效能儲存引擎 TerarkDB ? - 大資料

你為什麼不使用 TypeScript?

FRANK 因為我用ReScript和OCaml。而且我覺得Ts繼承Js的類方法語法和函式語法不夠統一,而且玩函式式程式設計不夠友好,型別推到能力也一般。 JS淪為彙編,我為什麼一定要選TS?真要說喜歡,kotlin全平台一把梭咯,攤手。只要老闆給錢,要啥有啥,都是圖靈完備的,哪那麼多比來比去和為什...

如果不使用OPPO手機,OPPOwatch2有必要入手嗎?

xolovcici 這個其實問題不大,因為oppo watch2是color os2系統,具有開放性,而且相容性極強。除了三個功能需要oppo手機 遙控預覽拍照 電競模式和遙控汽車,其他功能全部相容。OPPO Watch 2在智慧型模式下理論續航時長為4天,輕智慧型模式下理論續航時間可達16天。值得...

卷積層為什麼不使用dropout

初識CV Dropout 最初是為密集的神經網路層量身定製的,但是最近的一些進展使得 Dropout 也適用於卷積和迴圈神經網路層。dropout是通過將隱藏的單元啟用設定為零,並在訓練中設定一定的概率來實現的。Dropout 是一類用於神經網路訓練或推理的隨機化技術,這類技術已經引起了研究者們的廣...