最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

StoneDB技術觀察 | 存算一體 VS 存算分離 ,IT發(fā)展下的技術迭代

2023-07-24 14:12 作者:StoneDB  | 我要投稿

編者薦語:

本文來自石原子的祁國輝老師,推薦閱讀。

以下文章來源于ITPUB?,作者祁國輝

圖片

存算分離,現在已經成為云原生數據庫的標配, 開始大規(guī)模流行。存算分離后, 進一步使計算單元和存儲單元解耦,每個單元可以實現單獨的動態(tài)擴縮容,并且可以通過冗余配置,實現對單點故障的容忍度, 可以說是近年來數據庫市場上的一大進步。


作者?|?祁國輝

責編?|?韓? ?楠


縱觀歷史, 隨著IT技術的發(fā)展,?到底是存算一體還是存算分離, 其實反復過很多次,讓我們來簡單回顧一下,數據庫歷史上幾次大的架構變更。希望可以幫助大家按照技術發(fā)展脈絡,來加深對技術原理和用戶收益的理解。



01 第一次存算分離

最早版本的數據庫,即網狀數據庫管理系統(tǒng)(DBMS),由通用電氣公司1961年開發(fā)成功,其IDS(Integrated DataStore,集成數據存儲)是世界上第一個網狀DBMS,也是第一個DBMS。但是它只能運行于通用電氣的主機上,且數據庫只有一個文件,所有的表必須通過手工編碼生成、存儲和計算是緊密耦合在一起的。

圖片

這一點從它的名字就可以看出來,集成數據存儲(IntegratedData Store,IDS)。

而之后的很長時間,數據庫都是屬于高端應用,和各種大型機、中型機緊密綁定在一起,典型的IBM大型機((MainFrame),老牌IT人都熟悉的System/360, 通過編程訪問內部的各種數據庫, 后來大家熟悉的DB2, 也是最早運行在這個平臺上, 借助當時超強的計算能力, 在全球各種大型金融機構, 大型科研實驗室和大型企業(yè)獨領風騷, 占據了領導地位。

IBM當時在計算機領域無愧它“藍色巨人”的稱號, 除了響當當的產品之外, 還有大量的精英在其中對最新科技進行研究, 對數據庫影響最大的幾位大神都在IBM供職, 包括提出關系型數據庫模型的Codd博士, 在此基礎上發(fā)揚光大的 C.J.Date和Jim Gray。可以說DB2 在整個數據庫歷史上扮演了一個很重要的承上啟下的作用。

圖片

當然也不得不提另外一位傳奇人物, 就是Oracle的創(chuàng)始人之一,Larry Ellison, 自1977年創(chuàng)立SDL, 1982年更名為Oracle, 然后迅速借助小型機的快速發(fā)展,迅速占領了商用數據庫的第一把交椅, 直至今日, DB Engine上Oracle仍占據榜首, 數十年未動搖。

因為小型機的快速發(fā)展,計算機市場出現群雄爭霸的局面, 而在Unix 系統(tǒng)開始大行其道之后, 市面上能夠提供unix主機的企業(yè)越來越多, 除了IBM, 還有HP、Compaq、富士通、Sun。而幾乎所有的Unix主機都會連接獨立的存儲服務器,來實現第一次的存儲和計算的分離。

圖片

在這次的存算分離當中,?最重要的支撐技術主要包括成熟的網絡組網技術,以及成熟的存儲網絡技術,當然Oracle自己的殺手級技術緩存融合,也起到很大的作用。

那么看一下用戶得到的好處在哪里?

??增強了系統(tǒng)的伸縮性, 用戶可以獨立增加數據庫服務器來提升處理能力,增加存儲服務器來擴大數據庫容量。

??增強了系統(tǒng)的容錯性,在這種分離架構下,可以通過冗余配置來防止任何一個環(huán)節(jié)出現單點故障, 增強了數據庫系統(tǒng)的持續(xù)服務能力。


內存融合技術?則是在兩個計算節(jié)點間?共享對方節(jié)點的內存數據, 來減少磁盤讀取帶來的IO, 從而提高性能。

圖片

緩存融合技術允許不同RAC節(jié)點間 通過高速內網共享各節(jié)點數據庫實例內部緩存的數據塊,緩存的數據塊直接從一個節(jié)點的共享內存?zhèn)鬟f到其他節(jié)點的共享內存。這樣對于最新的數據塊, 就可以直接訪問其他節(jié)點的緩存, 而不必等待緩存寫入磁盤之后再從磁盤讀取, 從而使得多個節(jié)點之間可以高效率地協(xié)同工作。?

為了降低存取遠端內存時的主機消耗, Oracle 還使用了專用的基于RDMA技術的RDS協(xié)議, 可以直接繞開CPU, 直接實現遠程內存的直接讀取,進一步提升訪問效率。



02 海量數據催生的存算一體

時間進入本世紀, 隨著用戶數據的快速膨脹, 用戶對海量數據的分析需求越來越明顯, 各行各業(yè)都在搭建自己的數據倉庫和商業(yè)智能系統(tǒng),?這時用戶面臨的最大挑戰(zhàn)第一是成本, 第二是性能。

因為傳統(tǒng)Unix主機和高端存儲價格高居不下, 所以想要搭建一個用于決策支持的數據倉庫系統(tǒng), 在硬件和軟件license上就是一筆不小的投資。另外可能耗費巨資搭建的系統(tǒng), 在做海量數據統(tǒng)計匯總的時候,比老黃牛還慢, 廠家分析過之后, 診斷結果:磁盤轉速不夠, 網絡傳輸不夠,CPU處理能力不夠??偠灾?系統(tǒng)需要擴容。

圖片

究其根本原因, 還是在IO, 因為計算單元處理數據, 但是它不存儲數據, 所有的數據要從存儲中取, 而存儲在取數據的時候, 都是一個數據塊一個數據塊來取, 根本沒法判斷這個塊中哪些數據是計算單元需要的。在傳統(tǒng)行存儲的場景, 一個決策查詢可能只需要幾個字段, 但是必須把所有數據都拿到計算單元, 由計算單元處理/判斷之后再丟棄。

浪費了大量的IO, 另外由于計算單元內存不夠, 再大表連接的時候, 出現大量的臨時數據, 這些臨時數據還需要在存儲中臨時存放, 需要的時候再拿出來, 這就又造成了大量的資源浪費。

所以這個時候就自然催生出新的架構,?普遍的原理是OLTP系統(tǒng)中每次操作都是小數據量, 這種場景是移動數據到計算;而OLAP系統(tǒng)中,每次都會涉及大量數據處理, 所以要減少網絡傳輸, 這時候應該是移動計算到數據。這個描述有點抽象, 但是大概意思就是海量數據首先在本地進行初步加工, 減少數據量之后,再去參與后繼計算,這樣IO和算力都得到節(jié)省, 自然性能就上去了。

這個時候的玩家, 包括來自大廠的TD 和DB2, 也包括后來居上的開源MPP產品GreenPlum,還有國內的老牌數據庫廠商南大通用Gbase, 以GP為例, 示例如下:

圖片


此階段技術核心關注在減少網絡間傳輸的IO, 一方面通過列式存儲, 來支持分析系統(tǒng)中按列統(tǒng)計的習慣, 每次查詢只需要取需要的列就可以, 減少無謂的IO, 同時利用各種索引技術, 加快數據定位和存取的效率。另外通過閃存技術的高速發(fā)展, 利用高速閃存還可以進一步提升系統(tǒng)的性能。


而之后盛行的Hadoop架構, 也是屬于利用本地磁盤通過搭建分布式文件系統(tǒng),來實現海量數據的處理。開源的Hadoop架構發(fā)展迅猛, 不斷有新的技術加入,大大催生了數據倉庫領域的技術發(fā)展。衍生出很多非常亮眼的技術, 比如Hive、Impala、Presto、Spark等等。

圖片


不過MPP雖然讓更多的人能夠以較低的成本搭建海量數據倉庫, 隨著應用的深入,也暴露出幾個問題:

??計算存儲緊耦合, 提升了計算效能, 但是在系統(tǒng)容量擴容的時候, 需要對所有節(jié)點上的數據進行重新分布, 而這個時間相對較長, 有可能會影響業(yè)務, 所以在一些業(yè)務比較繁忙的客戶場景中, 一般智能用新建集群的方式來進行容量擴容。

??因為開啟了大規(guī)模并行, 所有的任務都會啟動并行計算,啟動后計算任務會分布到集群中的每個節(jié)點, 那么集群并發(fā)能力的上限, 并不取決于集群大小, 而是取決于集群中配置最低的那一臺機器, 這臺機器能支持多少任務并行, 就代表整個集群能支持多少并行。

??配置彈性不足, 因為上述原因, 為了能夠支撐企業(yè)業(yè)務高峰期的業(yè)務, 必須把整個集群配置到能符合業(yè)務高峰期的規(guī)模, 而在平時, 機器閑置率就很高, 導致投資浪費。


03 云時代帶來的新一代存算分離

隨著公有云的快速發(fā)展, 按需付費的概念逐步深入人心,對大規(guī)模數據的分析也要求能做到按需供給,那么傳統(tǒng)MPP這種存算一體的緊耦合架構,就沒法滿足用戶的需求了。另外, 網絡技術和存儲技術也飛速發(fā)展, 這時就自然帶來新一代的云原生數據庫的存算分離架構, 把數據庫技術向前推進了一大步。

以業(yè)界最有名的Snowflake公司為例,創(chuàng)立Snowflake之前,Benoit Dageville和Thierry Cruanes在甲骨文做了十多年數據工程師,后來他們決定在云上創(chuàng)建數倉,聯(lián)合另外一位創(chuàng)始人Marcin ?ukowski,?共同創(chuàng)建了Snowflake。

為了更好地利用云上的資源,他們首先把存儲和計算再次分離,把數據以大量分區(qū)的方式存儲在共享的對象存儲中,存儲中的數據按列保存,而中間的計算層, 也通過無狀態(tài)的虛擬數據倉庫來動態(tài)拉起和銷毀, 來實現用戶不同workload的靈活調度和計費。目前已經成為云原生數倉的標準范本。

下面簡單看一看Snowflake的技術架構:

圖片

Snowflake內核組件從底向上可以分為三個層次:

  1. 數據存儲層。Snowflake的數據存儲是構建在Amazon S3對象存儲上,主要用來存儲表數據和查詢結果。

  2. 計算層-虛擬倉庫。虛擬倉庫構建在Amazon EC2虛擬機組成的彈性集群之上,負責執(zhí)行用戶的查詢請求。

  3. 調度云服務層。云服務組件包括并發(fā)訪問控制、基礎設施管理、優(yōu)化器、事務管理、安全管理、元數據管理,其中元數據包含schema信息、表信息、權限認證信息、秘鑰、統(tǒng)計信息。

在這個架構下, 不同的workload可以隨時通過創(chuàng)建不同的虛擬倉庫來實現計算的靈活調配, 而每次計算的時候, 計算層通過網絡直接從存儲層獲得數據,然后在虛擬數據倉庫中進行計算, 負載比較中的workload可以創(chuàng)建較大的虛擬倉庫, 而普通查詢可以創(chuàng)建較小的虛擬倉庫,用戶還可以通過調整虛擬倉庫中單節(jié)點CPU和節(jié)點個數來平衡計算復雜性和并發(fā)性。

虛擬倉庫之間,通過占用不同的硬件節(jié)點或者計算層中的資源調度來實現隔離。因為整個虛擬倉庫的無狀態(tài), 所以用戶可以隨時創(chuàng)建和銷毀虛擬倉庫, 當然也意味著計算層的可以通過增加EC2的臺數,來實現計算層的橫向擴展。

圖片

同時, 由于存儲層也已經完成了與計算層的解耦, 所以存儲層也可以隨時按需進行橫向擴展, 而無需停機做數據分布。

?技術優(yōu)化手段

我們都知道, 存算分離架構,提高了系統(tǒng)的靈活性, 可以實現計算能力和存儲能力的動態(tài)擴縮容,無需按照業(yè)務峰值來搭建系統(tǒng), 但是也帶來了大量數據需要在存儲層和計算層之間傳輸的問題。

  • 網絡加速

好在,這么多年的存儲,網絡技術飛速發(fā)展, 能很好地滿足這些需求, 同時新一代云數倉也從不同的地方做出優(yōu)化,來提升效率。一般而言, 有兩個方向:

第一就是通過各種軟件的優(yōu)化,減少網絡傳輸;

第二,就是加大網絡吞吐能力,實現網絡提速。

目前的高速低延遲網絡,比如ROCE等數據傳輸技術, 數據中心內部的高速互聯(lián)網路等技術, 可以大大加快存儲層到計算層的數據傳輸效率。

  • 本地緩存

和Oracle的思路類似, 計算存儲分離架構中, 還有一個環(huán)節(jié)就是數據緩存,如果每次數據訪問都必須訪問磁盤, 那么系統(tǒng)性能就會大打折扣, 所以在snowflake的虛擬倉庫層, 也是會利用cache來進行數據的緩存。

  • 存儲優(yōu)化

另外,在目前大多數的云上數倉解決方案中, 都會更加強化Metadata的作用, 對于一些基本的sum、Max、min等操作, 可以直接從metadata中返回結果, 不需要產生磁盤IO。此外在存儲格式上, 類似ORC、Parquet等存儲模式,利用列存和SIMD技術, 實現一次IO,返回更多有效數據;同時啟用多種索引技術, 使得查詢定位更加快捷。


04 思考與未來展望

展望將來,?云原生分布式數據庫的高速發(fā)展,必然帶來計算、存儲的分離,“存算分離”是當前網絡技術發(fā)展和社會經濟進步的時代產物,是最適合當前時代發(fā)展需求的一種架構。擁抱云原生,按需付費的云數倉模式會持續(xù)走強,而在中國,也會走出公有云、私有云共同繁榮的未來。


作者介紹

圖片

祁國輝

前 Oracle 云平臺事業(yè)部電信行業(yè)技術總監(jiān)現就職于杭州石原子科技有限公司

【作者介紹】網名"atiger",前 Oracle 云平臺事業(yè)部電信行業(yè)技術總監(jiān)。擁有超過25年數據庫和數據倉庫HK經驗。曾創(chuàng)辦著名數據倉庫網站:www.dwway.com (數據倉庫之路)。


StoneDB?2.0?云原生分布式實時 HTAP 架構詳細設計以?RFC?形式持續(xù)進行,歡迎大家關注我們最新進展,更歡迎給我們開源協(xié)作的模式和方法提出改進意見,一起通過開源的方式共建 StoneDB ~



StoneDB技術觀察 | 存算一體 VS 存算分離 ,IT發(fā)展下的技術迭代的評論 (共 條)

分享到微博請遵守國家法律
武定县| 望谟县| 肃南| 千阳县| 屏东市| 乳源| 昭觉县| 南丹县| 沛县| 阿克陶县| 红原县| 太康县| 兴城市| 嘉善县| 顺义区| 灵川县| 绩溪县| 郓城县| 朝阳区| 贞丰县| 宁国市| 新源县| 怀化市| 栾城县| 沅陵县| 南岸区| 永和县| 桑植县| 大埔区| 含山县| 墨竹工卡县| 新竹市| 于田县| 南靖县| 岚皋县| 新巴尔虎左旗| 石棉县| 广宁县| 金秀| 哈密市| 榆树市|