大數(shù)據(jù)時代如何構(gòu)建高性能數(shù)據(jù)庫平臺
在數(shù)據(jù)爆炸的時代,給眾多IT從業(yè)人員帶來了相當大的困擾—伴隨著大數(shù)據(jù)分析,商業(yè)智能的發(fā)展,數(shù)據(jù)量呈現(xiàn)指數(shù)增長,傳統(tǒng)數(shù)據(jù)處理系統(tǒng)已不堪重負。在這樣的背景下,“數(shù)據(jù)庫平臺的構(gòu)建”逐漸成為一個備受關(guān)注的話題。
影響數(shù)據(jù)庫性能的三要素
對于數(shù)據(jù)庫系統(tǒng)而言,絕大多數(shù)情況下影響數(shù)據(jù)庫性能的三個要素是:數(shù)據(jù)運算能力、數(shù)據(jù)讀寫時延和數(shù)據(jù)吞吐帶寬,簡稱計算、時延、吞吐。計算指的是CPU的運算能力,時延是數(shù)據(jù)從存儲介質(zhì)跑到CPU所需的時間長短,吞吐則是數(shù)據(jù)從存儲介質(zhì)到CPU的道路寬度。一般情況下,關(guān)注計算和時延是比較多的,但是在數(shù)據(jù)量越來越多的情況下,吞吐也成為影響數(shù)據(jù)庫性能的重要因素。如果吞吐帶寬不夠,會造成計算等待隊列的增加,CPU占用率虛高不下。這種情況下,即使增加再多的計算資源也于事無補,相當于千軍萬馬擠獨木橋,馬再好也是枉然。一個高性能的數(shù)據(jù)庫平臺,一定是計算、時延、吞吐三方面的能力齊頭并進,相互匹配。
計算能力由CPU主頻和核數(shù)決定,實踐中看CPU占用率就能夠大致確定CPU配置是否合適。時延的指標很簡單,時間是衡量時延的唯一指標。吞吐量則是通過每秒在I/O流中傳輸?shù)臄?shù)據(jù)總量來衡量的。
從三要素到三方法
明確了影響性能的要素后,就可以著手改變各要素來提升數(shù)據(jù)庫平臺的性能。
1.計算能力:x86化的今天,提升計算能力就是:增加CPU內(nèi)核數(shù)量或升級CPU主頻。
2.時延能力:加快數(shù)據(jù)從存儲介質(zhì)到CPU的速度,即提升數(shù)據(jù)讀寫時延,從以下三方面努力:
a)降低存儲介質(zhì)的讀寫時延:使用電子尋址的Flash顆粒來替換旋轉(zhuǎn)的機械磁頭,是降低存儲介質(zhì)讀寫時延最有效的方法。實踐中可結(jié)合數(shù)據(jù)吞吐量來確定是選擇SAS總線上的SSD盤還是選擇PCIE總線上的Flash卡。
b)降低網(wǎng)絡(luò)的傳送時延:網(wǎng)絡(luò)時延則可以通過InfiniBand網(wǎng)絡(luò)來解決,注意不要選擇IPoIB,而是要使用RDS,相比傳統(tǒng)UDP協(xié)議,網(wǎng)絡(luò)延遲至少減一半。通過SRP協(xié)議,利用RDMA技術(shù)在網(wǎng)絡(luò)層面?zhèn)魉蚐CSI指令和數(shù)據(jù),使得數(shù)據(jù)庫節(jié)點能夠像操作本地SCSI設(shè)備一樣讀寫遠程的數(shù)據(jù),對于時延的降低,不是FC網(wǎng)絡(luò)能夠企及的。
c)擴大存儲層的數(shù)據(jù)緩存大小:存儲層的數(shù)據(jù)緩存大小對時延也至關(guān)重要,如果有盡可能多的數(shù)據(jù)讀寫在緩存中進行,就避免了數(shù)據(jù)下盤。緩存的大小以及緩存算法都對緩存命中率有直接的影響,這一點往往被忽略。除了單點緩存之外,分布式緩存技術(shù)也是非常重要的,通過分布式緩存技術(shù),可以避免單點緩存的局限性,擴大緩存的全局能力,增加緩存規(guī)模,提高緩存命中率。
3.吞吐能力:拓寬數(shù)據(jù)通路的方法有兩種:使用高速InfiniBand網(wǎng)絡(luò)、使用分布式存儲。前者比較容易想到,實施也簡單,基于FDR 的56Gb/s InfiniBand解決方案可實現(xiàn)每秒1.37億條消息的信息通信速率,在16個計算節(jié)點上,性能表現(xiàn)比QDR 40Gb/s InfiniBand高出20%-30%,而與FC、萬兆和4萬兆以太網(wǎng)相比,性能更是領(lǐng)先了100%到300%,是最高效的計算和存儲互聯(lián)方案。對于后者,分布式存儲,其好處在于不將數(shù)據(jù)集中存放在某幾塊存儲介質(zhì)上,而是將數(shù)據(jù)全部打散存放在多個存儲節(jié)點的許多個介質(zhì)上,這樣避免在大規(guī)模數(shù)據(jù)并發(fā)讀寫訪問時,存儲介質(zhì)的單點能力成為數(shù)據(jù)讀寫的瓶頸,通過分布式的并發(fā)能力來提升數(shù)據(jù)讀寫吞吐能力。注意的是,一定要使用高性能低時延的分布式塊存儲,分布式文件存儲是無法滿足性能要求的。
通過計算、時延、吞吐的三管齊下,通過使用SSD存儲介質(zhì)、InfiniBand網(wǎng)絡(luò)交換以及分布式存儲,數(shù)據(jù)庫平臺的性能將得到極大提升。
未來為是何種模樣
高性能數(shù)據(jù)庫系統(tǒng)未來向著內(nèi)存化、云化的方向在不斷發(fā)展。SAP的HANA內(nèi)存數(shù)據(jù)庫,Oracle 12c的內(nèi)存特性,GemFire的分布式內(nèi)存數(shù)據(jù)緩存,以及Spark的內(nèi)存并行計算,都在昭示著內(nèi)存化的未來方向,其本質(zhì)還是通過內(nèi)存的高速讀寫與高速總線來解決時延和吞吐問題。
數(shù)據(jù)庫的云化,即DBaaS(數(shù)據(jù)庫即服務(wù)),其核心就是整合IT基礎(chǔ)設(shè)施中的硬軟件,實現(xiàn)簡單化、標準化和靈活性,提升可用性以及安全保障,同時降低成本。當然,云化在性能和QoS方面也對IT基礎(chǔ)設(shè)施提出了更多增強性的挑戰(zhàn)。