天天看點

《NoSQL權威指南》——2.6 資料倉庫和列式資料庫

本節書摘來自異步社群出版社《nosql權威指南》一書中的第2章,第2.6節,作者:【美】joe celko(喬•塞科) ,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

當隻涉及少數列時,資料倉庫可以将部分工作負載轉移到列式資料庫,以提高性能。多元資料庫(multidimensional database,mdb)或多元資料集(cube)是支援非常快速通路預先計算的彙總資料的不同的實體結構。當查詢請求mdb大部分列的情況下,mdb将執行相當不錯。

這些mdb資料庫的實體存儲是一個規範化的次元模型,通過存儲計算結果消除了連接配接(join)操作。然而,随着列的增加,mdb會變得巨大,并且增長速度會比預期快。mdb中的資料可以使用與列式資料庫大緻相同的方式進行壓縮,是以從多元資料集中提取列的子集相對容易。

對于列式資料庫,最佳工作負載是查詢,不去通路所用表的所有列就會有更好的性能表現。在這種情況下,少就是多。所需行的位元組數越小,其性能就越好。

很多重要的工作負載是與列選擇相關的,是以可以在這個模型中獲得巨大收益。列式資料庫在大資料量、大規模掃描以及i/o密集型查詢方面有很好的表現。在提供性能優勢的同時,它們還具有獨特的壓縮其資料的能力。

列式資料庫已經存在了一段時間,并在自己的優勢方面表現非常好。但是,它們在目前市場得到特别的飛躍有兩個原因。第一個原因是硬體改善,尤其是ssd,使得主存儲和輔助存儲的差別不那麼明顯。當主存儲和輔助存儲在性能上存在巨大差别時,在輔助存儲内壓縮和解壓縮資料和在輔助存儲外壓縮和解壓資料是開銷巨大的。而在ssd中卻沒有什麼差别。第二個因素是更好的算法。不但專門的壓縮很不錯,而且還有專為列式資料存儲設計的并行算法。