溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C-Store的特點有哪些

發(fā)布時間:2022-01-06 17:16:48 來源:億速云 閱讀:114 作者:iii 欄目:互聯(lián)網(wǎng)科技

這篇文章主要介紹“C-Store的特點有哪些”,在日常操作中,相信很多人在C-Store的特點有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C-Store的特點有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

背景知識

行式存儲是當(dāng)時數(shù)據(jù)庫的主流,由于適用 OLTP 場景,于是叫做 write-optimized,而針對 OLAP 場景的系統(tǒng)叫做 read-optimized,如數(shù)據(jù)倉庫。

CPU的增速比磁盤帶寬快很多,于是可以犧牲一定的 CPU 來換取磁盤帶寬。

有兩種方式干這個事:(1)編碼(2)densepack,緊湊存儲,我理解就是壓縮。

當(dāng)時關(guān)系數(shù)據(jù)庫不能很好的支持 OLAP 查詢密集場景。于是作者提出了一個新的列存數(shù)據(jù)庫 C-Store,這篇文章里包含很多內(nèi)容,是個大雜燴,其中有幾個新的特點:(1)write-optimized 和 read-optimized 混合架構(gòu) (2)存儲模型,冗余的數(shù)據(jù)按不同順序存儲,來支持快速檢索。(3)高效的壓縮,直接處理壓縮的數(shù)據(jù)(4)列式查詢優(yōu)化器(5)數(shù)據(jù)恢復(fù)(6)快照隔離避免 2PC

本文介紹其中的(1)(2)(5)

(1)混合架構(gòu)

優(yōu)化寫入和優(yōu)化查詢是比較互斥的,比如直接按寫入順序存儲數(shù)據(jù),就像日志追加一樣,但是這種方式對查詢不友好,因為查詢可能在另一種順序下比較快。

一個模型適用兩個場景是很難的,因此本文的架構(gòu)是搞兩個模塊。一個模塊負(fù)責(zé)處理快速寫入,就是上邊的 WS,一個模塊負(fù)責(zé)提供高效的查詢,就是下邊的 RS,這樣就需要一些連接器,就是 Tuple Mover,將 WS 中的數(shù)據(jù)同步到 RS 中。

作者的預(yù)期是 WS 相比 RS 而言是很小的一部分,可以全部放在內(nèi)存中,其實這個架構(gòu)就類似 LSM 了。

C-Store的特點有哪些

為了實現(xiàn)簡便,C-Store 用同一套列存引擎來管理 WS 和 RS,只不過在 WS 中多存一些索引信息用來快速定位數(shù)據(jù)。

(2)存儲模型

projection:

每一個表可以綁定多個 projection,這是什么概念呢?每個 projection 是這張表的某些列的組合,是實際存儲在磁盤上的,每個 projection 可以按不同順序存儲,一張表的每個列必須出現(xiàn)在至少一個 projection 中。一個表綁定的 projection 也可能包括其他表中的列(相當(dāng)于重新劃分表了)。

比如一張用戶表(姓名,年齡,工資),可以綁定兩個 projection,P1(姓名,年齡) order by 年齡,P2(姓名,工資),order by工資。

這樣,按年齡查找姓名和按工資查找姓名這兩種查詢就可以分別分配到 P1 和 P2 里,每個都很快。

由于把各個列分散開了,就需要重組一行數(shù)據(jù)。這里涉及三個概念

SID:Segment id,每個 projection 水平分成多個 segment 分區(qū),SID 就是分區(qū)號。

SK:Storage keys,每個分區(qū)中,給每行數(shù)據(jù)分配的一個自增的主鍵,用來將不同的 projection 對齊,其實就是行號、下標(biāo)。

下圖就是一個示例:

C-Store的特點有哪些

join index:為了重建一行完整的數(shù)據(jù),需要將這些按不同順序的記錄映射到同一個順序上,也就是 join index 的作用。比如將 projection2 映射到 projection1 上,這是個一對一映射。

C-Store的特點有哪些

這個 join index 可以是一條路徑,比如還有一個 projection3 到 projection2 的映射,有傳遞性。這樣,就能根據(jù) join index 重組數(shù)據(jù)了。

在對數(shù)據(jù)的遍歷過程中,將傳統(tǒng)的按點返回的 Iterator 接口改成了批量返回的 iterator ,每個批次 64KB,避免了方法的過多調(diào)用。

數(shù)據(jù)恢復(fù)

當(dāng)節(jié)點掛掉但是數(shù)據(jù)沒丟時,可以直接重啟機(jī)器,把其他機(jī)器的執(zhí)行隊列中的操作拿過來執(zhí)行。

當(dāng)一個節(jié)點的 RS 和 WS 都丟了,就需要從其他節(jié)點的 projections 和 join indexes 重建這個節(jié)點的數(shù)據(jù)。

當(dāng)僅僅 WS 丟了,可以快速從 RS 恢復(fù)出來,這個涉及快照隔離,不詳細(xì)說了。

局限

projection 是如何生成的沒有具體說明,沒有講如何做負(fù)載均衡

join index 的維護(hù)比較麻煩,尤其是加入update,在恢復(fù)數(shù)據(jù)時候也需要 join index,沒有做錯誤恢復(fù)的性能。

在完成這篇論時系統(tǒng)還沒開發(fā)完,功能不全,還是個單機(jī)系統(tǒng)。

到此,關(guān)于“C-Store的特點有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI