• <menu id="4s8ek"><strong id="4s8ek"></strong></menu>
    <menu id="4s8ek"><tt id="4s8ek"></tt></menu>
  • 科技魔方

    深入淺出話DB|柏睿數據RapidsDB高性能解密之行列混存

    即時新聞

    2022年05月18日

      大家好!為了幫助數據庫開發者、用戶和對數據庫有興趣的同學,更好地了解和運用數據庫,柏睿數據數據庫團隊特別策劃出品《深入淺出話DB》系列文章,以全內存分布式數據庫RapidsDB為實例開啟連載,從數據庫高性能入手,到柏睿數據經典實戰案例解讀,帶你走進全內存分布式數據庫的世界。關注“柏睿數據”微信公眾號,一起啟程數據庫修煉之旅吧!第二回,行列混存,Here we go!

      RapidsDB具有出色的面向海量數據的數據存儲及處理分析能力,提供行列混合存儲技術,支持在同一個SQL查詢中對行存儲表和列存儲表同時進行訪問。在用戶數據無法在預算內滿足全內存加載存儲時,列存儲提供了一個很好地混合存儲手段,在提升查詢性能,實現單節點優化的同時,解決了內存存儲空間壓力過大的問題。

      面向行的存儲或“行存儲”是關系型數據庫使用的最常見的數據庫存儲類型。顧名思義,行存儲將每一行視為一個單元,并將給定行的所有字段一起存儲在同一物理位置中。這使得行存儲非常適合事務型工作負載,在這種情況下,數據庫的選擇、插入、更新和刪除單個行的操作,通常會引用大多數或所有的列。

      面向列的存儲或“列存儲”將每一列視為一個單元,并將每列的數據段一起存儲在同一物理位置中,這個手段實現了兩個重要的功能:

      一個功能是可以單獨掃描每一列,本質上,能夠只掃描查詢所需的列,在掃描期間具有良好的緩存局部性。

      另一個功能是列存儲非常適合進行壓縮,例如,復和相似的值可以很容易的壓縮在一起。同時,基于列式存儲格式,可以使用基于硬件SIMD指令集的向量化執行模式(Vector-at-a-time)提高數據訪問的效率。

      RapidsDB支持使用全內存的行式存儲和基于內存的列式存儲來存儲和處理數據?;谌珒却娴男惺酱鎯槭聞招凸ぷ髫撦d提供了最佳的實時性能?;趦却娴牧惺酱鎯ψ钸m合跨大型歷史數據集的分析工作負載,列式表的數據寫入過程首先要在內存通過列存儲索引對數據進行計算,將各數據塊的元數據保存于內存中,同時將壓縮備份的數據存放于磁盤中。此外,事務、緩存、執行計劃等均在內存中計算、存儲。磁盤中大部分操作均為寫入操作,讀取操作大部分在內存中完成,更加保障了查詢效率的提升。

      海量數據處理以OLAP分析型場景居多,這些場景的特點之一便是批量查詢場景較多,這個時候我們的列存儲提供的特有建立索引及數據分區和數據壓縮特點,可以一定程度的提升查詢效率。當列存儲表面對特定的查詢只需要對極少數的字段進行操作,而不用關心其他字段,這將大大減少了讀取數據的量。此外,在面對海量數據時,基于很多用戶的預算問題,無法支持將所有數據都存于內存當中。列存儲提供了將小表基于全內存,大表基于磁盤的混合存儲模式,可以極大限度提升面對海量數據的處理分析能力。

      傳統業務數據處理分為聯機事務處理(OLTP)與聯機分析處理(OLAP)兩類,通過統一架構同時支持OLTP和OLAP混合負載成為數據庫發展的新需求。

      目前支持混合負載技術架構大致有以下幾種:

      第一種是行存為主,內存列存為輔,針對有需要的表會同時存在一份行存儲和列存儲,在列存儲上做分析操作,在行存儲上進行更新,定期同步到列存儲里,可以靈活指定需要采用行存與列存的表。技術難點在于哪些數據轉為列存、如何用行存和列存回答查詢。

      第二種是列存為主,行存為輔。增量數據通過delta表定期轉為列存,主列存主要處理OLAP類分析查詢,增量行存負責OLTP類事務操作,并直接將更新數據定期合并到主列存中。缺點是OLTP處理性能中等,擴展性也不高,負載隔離性很低。

      第三種是主機行存、備機內存列存,備機通過日志復制轉為內存的列存提供分析能力,查詢基于代價估計后決定是否下推到內存列引擎中執行,常被訪問的熱數據將會留在內存中,冷數據將會被壓縮后持久化到外存中。

      第四種是多副本行列共存,通過多副本進行存儲,主采用行存,副本采用列存,通過異步復制Raft log的方式將更新從行存節點同步到列存節點,具有較高負載隔離性和擴展性,數據分析新鮮度偏低。

      RapidsDB通過統一的行列混存架構同時支持OLAP、OLTP實時分析處理。用戶可以通過標準的SQL DDL語法創建列式表或者行式表,并可以通過使用行式存儲表和列式存儲表的組合來達到在一個查詢任務中合并實時數據和歷史數據的目的,從而簡化技術堆棧。

    62845d3cecef9.png

      RapidsDB可提供行式存儲、列式存儲以及行列混合存儲作為建表結構,以對應不同的業務場景。在某國有大行普惠金融項目應用中,因為列存儲具有可負載大量分析工作、快速聚合和表掃描、可跨大型歷史數據集等技術特性,很好的支持了該行在大數據量(1100億行數據、40TB數據量)、大并發(典型幾百并發、極端4000+ 數據庫并發)、多表復雜查詢(查詢SQL由前端應用系統靈活組合而成,最多15個表Join操作)的復雜應用場景,為全行5萬個客戶經理提供日常業務查詢,支撐精準營銷及信貸風控的業務需要。

      好了,行列混存我們介紹到這。如果您有疑問或建議,歡迎在后臺留言,我們將針對大家的共性問題,發布【答疑篇】,互動的同學有機會獲得神秘獎品呦。RapidsDB極限性能數據庫有何妙處?第三回將開啟“高性能篇—數據存儲”解讀。

    +1

    來源:科技魔方

    推薦文章

    免费国产黄在线观看,吃农村哺乳丰满妇女奶水,7788亚洲精品无码专区在线
  • <menu id="4s8ek"><strong id="4s8ek"></strong></menu>
    <menu id="4s8ek"><tt id="4s8ek"></tt></menu>