NoSQL數(shù)據(jù)庫(kù)原理與應(yīng)用案例教程(適合培訓(xùn)、教學(xué))第8章 NewSQL數(shù)據(jù)庫(kù)PPT_第1頁(yè)
NoSQL數(shù)據(jù)庫(kù)原理與應(yīng)用案例教程(適合培訓(xùn)、教學(xué))第8章 NewSQL數(shù)據(jù)庫(kù)PPT_第2頁(yè)
NoSQL數(shù)據(jù)庫(kù)原理與應(yīng)用案例教程(適合培訓(xùn)、教學(xué))第8章 NewSQL數(shù)據(jù)庫(kù)PPT_第3頁(yè)
NoSQL數(shù)據(jù)庫(kù)原理與應(yīng)用案例教程(適合培訓(xùn)、教學(xué))第8章 NewSQL數(shù)據(jù)庫(kù)PPT_第4頁(yè)
NoSQL數(shù)據(jù)庫(kù)原理與應(yīng)用案例教程(適合培訓(xùn)、教學(xué))第8章 NewSQL數(shù)據(jù)庫(kù)PPT_第5頁(yè)
已閱讀5頁(yè),還剩37頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第8章

NewSQL數(shù)據(jù)庫(kù)NewSQL本期導(dǎo)讀NewSQL數(shù)據(jù)庫(kù)是一類新型的關(guān)系型數(shù)據(jù)庫(kù),它不僅具有NoSQL數(shù)據(jù)庫(kù)對(duì)海量數(shù)據(jù)的存儲(chǔ)管理能力,還具有傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)的ACID特性,同時(shí)支持SQL查詢。常用的NewSQL數(shù)據(jù)庫(kù)主要包括TiDB、OceanBase和VoltDB等。

本章首先介紹NewSQL數(shù)據(jù)庫(kù)的興起和特點(diǎn);然后介紹TiDB數(shù)據(jù)庫(kù),具體包括TiDB的核心特性、整體架構(gòu)、存儲(chǔ)機(jī)制及管理機(jī)制,以及其在美團(tuán)單車中的應(yīng)用;最后介紹OceanBase的核心特性和整體架構(gòu)。學(xué)習(xí)目標(biāo)了解NewSQL數(shù)據(jù)庫(kù)的特點(diǎn)。了解TiDB數(shù)據(jù)庫(kù)的核心特性。理解TiDB數(shù)據(jù)庫(kù)的整體架構(gòu)。掌握TiDB數(shù)據(jù)庫(kù)的存儲(chǔ)和管理機(jī)制。熟悉TiDB數(shù)據(jù)庫(kù)的應(yīng)用場(chǎng)景。了解OceanBase數(shù)據(jù)庫(kù)的核心特性。理解OceanBase數(shù)據(jù)庫(kù)的整體架構(gòu)。目錄NewSQL數(shù)據(jù)庫(kù)概述TiDB數(shù)據(jù)庫(kù)8.18.2TiDB在美團(tuán)單車中的應(yīng)用8.38.4OceanBase數(shù)據(jù)庫(kù)8.1NewSQL數(shù)據(jù)庫(kù)概述8.1.1從NoSQL到NewSQL1.NoSQL的不足(1)NoSQL數(shù)據(jù)庫(kù)不支持事務(wù)的ACID特性。(2)NoSQL數(shù)據(jù)庫(kù)沒(méi)有統(tǒng)一的查詢語(yǔ)言,不支持SQL查詢。(3)大多數(shù)NoSQL數(shù)據(jù)庫(kù)提供的功能比較簡(jiǎn)單,因此需要在應(yīng)用層添加更多的功能。NewSQL數(shù)據(jù)庫(kù)不僅具有NoSQL數(shù)據(jù)庫(kù)對(duì)海量數(shù)據(jù)的存儲(chǔ)管理能力,還保留了傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)支持ACID的特性并支持SQL查詢。

簡(jiǎn)單來(lái)講,NewSQL數(shù)據(jù)庫(kù)可以表示為:

NewSQL=SQL+NoSQL8.1.1從NoSQL到NewSQL2.NewSQL的興起8.1.1從NoSQL到NewSQL3.NewSQL的分類

不同的NewSQL數(shù)據(jù)庫(kù)內(nèi)部結(jié)構(gòu)差異很大,但是它們都有兩個(gè)顯著的共同特點(diǎn):一是它們都支持關(guān)系數(shù)據(jù)模型。二是它們都使用SQL作為主要接口。NewSQL系統(tǒng)大致分為3類,即新型架構(gòu)的NewSQL系統(tǒng)、中間件類型的NewSQL系統(tǒng)和DBaaS(database-as-a-service)類型。表8-1NewSQL系統(tǒng)的類型8.1.1從NoSQL到NewSQLNewSQL系統(tǒng)代表性產(chǎn)品描述新型架構(gòu)的NewSQL系統(tǒng)GoogleSpanner可擴(kuò)展、多版本、全球分布式、支持同步復(fù)制。使用GPS(全球定位系統(tǒng))和原子鐘實(shí)現(xiàn)的時(shí)間API,能將各數(shù)據(jù)中心的時(shí)間同步精確到10ms以內(nèi)新型架構(gòu)的NewSQL系統(tǒng)Clustrix是一個(gè)集群式RDBMS,可確保事務(wù)處理符合ACID特性,同時(shí)具有可擴(kuò)展性和容錯(cuò)能力VoltDB一個(gè)內(nèi)存數(shù)據(jù)庫(kù),具備NoSQL數(shù)據(jù)庫(kù)的可伸縮性和傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)的ACID特性中間件類型的NewSQL系統(tǒng)MariaDBMaxScaleMaxScale是MariaDB公司開(kāi)發(fā)的數(shù)據(jù)庫(kù)中間件,可以很方便地實(shí)現(xiàn)讀寫分離、負(fù)載均衡和高可用,同時(shí)也提供了SQL語(yǔ)句的解析過(guò)濾功能ScaleArc放置在應(yīng)用軟件和數(shù)據(jù)庫(kù)之間,用于改善程序的可用性和性能,支持MySQL、SQLServer和OracleDBaaS類型的NewSQL系統(tǒng)AmazonAuroraAmazonAurora是一種與MySQL和PostgreSQL兼容的數(shù)據(jù)庫(kù)引擎,專為云打造,既具有傳統(tǒng)企業(yè)數(shù)據(jù)庫(kù)的性能和可用性,又具有開(kāi)源數(shù)據(jù)庫(kù)的簡(jiǎn)單性和成本效益ClearDBClearDB是基于MySQL構(gòu)建的,為單節(jié)點(diǎn)MySQL實(shí)例在多個(gè)數(shù)據(jù)中心創(chuàng)建鏡像實(shí)施計(jì)劃與措施8.1.2NewSQL數(shù)據(jù)庫(kù)的特點(diǎn)TexthereTexthereTexthereTexthereTexthere3.支持事務(wù)的ACID特性1.支持SQLNewSQL的主要特點(diǎn)是支持SQL。2.內(nèi)存存儲(chǔ)使用內(nèi)存存儲(chǔ)的好處是它支持針對(duì)性的優(yōu)化NewSQL數(shù)據(jù)庫(kù)的主要應(yīng)用場(chǎng)景是聯(lián)機(jī)事務(wù)處理,那就需要支持事務(wù)的ACID特性,4.可擴(kuò)展性好NewSQL數(shù)據(jù)庫(kù)的可擴(kuò)展性好,并且對(duì)業(yè)務(wù)層完全透明。NewSQL數(shù)據(jù)庫(kù),如TiDB和CockroachDB等在復(fù)制方案上都沒(méi)有選擇主從模型,而是選用了如Multi-Paxos或Raft算法等基于分布式選舉的復(fù)制協(xié)議。5.支持全新的復(fù)制方案NewSQL數(shù)據(jù)庫(kù)除了可以保證數(shù)據(jù)的更新不會(huì)丟失,還希望減少停機(jī)時(shí)間。這是因?yàn)榇蟛糠諻eb應(yīng)用須提供7*24小時(shí)不間斷服務(wù),須避免因停機(jī)帶來(lái)的損失。8.1.1從NoSQL到NewSQL6.支持崩潰恢復(fù)8.2TiDB數(shù)據(jù)庫(kù)8.2.1TiDB的核心特性1.兼容MySQLTiDB數(shù)據(jù)庫(kù)兼容MySQL5.7的網(wǎng)絡(luò)協(xié)議,并兼容大多數(shù)MySQL的語(yǔ)法,同時(shí),TiDB具有MySQL的常用功能。在大多數(shù)場(chǎng)景下,無(wú)須或者只須修改少量代碼即可實(shí)現(xiàn)MySQL到TiDB的遷移。8.2.1TiDB的核心特性2.金融級(jí)高可用TiDB數(shù)據(jù)庫(kù)采用多副本方式存儲(chǔ)數(shù)據(jù),數(shù)據(jù)副本通過(guò)Multi-Raft協(xié)議同步事務(wù)日志,只有在多數(shù)派寫入成功時(shí),事務(wù)才能提交。3.支持分布式事務(wù)TiDB數(shù)據(jù)庫(kù)支持分布式事務(wù),這對(duì)于有強(qiáng)一致需求的場(chǎng)景,如銀行轉(zhuǎn)賬是非常友好的。TiDB數(shù)據(jù)庫(kù)擁有良好的擴(kuò)展性,支持彈性擴(kuò)容或縮容,這得益于TiDB架構(gòu)的設(shè)計(jì)。TiDB存儲(chǔ)與計(jì)算分離的架構(gòu)設(shè)計(jì)可以按需分別對(duì)計(jì)算和存儲(chǔ)進(jìn)行在線擴(kuò)容或縮容,且擴(kuò)容或縮容過(guò)程對(duì)運(yùn)維人員是透明的。8.2.1TiDB的核心特性4.分布式架構(gòu)實(shí)現(xiàn)一鍵水平擴(kuò)縮容TiDB集群主要包括3個(gè)核心組件:TiDBserver、PDserver和TiKVserver。圖8-2TiDB整體架構(gòu)8.2.2TiDB整體架構(gòu)1.TiDBserver

TiDBserver屬于SQL層,負(fù)責(zé)接收客戶端的SQL請(qǐng)求,并進(jìn)行SQL解析和優(yōu)化,然后生成分布式執(zhí)行計(jì)劃。由于數(shù)據(jù)全部存儲(chǔ)在TiKV集群中,所以TiDBserver需要和TiKV交互并獲取數(shù)據(jù),最終將查詢結(jié)果返回客戶端。TiDBserver是無(wú)狀態(tài)的,本身并不存儲(chǔ)數(shù)據(jù),只負(fù)責(zé)解析,可以無(wú)限水平擴(kuò)展。8.2.2TiDB整體架構(gòu)三是對(duì)TiKV集群數(shù)據(jù)進(jìn)行調(diào)度。一是負(fù)責(zé)存儲(chǔ)整個(gè)TiKV集群的元數(shù)據(jù)信息。PDserver主要有3個(gè)功能:8.2.2TiDB整體架構(gòu)2.PDserver二是負(fù)責(zé)為TiDBserver提供路由功能。3.TiKVserver

TiKVserver是一個(gè)分布式的提供事務(wù)的key/value存儲(chǔ)引擎,負(fù)責(zé)以key/value形式存儲(chǔ)集群中的數(shù)據(jù),并按照鍵(key)的二進(jìn)制順序有序存儲(chǔ)。TiKVserver將整個(gè)key/value空間分為很多段,每一段稱為一個(gè)Region,由一系列連續(xù)的key組成。Region是TiKVserver存儲(chǔ)數(shù)據(jù)的基本單位,每個(gè)TiKV節(jié)點(diǎn)負(fù)責(zé)多個(gè)Region。8.2.2TiDB整體架構(gòu)1.TiDB設(shè)計(jì)思想在TiDB架構(gòu)中,TiKV負(fù)責(zé)存儲(chǔ)數(shù)據(jù),SQL層負(fù)責(zé)SQL解析、驗(yàn)證等工作。8.2.3TiDB的存儲(chǔ)機(jī)制圖8-3TiDB的邏輯結(jié)構(gòu)8.2.3TiDB的存儲(chǔ)機(jī)制

作為一個(gè)保存數(shù)據(jù)的系統(tǒng),首先要明確數(shù)據(jù)的存儲(chǔ)模型,也就是數(shù)據(jù)是以什么形式存儲(chǔ)的。TiKV是以key/value形式保存數(shù)據(jù),并且提供有序的遍歷方法。(1)key/value模型。概念(

2)本地存儲(chǔ)(RocksDB)。TiKV在數(shù)據(jù)存儲(chǔ)方面沒(méi)有依賴任何分布式文件系統(tǒng),它是將數(shù)據(jù)保存在RocksDB中,具體將數(shù)據(jù)寫入磁盤的過(guò)程是由RocksDB負(fù)責(zé)的。①Leader(領(lǐng)導(dǎo)者)選舉。(3)Raft協(xié)議。8.2.3TiDB的存儲(chǔ)機(jī)制TiKV使用Raft協(xié)議保證在單機(jī)失效的情況下,數(shù)據(jù)依然不出錯(cuò)。Raft是一個(gè)一致性協(xié)議,主要提供以下幾個(gè)重要功能。②成員變更。③日志復(fù)制。(4)MVCC。(1)關(guān)系模型與key/value模型的映射。8.2.3TiDB的存儲(chǔ)機(jī)制2.TiDB的實(shí)現(xiàn)原理①OLTP場(chǎng)景下有大量針對(duì)單行或者多行的增、刪、改和查等操作,要求數(shù)據(jù)庫(kù)具備快速讀取一行數(shù)據(jù)的能力。因此,對(duì)應(yīng)的key最好有一個(gè)唯一的ID,以方便快速定位。②很多OLAP場(chǎng)景的查詢需要進(jìn)行全表掃描。在關(guān)系模型中,數(shù)據(jù)采用二維表的邏輯結(jié)構(gòu)進(jìn)行存儲(chǔ),每個(gè)表由多個(gè)行和列組成。在實(shí)際應(yīng)用場(chǎng)景中,主要有以下需求:TiDB中的表數(shù)據(jù)與key/value的映射關(guān)系:8.2.3TiDB的存儲(chǔ)機(jī)制12TiDB為每個(gè)表分配一個(gè)表ID,用TableID表示,目的是保證同一個(gè)表的數(shù)據(jù)放在一起,以方便查找。TiDB為表中每行數(shù)據(jù)分配一個(gè)行ID,用RowID表示。3每行數(shù)據(jù)按照如下方式映射為key/value形式。(2)Region的分散和復(fù)制。8.2.3TiDB的存儲(chǔ)機(jī)制TiKV采用的方法是,將key/value空間的每一段(Region)分散存儲(chǔ)在不同的節(jié)點(diǎn)上,并盡量保持每個(gè)Region中保存的數(shù)據(jù)不超過(guò)一定的大小。

由于每個(gè)Region中的key是有序的,所以每個(gè)Region都可以用[startkey,endkey)這樣一個(gè)左閉右開(kāi)區(qū)間來(lái)描述。一個(gè)Region的數(shù)據(jù)須保存多個(gè)副本。

在TiKV中,每個(gè)副本叫作一個(gè)Replica,多個(gè)Replica通過(guò)Raft協(xié)議保持?jǐn)?shù)據(jù)的一致。圖8-5Region的邏輯結(jié)構(gòu)(3)SQL運(yùn)算。具體流程①構(gòu)造keyrange(key的范圍)。②掃描keyrange。8.2.3TiDB的存儲(chǔ)機(jī)制③過(guò)濾數(shù)據(jù)。④計(jì)算。例如,有如下SQL語(yǔ)句:8.2.3TiDB的存儲(chǔ)機(jī)制圖8-7SQL運(yùn)算的執(zhí)行過(guò)程圖8-8分布式SQL運(yùn)算的執(zhí)行過(guò)程1.收集信息8.2.4TiDB的管理機(jī)制PD可從TiKV的兩類心跳信息中獲取相關(guān)信息:一類是TiKV節(jié)點(diǎn)信息,一類是Region信息,8.2.4TiDB的管理機(jī)制PD對(duì)新加入的節(jié)點(diǎn)生成全局ID。同時(shí)該心跳包中也會(huì)包含節(jié)點(diǎn)的元數(shù)據(jù)信息,主要包括以下內(nèi)容。4236571總磁盤容量。可用磁盤容量。承載的Region數(shù)量。數(shù)據(jù)寫入/讀取速度。發(fā)送/接收的Snapshot數(shù)量。是否過(guò)載。labels標(biāo)簽信息。實(shí)施計(jì)劃與措施8.2.4TiDB的管理機(jī)制RaftGroup的Leader向PD上報(bào)的心跳信息包含了這個(gè)Region的元數(shù)據(jù)信息,主要包括以下內(nèi)容。(1)Leader的位置。(2)Followers的位置。(3)掉線Replica的個(gè)數(shù)。(4)數(shù)據(jù)寫入/讀取的速度。(1)Leader向PD發(fā)送一個(gè)Region拆分請(qǐng)求,PD收到該請(qǐng)求后,會(huì)產(chǎn)生一個(gè)新的RegionID,并返回給Leader。(2)Leader將收到的信息寫入raftlog中,然后TiKV根據(jù)raftlog信息對(duì)Region進(jìn)行拆分。8.2.4TiDB的管理機(jī)制2.Region拆分(3)拆分成功后,TiKV會(huì)告知PD節(jié)點(diǎn)拆分后Region的相關(guān)信息。過(guò)程8.3

典型應(yīng)用——TiDB在美團(tuán)單車中的應(yīng)用

對(duì)開(kāi)關(guān)鎖成功率統(tǒng)計(jì)這種需要頻繁更新表結(jié)構(gòu)進(jìn)行DDL操作的業(yè)務(wù),如果數(shù)據(jù)量很大,使用MySQL可能會(huì)造成服務(wù)的不可用,甚至出現(xiàn)數(shù)據(jù)不一致的情況。8.3.1開(kāi)關(guān)鎖成功率統(tǒng)計(jì)解決方案一種是使用MySQL分庫(kù)分表一種是使用TiDB數(shù)據(jù)庫(kù)8.3.2實(shí)時(shí)數(shù)據(jù)分析8.3.1開(kāi)關(guān)鎖成功率統(tǒng)計(jì)TiDB自身有許多工具,可從線上所有的MySQL實(shí)例中實(shí)時(shí)同步各類數(shù)據(jù)。圖8-9實(shí)時(shí)數(shù)據(jù)分析8.4OceanBase數(shù)據(jù)庫(kù)1.高可用性O(shè)ceanBase中的數(shù)據(jù)以副本方式存儲(chǔ)在多臺(tái)機(jī)器上,任何時(shí)候如果一臺(tái)機(jī)器出現(xiàn)故障,其他機(jī)器上的副本仍然可以正常使用。

8.4.1OceanBase的核心特性2.高可擴(kuò)展性(1)使用share-nothing的全對(duì)等節(jié)點(diǎn)架構(gòu),每個(gè)節(jié)點(diǎn)都是獨(dú)立、自給的,簡(jiǎn)單地增加一些廉價(jià)計(jì)算機(jī)作為系統(tǒng)節(jié)點(diǎn)就可以獲取幾乎無(wú)限地?cái)U(kuò)展。(3)可以實(shí)現(xiàn)水平線性擴(kuò)展。

8.4.1OceanBase的核心特性(2)采用普通PC服務(wù)器作為數(shù)據(jù)庫(kù)服務(wù)器,成本低,可以自由地對(duì)分布式數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行擴(kuò)展。(4)在不停止服務(wù)的情況下進(jìn)行擴(kuò)展,對(duì)業(yè)務(wù)透明。3.高性能OceanBase將數(shù)據(jù)分為基

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論