1 背景
近年來,企業(yè)的各項(xiàng)業(yè)務(wù)發(fā)展迅猛,客戶數(shù)目不斷增加,后臺(tái)服務(wù)系統(tǒng)壓力也越來越大,系統(tǒng)的各項(xiàng)硬件資源也變得非常緊張。因此,在技術(shù)風(fēng)險(xiǎn)可控的基礎(chǔ)上,希望引入大數(shù)據(jù)技術(shù),利用大數(shù)據(jù)技術(shù)優(yōu)化現(xiàn)有IT系統(tǒng)實(shí)現(xiàn)升級(jí)改造,搭建一個(gè)統(tǒng)一存儲(chǔ)和管理歷史、近線數(shù)據(jù)的服務(wù)平臺(tái),同時(shí)能夠?qū)ν庵С指卟l(fā)、低延時(shí)的數(shù)據(jù)查詢服務(wù),以提高IT系統(tǒng)的計(jì)算能力,降低IT系統(tǒng)的建設(shè)成本,優(yōu)化IT系統(tǒng)的服務(wù)體系,為各個(gè)業(yè)務(wù)部門提供更加優(yōu)質(zhì)的IT服務(wù)。
這類服務(wù)平臺(tái)在整個(gè)IT系統(tǒng)架構(gòu)中實(shí)質(zhì)上是一個(gè)為核心業(yè)務(wù)系統(tǒng)減負(fù)的系統(tǒng)。SequoiaDB 巨杉數(shù)據(jù)庫支持海量分布式數(shù)據(jù)存儲(chǔ),并且支持垂直分區(qū)和水平分區(qū),利用這些特性可以將歷史、近線數(shù)據(jù)存儲(chǔ)到 SequoiaDB 中,并能夠?qū)ν庵С指卟l(fā)、低延時(shí)的數(shù)據(jù)查詢服務(wù)。本文主要講解如何利用巨杉數(shù)據(jù)庫域的特性在歷史、近線數(shù)據(jù)應(yīng)用場(chǎng)景下進(jìn)行存儲(chǔ)規(guī)劃已滿足業(yè)務(wù)系統(tǒng)對(duì)性能、存儲(chǔ)、維護(hù)等方便的要求。
在臨沭等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需定制,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),營銷型網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站制作,臨沭網(wǎng)站建設(shè)費(fèi)用合理。
2 相關(guān)概念
多維度數(shù)據(jù)分區(qū)
SequoiaDB 支持水平和垂直方式分區(qū)。采用散列(hash)或范圍(range)水平分區(qū)是將數(shù)據(jù)分布至多個(gè)節(jié)點(diǎn),加大數(shù)據(jù)吞吐量, 加速數(shù)據(jù)查詢和寫入;采用范圍(range)垂直分區(qū)是在一個(gè)節(jié)點(diǎn)內(nèi)將數(shù)據(jù)邏輯劃分為多個(gè)區(qū)間,每個(gè)區(qū)間作為獨(dú)立的存儲(chǔ)單元,減少查詢時(shí)網(wǎng)絡(luò)I/O, 進(jìn)一步加速查詢。
水平分區(qū)
散列水平分區(qū),原理是將選擇的分區(qū)鍵進(jìn)行 hash 運(yùn)算,根據(jù) hash 值將數(shù)據(jù)分發(fā)至相應(yīng)分區(qū)。范圍水平分區(qū)則是直接匹配分區(qū)鍵和所對(duì)應(yīng)的范圍,存放到相應(yīng)的分區(qū)。兩種分區(qū)方式各有適用的場(chǎng)景,和運(yùn)行的業(yè)務(wù)息息相關(guān)。一般不建議采用范圍水平分區(qū),除范圍分區(qū)鍵(如月)能保證數(shù)據(jù)均衡(如每月的數(shù)據(jù)量級(jí)一致)。如圖2-1所示。
圖2-1. SequoiaDB 水平分區(qū)
垂直分區(qū)
垂直分區(qū)是指在一個(gè)節(jié)點(diǎn)內(nèi)集合數(shù)據(jù)按某字段,分成成多個(gè)數(shù)據(jù)段。每個(gè)范圍代表一個(gè)垂直分區(qū)。數(shù)據(jù)查詢、寫入時(shí)自動(dòng)分發(fā)至相應(yīng)分區(qū)中。垂直分區(qū)極大減少硬盤數(shù)據(jù)訪問,降低網(wǎng)絡(luò)I/O,加速查詢。垂直分區(qū)共享資源(同一臺(tái)物理機(jī)),出發(fā)點(diǎn)在于將冷熱數(shù)據(jù)隔離,如圖2-2所示。
圖2-2. SequoiaDB 垂直分區(qū)
復(fù)制組和域
分區(qū)組又被稱為復(fù)制組,一個(gè)復(fù)制組內(nèi)可以包含一個(gè)或多個(gè)數(shù)據(jù)節(jié)點(diǎn)(或編目節(jié)點(diǎn)),節(jié)點(diǎn)之間的數(shù)據(jù)使用異步日志復(fù)制機(jī)制,保持最終一致。
域(Domain)是由若干個(gè)復(fù)制組(ReplicaGroup)組成的邏輯單元。每個(gè)域都可以根據(jù)定義好的策略自動(dòng)管理所屬數(shù)據(jù),如數(shù)據(jù)切片和數(shù)據(jù)隔離等。
以3臺(tái)服務(wù)器為例,每臺(tái)服務(wù)器9塊磁盤。復(fù)制組的物理部署和域的邏輯組成如圖2-3所示:
采用3副本,按磁盤部署數(shù)據(jù)節(jié)點(diǎn),每臺(tái)機(jī)器部署9個(gè)數(shù)據(jù)節(jié)點(diǎn),3臺(tái)機(jī)器橫向組成數(shù)據(jù)組,共9個(gè)數(shù)據(jù)組。如圖域1包括數(shù)據(jù)組1-3,域2包括數(shù)據(jù)組5-9,域3包括數(shù)據(jù)組1-6,因此域在邏輯上由數(shù)據(jù)組組成,并且組成的數(shù)據(jù)組可以重疊。
3 業(yè)務(wù)場(chǎng)景
隨著用戶的增加、業(yè)務(wù)的發(fā)展,大型企業(yè)用戶的業(yè)務(wù)系統(tǒng)的數(shù)據(jù)量越來越大,而且原有系統(tǒng)絕大部分基于關(guān)系型數(shù)據(jù)構(gòu)建,表結(jié)構(gòu)復(fù)雜,每個(gè)查詢都需要關(guān)聯(lián)若干張大數(shù)據(jù)表,導(dǎo)致關(guān)聯(lián)查詢的性能非常低。
因此可以利用 SequoiaDB 存儲(chǔ)海量歷史、近線數(shù)據(jù)并開發(fā)數(shù)據(jù)查詢統(tǒng)一入口,按照數(shù)據(jù)生命周期管理的規(guī)則對(duì)歷史、近線數(shù)據(jù)進(jìn)行統(tǒng)一在線存儲(chǔ)。另外平臺(tái)提供高并發(fā)、實(shí)時(shí)查詢服務(wù),解決了關(guān)系型數(shù)據(jù)庫海量數(shù)據(jù)關(guān)聯(lián)查詢性能慢的問題。
根據(jù)業(yè)務(wù)系統(tǒng)歷史、近線數(shù)據(jù)的需求,建立歷史、近線數(shù)據(jù)存儲(chǔ)區(qū)用于存儲(chǔ)從源系統(tǒng)直接導(dǎo)入的原始數(shù)據(jù),包括超出生產(chǎn)系統(tǒng)保存期限的數(shù)據(jù)以及需要按時(shí)點(diǎn)備份的數(shù)據(jù)。同時(shí)為提供在線、中高并發(fā),小結(jié)果集的數(shù)據(jù)處理能力,可根據(jù)源系統(tǒng)不同劃分多個(gè)存儲(chǔ)區(qū)域,集群內(nèi)部使用劃分?jǐn)?shù)據(jù)域的方式進(jìn)行分類管理。
4 數(shù)據(jù)域劃分方式
在業(yè)務(wù)系統(tǒng)通過接入平臺(tái)將結(jié)構(gòu)化數(shù)據(jù)接入到巨杉數(shù)據(jù)庫時(shí),需根據(jù)數(shù)據(jù)調(diào)研信息對(duì)業(yè)務(wù)系統(tǒng)進(jìn)行分類,以確定業(yè)務(wù)系統(tǒng)的存儲(chǔ)量、并發(fā)大小、數(shù)據(jù)生命周期等,為結(jié)構(gòu)化數(shù)據(jù)在巨杉數(shù)據(jù)庫中的存儲(chǔ)規(guī)劃提供信息支撐。業(yè)務(wù)系統(tǒng)結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)到巨杉數(shù)據(jù)庫可利用數(shù)據(jù)域技術(shù)對(duì)業(yè)務(wù)系統(tǒng)的數(shù)據(jù)區(qū)域進(jìn)行功能劃分,具體劃分方式如下:
海量數(shù)據(jù)或者高并發(fā)查詢業(yè)務(wù)系統(tǒng)
這類業(yè)務(wù)系統(tǒng)的特點(diǎn)是業(yè)務(wù)查詢并發(fā)較大,數(shù)據(jù)所占存儲(chǔ)空間較大,對(duì)cpu、內(nèi)存、網(wǎng)絡(luò)要求較高,利用域?qū)@類系統(tǒng)進(jìn)行隔離,可以使數(shù)據(jù)在寫入、讀取時(shí)充分利用集群中域所在機(jī)器的物理資源以提升性能。
數(shù)據(jù)量較小或者查詢并發(fā)數(shù)較小的業(yè)務(wù)系統(tǒng)
這類業(yè)務(wù)系統(tǒng)一般對(duì)cpu、內(nèi)存、網(wǎng)絡(luò)要求較低,所占存儲(chǔ)空間較小。因此這類系統(tǒng)可以和其他并發(fā)、所占存儲(chǔ)較小的業(yè)務(wù)系統(tǒng)的數(shù)據(jù)域共享數(shù)據(jù)組以節(jié)省機(jī)器資源。
5 利用數(shù)據(jù)域水平擴(kuò)展集群
目前,企業(yè)的部分業(yè)務(wù)系統(tǒng)結(jié)構(gòu)化數(shù)據(jù)年增長(zhǎng)量較大并且數(shù)據(jù)越來越多。在業(yè)務(wù)系統(tǒng)投產(chǎn)后,隨著業(yè)務(wù)量的增加集群可使用容量逐漸變小,因此在業(yè)務(wù)系統(tǒng)接入集群前需考慮存儲(chǔ)容量耗盡后整個(gè)集群的水平擴(kuò)展。SequoiaDB 是分布式數(shù)據(jù)庫,因此可以通過集群的擴(kuò)容實(shí)現(xiàn)集群性能的近線性增長(zhǎng)。而通過擴(kuò)容后主要解決兩個(gè)問題是數(shù)據(jù)存儲(chǔ)的容量問題和整個(gè)集群的性能問題。因?yàn)閿?shù)據(jù)量的不斷增長(zhǎng)及上線后的推廣使用,所以需要進(jìn)行擴(kuò)容來提升集群性能及增加數(shù)據(jù)存儲(chǔ)空間。
SequoiaDB 在集群的管理上定義了數(shù)據(jù)域概念,一個(gè)數(shù)據(jù)域可以將多個(gè)數(shù)據(jù)組包含進(jìn)來。一個(gè)集群可以根據(jù)不同的業(yè)務(wù)系統(tǒng)來劃分不同的數(shù)據(jù)域,不僅實(shí)現(xiàn)將不同業(yè)務(wù)系統(tǒng)數(shù)據(jù)在物理層面的隔離存儲(chǔ),同時(shí)也實(shí)現(xiàn)了不同業(yè)務(wù)系統(tǒng)數(shù)據(jù)的統(tǒng)一調(diào)度管理,而且以后的集群擴(kuò)容也可以根據(jù)域的使用需求而只針對(duì)此域進(jìn)行集群擴(kuò)容。
所以在進(jìn)行擴(kuò)容時(shí),我們需要結(jié)合 SequoiaDB 數(shù)據(jù)域和業(yè)務(wù)系統(tǒng)需求進(jìn)行擴(kuò)容規(guī)劃及實(shí)施。結(jié)構(gòu)化數(shù)據(jù)在擴(kuò)容時(shí),可針對(duì)結(jié)構(gòu)化數(shù)據(jù)所在數(shù)據(jù)域增加數(shù)據(jù)組再進(jìn)行數(shù)據(jù)均衡切分到新擴(kuò)容的機(jī)器上;或者使子表分散在單獨(dú)的集合空間中,并使子表對(duì)應(yīng)的集合空間所屬數(shù)據(jù)組在新擴(kuò)容機(jī)器的數(shù)據(jù)組上。
6 具體案例
某大型金融用戶的某系統(tǒng)歷史數(shù)據(jù)量60T,每天有80G左右的增量數(shù)據(jù)。假設(shè)按照3年數(shù)據(jù)總量做存儲(chǔ)規(guī)劃,則三年數(shù)據(jù)占總存儲(chǔ)約為(60+80G365/1024)3=266T。
假設(shè)現(xiàn)在客戶提供的硬件配置信息如下:
具體安裝部署如圖6-1所示:
圖6-1
存儲(chǔ)規(guī)則
根據(jù)上述業(yè)務(wù)系統(tǒng)的信息,可將這類系統(tǒng)劃分為高并發(fā)海量存儲(chǔ)業(yè)務(wù)場(chǎng)景。結(jié)合數(shù)據(jù)域劃分方式以及未來擴(kuò)容需求,該業(yè)務(wù)系統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)在接入時(shí)數(shù)據(jù)域劃分規(guī)則如下:
1、 海量數(shù)據(jù)高并發(fā)查詢業(yè)務(wù)系統(tǒng)使用獨(dú)立的域進(jìn)行存儲(chǔ);
2、 使用主子表按照時(shí)間切分,每個(gè)子表按照ID散列分布到域所對(duì)應(yīng)的所有機(jī)器上;
3、 海量數(shù)據(jù)高并發(fā)查詢業(yè)務(wù)系統(tǒng)子表單獨(dú)使用集合空間;
4、 數(shù)據(jù)量較小或者并發(fā)查詢較小的業(yè)務(wù)系統(tǒng)可以共用域;
5、 結(jié)構(gòu)化域擴(kuò)容可使用增加數(shù)據(jù)組再進(jìn)行數(shù)據(jù)均衡切分到新擴(kuò)容的機(jī)器上,或者使子表分散在單獨(dú)的集合空間中,并使子表對(duì)應(yīng)的集合空間所屬數(shù)據(jù)組在新擴(kuò)容機(jī)器的數(shù)據(jù)組上。
集合空間和集合設(shè)計(jì)
根據(jù)上述存儲(chǔ)規(guī)則,該業(yè)務(wù)場(chǎng)景下的結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)方式如下:
使用主子表按照時(shí)間切分,每個(gè)子表按照ID或者業(yè)務(wù)字段散列分布,子表跨度按月進(jìn)行切分,并且子表分散在單獨(dú)的集合空間中。
7 總結(jié)
數(shù)據(jù)域在邏輯上由一個(gè)或多個(gè)數(shù)據(jù)組組成,在物理上對(duì)應(yīng)具體的數(shù)據(jù)節(jié)點(diǎn),并且不同的域之間可以重疊數(shù)據(jù)組。因此,業(yè)務(wù)系統(tǒng)可以根據(jù)主子表特性以及域包含數(shù)據(jù)組的靈活性將集群劃分為不同的區(qū)域存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù),充分利用集群的計(jì)算、存儲(chǔ)資源。巨杉數(shù)據(jù)庫,支持海量數(shù)據(jù)存儲(chǔ),SequoiaDB 支持垂直分區(qū)和水平分區(qū),提供高并發(fā)、低延時(shí)數(shù)據(jù)查詢服務(wù)。