成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

從架構特點到功能缺陷,重新認識分析型分布式數據庫

運維 數據庫運維 分布式
本文是分布式數據庫的總綱文章的第一部分,主要探討分析性分布式數據庫的發展和技術差異;第二部分則是交易性數據庫的一些關鍵特性分析。

 寫在前面

本文是分布式數據庫的總綱文章的第一部分,主要探討分析性分布式數據庫的發展和技術差異;第二部分則是交易性數據庫的一些關鍵特性分析。Ivan開始計劃的分布式數據庫是不含分析場景的,所以嚴格來說本篇算是番外篇,后續待條件具備將以獨立主題的方式展開。

[[266456]]

正文

隨著大規模互聯網應用的廣泛出現,分布式數據庫成為近兩年的一個熱門話題。同樣,在銀行業主推X86限制主機與小型機的背景下,傳統的單機數據庫逐漸出現了一些瓶頸,馬上會面臨是否引入分布式數據庫的問題。

近期,Ivan在個人公眾號就“銀行引入分布式數據庫的必要性”做過一些展望,并收到了一些朋友的反饋,除了對分布式數據庫具體技術探討外,還有一類很有趣的建議,“能不能也講講Teradata、Greenplum這類MPP,這些也是分布式數據庫,但老板總是認為OLTP場景下的才算數”。

的確,為了解決OLAP場景需求,其實很早就出現了分布式架構的產品和解決方案,其與目前的OLTP方案有很多共通的地方。而且Ivan相信,今后OLAP和OLTP兩個分支技術的發展也必然是交錯前行,可以相互借鑒的。

鑒于此,本文會將OLAP類場景的分布式數據也納入進來,從兩個維度對“分布式數據庫”進行拆解,第一部分會橫向談談不同的“分布式數據庫”,把它們分為五類并對其中OLAP場景的三類做概要分析;第二部分結合NoSQL與NewSQL的差異,縱向來談談OLTP場景“分布式數據庫”實現方案的關鍵技術要點,是前文的延伸,也是分布式數據庫專題文章的一個總綱,其中的要點也都會單獨撰文闡述。

首先,Ivan們從橫向談談不同的“分布式數據庫”:

一、萬法同宗RDBMS

1990年代開始,關系型數據庫(RDBMS)成為主流,典型的產品包括Sybase、Oracle、DB2等,同期大約也是國內IT產業的起步階段。RDBMS的基本特征已有學術上的定義,這里不再贅述。

但從實際應用的角度看,Ivan認為有兩點最受關注:

  • 內部以關系模型存儲數據,對外支持ANSI SQL接口;
  • 支持事務管理ACID特性,尤其是強一致性(指事務內的修改要么全部失敗要么全部成功,不會出現中間狀態)。

而后出現的各種“分布式數據庫”,大多都是在這兩點上做權衡以交換其他方面的能力。

“數據庫”雖然有經典定義,但很多大數據產品或許是為了標榜對傳統數據庫部分功能的替代作用,也借用了“數據庫”的名號,導致在實踐中這個概念被不斷放大,邊界越來越模糊。本文一個目標是要厘清這些產品與經典數據庫的差異與傳承,所以不妨先弱化“數據庫”,將其放大為“數據存儲”。

那么怎樣才算是“分布式數據存儲”系統?

“分布式”是一種架構風格,用其實現“數據存儲”,最現實的目的是為了打開數據庫產品的性能天花板,并保證系統的高可靠,進一步展開,“分布式數據庫”的必要條件有兩點:

  • 支持水平擴展,保證高性能

通過增加機器節點的方式提升系統整體處理能力,擺脫對專用設備的依賴,并且突破專用設備方案的性能上限。這里的機器節點,通常是要支持X86服務器。

  • 廉價設備+軟件,保證高可靠

在單機可靠性較低的前提下,依靠軟件保證系統整體的高可靠,又可以細分為“數據存儲的高可靠”和“服務的高可靠”。總之,任何單點的故障,可能會帶來短時間、局部的服務水平下降,但不會影響系統整體的正常運轉。

將這兩點作為“分布式數據庫”的必要條件,Ivan大致歸納了一下,至少有五種不同的“分布式數據庫”:

  • NoSQL
  • NewSQL
  • MPP
  • Hadoop技術生態
  • Like-Mesa

注:也許有些同學會提到Kafka、Zookeeper等,這些雖然也是分布式數據存儲,但因為具有鮮明的特點和適用場景,無需再納入“數據庫”概念進行探討。

這五類中,前兩類以支持OLTP場景為主,后三類則以OLAP場景為主。Ivan將按照時間線,主要對OLAP場景下的三類進行概要分析。

二、OLAP場景下的分布式數據庫

1990-2000年代,隨著應用系統廣泛建設與深入使用,數據規模越來越大,國內銀行業的“全國大集中”基本都是在這個階段完成。這期間,RDBMS得到了廣泛運用,Oracle也擊敗Sybase成為數據庫領域的王者。

在滿足了基本的交易場景后,數據得到了累積,進一步的分析性需求自然就涌現了出來。單一數據庫內同時支持聯機交易和分析需求存在很多問題,往往會造成對聯機交易的干擾,因此需要新的解決方案。這就為MPP崛起提供了機會。

1. MPP

MPP(Massively Parallel Processing)是指多個處理器(或獨立的計算機)并行處理一組協同計算[1]。

為了保證各節點的獨立計算能力,MPP數據庫通常采用ShareNothing架構,最為典型的產品是Teradata(簡稱TD),后來也出現Greenplum(簡稱GPDB)、Vertica、Netezza等競爭者。

架構特點:

MPP是多機可水平擴展的架構,符合“分布式”的基本要求,其中TD采用外置集中存儲而GPDB直接使用本地磁盤,從這點來說GPDB是更徹底的Share Nothing架構。

考慮到TD商業策略上采用一體機方案,不具有開放性,而GPDB具有較高的開源程度,下文中通過分析后者架構特點來分析MPP工作機制。

GPDB屬于主從架構[2],Slave稱為Segment是主要的數據加工節點,是在PostgreSQL基礎上的封裝和修改,天然具備事務處理的能力,可進行水平擴展;集群內有唯一Active狀態的Master節點,除了元數據存儲和調度功能外,同時承擔一定的工作負載,即所有外部對集群的數據聯機訪問都要經過Master節點。

在高可靠設計方面,首先設置了Standby Master節點,在Master節點宕機時接管其任務,其次將Segment節點則細分為兩類不同角色Primary和Mirror,后者是前者的備節點,數據提交時在兩者間進行強同步,以此保證Primary宕機時,Mirror可以被調度起來接替前者的任務。

從架構特點到功能缺陷,重新認識分析型分布式數據庫

數據分析性需求對IT能力的要求包括:

  • 復雜查詢能力;
  • 批量數據處理;
  • 一定的并發訪問能力。

MPP較好的實現了對上述能力的支撐,在前大數據時代得到了廣泛的應用,但這個時期的數據總量相對仍然有限,普遍在TB級別,對應的集群規模也通常在單集群百節點以下。

隨著數據價值關注度的不斷提升,越來越多的數據被納入企業分析范圍;同時實際應用中考慮到數據存儲和傳輸成本,往往傾向于將數據集中在一個或少數幾個集群中,這樣推動了集群規模的快速增長。

在大規模集群(幾百至上千)的使用上,MPP從批處理和聯機訪問兩個方面都顯現了一些不足。以下內容主要借鑒了Pivotal(GPDB原廠)的一篇官方博客[3]。

注:有位同學給出的譯文也具有較好的質量,推薦閱讀[4]。

缺陷:

批處理

MPP架構下,工作負載節點(對GPDB而言是Segment節點)是完全對稱的,數據均勻的存儲在這些節點,處理過程中每個節點(即該節點上的Executor)使用本地的CPU、內存和磁盤等資源完成本地的數據加工。這個架構雖然提供了較好的擴展性,但隱藏了極大的問題——Straggler,即當某個節點出現問題導致速度比其他節點慢時,該節點會成為Straggler。

此時,無論集群規模多大,批處理的整體執行速度都由Straggler決定,其他節點上的任務執行完畢后則進入空閑狀態等待Straggler,而無法分擔其工作。導致節點處理速度降低的原因多數是磁盤等硬件損壞,考慮到磁盤本身的一定故障率(根據Google統計前三個月內2%損壞率,第二年時達到8%)當集群規模達到一定程度時,故障會頻繁出現使straggler成為一個常規問題。

并發

由于MPP的“完全對稱性”,即當查詢開始執行時,每個節點都在并行的執行完全相同的任務,這意味著MPP支持的并發數和集群的節點數完全無關。根據該文中的測試數據,4個節點的集群和400個節點的集群支持的并發查詢數是相同的,隨著并發數增加,這二者幾乎在相同的時點出現性能驟降。

傳統MPP的聯機查詢主要面向企業管理層的少數用戶,對并發能力的要求較低。而在大數據時代,數據的使用者從戰略管理層轉向戰術執行層乃至一線人員,從孤立的分析場景轉向與業務交易場景的融合。對于聯機查詢的并發能力已經遠超MPP時代,成為OLAP場景分布式數據庫要考慮的一個重要問題。

除上述兩點以外,GPDB架構中的Master節點承擔了一定的工作負載,所有聯機查詢的數據流都要經過該節點,這樣Master也存在一定的性能瓶頸。同時,在實踐中GPDB對數據庫連接數量的管理也是非常謹慎的。在Ivan曾參與的項目中,Pivotal專家給出了一個建議的最大值且不會隨著集群規模擴大而增大。

綜上,大致可以得出結論,MPP(至少是GPDB)在集群規模上是存在一定限制的。

2000-2010年代,大多數股份制以上銀行和少部分城商行都建立了數據倉庫或ODS系統,主要采用了MPP產品。可以說,這十余年是MPP產品最輝煌的時代。到目前為止,MPP仍然是銀行業建設數據倉庫和數據集市類系統的主要技術選擇。為了規避MPP并發訪問上的缺陷以及批量任務對聯機查詢的影響,通常會將數據按照應用粒度拆分到不同的單體OLTP數據庫中以支持聯機查詢。

2. Hadoop生態體系

MPP在相當長的一段時期內等同于一體機方案(以TD為代表),其價格高昂到普通企業無法承受,多數在銀行、電信等行業的頭部企業中使用。2010年代,隨著大數據時代的開啟,Hadoop生態體系以開源優勢,獲得了蓬勃發展和快速普及。

Hadoop技術體系大大降低了數據分析類系統的建設成本,數據分析挖掘等工作由此步入“數據民主化”時代。在Hadoop生態體系中,分析需求所需要的能力被拆分為批量加工和聯機訪問,通過不同的組件搭配實現。批量加工以MapReduce、Tez、Spark等為執行引擎,為了獲得友好的語義支持,又增加了Hive、SparkSQL等組件提供SQL訪問接口。

聯機訪問部分,則從早期Hive過渡到Impala、Hawk以及Kylin、Presto等方案逐漸降低了訪問延時。

架構特點:

Hadoop生態體系下HDFS、Spark、Hive等組件已經有很多文章介紹,本文不再贅述。總的來說,其架構的著力點在于數據高吞吐處理能力,在事務方面相較MPP更簡化,僅提供粗粒度的事務管理。

缺陷:

Hadoop也有其明顯的缺陷,主要是三點:

批量加工效率較低

MPP的擁護者往往會詬病Hadoop計算引擎執行效率低。的確,在同等規模的集群執行相同的數據加工邏輯,即使與Spark對比,MPP所耗費的時間也會明顯更少些[3],其主要的原因在于兩者對于數據在磁盤和內存中的組織形式不同。

MPP從RDBMS而來(例如Vertica和GPDB都是基于PostgreSQL開發),對數據的組織形式更貼近傳統方式,按區、段、塊等單位組織,對數據進行了預處理工作以提升使用時的效率;Hadoop生態體系以HDFS文件存儲為基礎,HDFS并不像傳統數據庫那樣獨立管理一塊連續的磁盤空間,而是將數據表直接映射成不同的數據文件,甚至表分區也以目錄、文件等方式體現。

HDFS最簡單的txt格式干脆就是平鋪的數據文件,處理過程難免要簡單粗暴一些,但隨著Avro、ORCFile、Parquet等很多新的存儲格式相繼被引入,基于HDFS的批處理也更加精細。從整體架構來看,Hadoop更加看重大數據量批量處理的吞吐能力。

同時,Hadoop具備MPP所缺失的批量任務調整能力,數據的多副本存儲使其具有更多“本地化”數據加工的備選節點,而且數據加工處理與數據存儲并不綁定,可以根據節點的運行效率動態調整任務分布,從而在大規模部署的情況下具有整體上更穩定的效率。相比之下,MPP在相對較小的數據量下具有更好的執行效率。

不能無縫銜接EDW實施方法論

在長期的實踐中,企業級市場的主流集成商針對EDW項目沉淀了一套固定的實施方法,與MPP特性相匹配,但Hadoop并不能與之無縫對接。一個最典型的例子是歷史數據的存儲,傳統方法是采用“拉鏈表”的形式,即對于當前有效的數據會記錄其生效的起始時間,在數據被更改或刪除后,在該行記錄的另外一列記錄失效時間。這樣,當前數據即變更為歷史數據,通過這種增量的表述方式,節省了大量的存儲空間和磁盤IO。

從架構特點到功能缺陷,重新認識分析型分布式數據庫

可以看出,拉鏈表的設計思想其實與基于時間戳的MVCC機制是相同的。

HDFS作為Hadoop的存儲基礎,其本身不提供Update操作,這樣所有在數據操作層面的Update最終會被轉換為文件層面的Delete和Insert操作,效率上顯著降低。據Ivan所知,在很多企業實踐中會將這種增量存儲轉換為全量存儲,帶來大量數據冗余的同時,也造成實施方法上的變更。

聯機查詢并發能力不足

對于聯機查詢場景,最常見的是SQL on Hadoop方案,將Impala、HAWQ等MPP引擎架設在HDFS基礎上,批量數據與聯機查詢共用一份數據。MPP引擎借鑒了MPP數據庫的設計經驗,相對Hive等組件提供了更低的延遲。但存在一個與MPP相同的問題,即并發能力不足。

通過一些項目測試中,Ivan發現在大體相同的數據量和查詢邏輯情況下, Impala并發會低于GPDB。其原因可能是多方面的,不排除存在一些調優空間,但在系統架構層面也有值得探討的內容。例如在元數據讀取上,Impala復用了Hive MetaStore,但后者提供的訪問服務延時相對較長,這也限制了Impala的并發能力[7]。

3. Like-Mesa

Mesa是Google開發的近實時分析型數據倉庫,2014年發布了論文披露其設計思想[5],其通過預聚合合并Delta文件等方式減少查詢的計算量,提升了并發能力。

Mesa充分利用了現有的Google技術組件,使用BigTable來存儲所有持久化的元數據,使用了Colossus (Google的分布式文件系統)來存儲數據文件,使用MapReduce來處理連續的數據。

從架構特點到功能缺陷,重新認識分析型分布式數據庫

Mesa相關的開源產品為Clickhouse[6](2016年Yandex開源)和Palo[7](2017年百度開源)。

架構特點:

目前ClickHouse的資料仍以俄語社區為主,為便于大家理解和進一步研究,下面主要以Palo為例進行說明。

Palo沒有完全照搬Mesa的架構設計的思路,其借助了Hadoop的批量處理能力,但將加工結果導入到了Palo自身存儲,專注于聯機查詢場景,在聯機查詢部分主要借鑒了Impala技術。同時Palo沒有復用已有的分布式文件系統和類BigTable系統,而是設計了獨立的分布式存儲引擎。雖然數據存儲上付出了一定的冗余,但在聯機查詢的低延遲、高并發兩方面都得到了很大的改善。

Palo在事務管理上與Hadoop體系類似,數據更新的原子粒度最小為一個數據加載批次,可以保證多表數據更新的一致性。

整體架構由Frontend和Backend兩部分組成,查詢編譯、查詢執行協調器和存儲引擎目錄管理被集成到Frontend;查詢執行器和數據存儲被集成到Backend。Frontend負載較輕,通常配置下,幾個節點即可滿足要求;而Backend作為工作負載節點會大幅擴展到幾十至上百節點。數據處理部分與Mesa相同采用了物化Rollup(上卷表)的方式實現預計算。

從架構特點到功能缺陷,重新認識分析型分布式數據庫

Palo和ClickHouse都宣稱實現了MPP Data Warehouse,但從架構上看已經與傳統的MPP發生很大的變化,幾乎完全舍棄了批量處理,專注于聯機部分。

ClickHouse和Palo作為較晚出現的開源項目,還在進一步發展過程中,設定的使用場景以廣告業務時序數據分析為主,存在一定局限性,但值得持續關注。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2018-05-07 08:55:26

數據庫分布式數據庫架構特點

2018-05-07 09:30:41

數據庫NoSQLNewSQL

2019-11-19 09:00:00

數據庫架構設計

2023-03-07 09:49:04

分布式數據庫

2012-09-29 13:18:23

分布式數據庫Google Span

2021-12-20 15:44:28

ShardingSph分布式數據庫開源

2023-12-05 07:30:40

KlustronBa數據庫

2023-12-11 09:11:14

TDSQL技術架構

2023-06-01 07:30:42

分析數據源關系型數據庫

2022-03-10 06:36:59

分布式數據庫排序

2023-07-31 08:27:55

分布式數據庫架構

2021-08-30 11:21:03

數據庫工具技術

2023-07-28 07:56:45

分布式數據庫SQL

2020-06-23 09:35:13

分布式數據庫網絡

2024-09-09 09:19:57

2022-08-01 18:33:45

關系型數據庫大數據

2020-04-14 11:14:02

PostgreSQL分布式數據庫

2023-11-14 08:24:59

性能Scylla系統架構

2024-03-11 08:57:02

國產數據庫證券

2013-04-26 16:18:29

大數據全球技術峰會
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品一区在线观看 | 亚洲视频免费观看 | 特级黄一级播放 | 黄色在线免费播放 | 一区二区免费 | 天天射视频 | 免费看爱爱视频 | 欧美精品一区二区三区在线播放 | 99九九久久 | 国产精品自在线 | 欧美视频成人 | 欧美一页| 成人依人| 成年人视频免费在线观看 | 日韩成人在线电影 | 国产毛片视频 | 999久久久免费精品国产 | 九九99精品 | 日本精品一区二区三区在线观看 | 性色的免费视频 | 国产激情91久久精品导航 | 日韩精品在线免费观看 | 99资源| a级毛片免费高清视频 | 欧产日产国产精品视频 | 久久久成人一区二区免费影院 | 国产一区二区久久 | 国产精品久久久久aaaa九色 | 欧美一级毛片在线播放 | 久久久视 | 久久免费精品视频 | 亚洲午夜视频 | 中文二区 | www.国产一区 | 精品在线一区 | 欧美1区 | 在线一级片 | 亚洲一区二区三区四区五区中文 | 亚洲一区二区视频 | 欧美精产国品一二三区 | 久久高潮|