文 / 何鴻凌,作者就職于中國移動集團(tuán)公司業(yè)務(wù)支撐系統(tǒng)部,從事大數(shù)據(jù)平臺規(guī)劃工作,微博@BigData分析 老祖宗留下了《易經(jīng)》這本書,告訴我們世界的本質(zhì)是“變化”的,“變化”之間有相關(guān)性。比如云計(jì)算的興起是由于計(jì)算機(jī)的帶寬快速增加引起的,大數(shù)據(jù)的興
文 / 何鴻凌,作者就職于中國移動集團(tuán)公司業(yè)務(wù)支撐系統(tǒng)部,從事大數(shù)據(jù)平臺規(guī)劃工作,微博@BigData分析
老祖宗留下了《易經(jīng)》這本書,告訴我們世界的本質(zhì)是“變化”的,“變化”之間有相關(guān)性。比如云計(jì)算的興起是由于計(jì)算機(jī)的帶寬快速增加引起的,大數(shù)據(jù)的興起是由于數(shù)字化進(jìn)程引發(fā)的。
當(dāng)今的IT界最重要的“變化”就是摩爾定律。曾幾何時(shí),程序員們沉醉于用C語言精妙的語句節(jié)省了數(shù)KB內(nèi)存空間,現(xiàn)在大家都用上了邏輯更加清楚、更易于大規(guī)模協(xié)作的JAVA,而對語言效率看得不那么重要。計(jì)算和存儲能力變得越來越廉價(jià)的“變化”引發(fā)了其上軟件產(chǎn)品的“變化”。
軟件產(chǎn)品構(gòu)建在以CPU、內(nèi)存、外存(磁盤)為邊的三角形之上。摩爾定律對三條邊的影響程度各有不同。內(nèi)存的性價(jià)比每15個(gè)月倍增,CPU的性價(jià)比每18個(gè)月倍增,但磁盤存儲(主要的外存)的性價(jià)比增長并不遵循摩爾定律(因?yàn)樗谴诺牟皇蔷w管的)。更加重要的是:內(nèi)存帶寬的增長是符合摩爾定律的,而磁盤的帶寬(從IDE到SATA、SAS)提升速度甚至還落后于磁盤容量性價(jià)比的提升。
因此,代表內(nèi)存的那條邊伸長得太快以至于三角形無法維持其形狀,構(gòu)建在上面的軟件產(chǎn)品面臨慘烈的“顛覆”,以O(shè)RACLE為代表的數(shù)據(jù)庫軟件(DBMS)首當(dāng)其沖,因?yàn)樗鼈兪菙?shù)據(jù)密集型的。按照數(shù)據(jù)庫使用內(nèi)存和外存的特點(diǎn),可以分為三個(gè)時(shí)期:
內(nèi)存昂貴的時(shí)期:摩爾定律的效果還在累積,內(nèi)存遠(yuǎn)比外存昂貴。大部分的數(shù)據(jù)、索引、日志和臨時(shí)空間都只能放在外存磁盤之上,內(nèi)存起到的作用只是緩存。ORACLE、DB2、SYBASE等皆是在這個(gè)時(shí)代的產(chǎn)物,遺憾的是它們似乎歷史的包袱太沉重,現(xiàn)在大半個(gè)身子還停留于此時(shí)代,怪不得數(shù)據(jù)庫大師Mike.Stonebraker稱他們?yōu)?0年前的技術(shù)。
SSD外存崛起的時(shí)期:后SSD逐漸成為可選擇外存之一,而SSD的容量性價(jià)比是符合摩爾定律的,帶寬提升也非??欤ㄈ鏟CIE接口)。于是業(yè)界有一些改進(jìn)嘗試。比如阿里巴巴當(dāng)前的交易系統(tǒng)在去IOE后是采用的MYSQL數(shù)據(jù)庫Sharding方案,并將數(shù)據(jù)“全部”存儲在PCIE接口的SSD上。各傳統(tǒng)數(shù)據(jù)庫也發(fā)展出自己的StorageGroup方式來支持支持SSD做“熱”數(shù)據(jù)存儲的選項(xiàng)。比如Oracle推出了一體機(jī)Exadata,可以選擇將“部分”數(shù)據(jù)緩存到到SSD上,但其大規(guī)模的存儲還是利用磁盤。另外有一些技術(shù)型公司,如沃趣科技,推出了將Oracle的“全部”數(shù)據(jù)放到SSD上的方案,取得了很好的效果。
內(nèi)存顛覆外存的時(shí)期:全內(nèi)存數(shù)據(jù)庫其實(shí)早就出現(xiàn)了,例如被Oracle收購的TimeTen、被DB2收購的SolidDB、韓國的AltiBase等,但是由于之前內(nèi)存還是一個(gè)比較昂貴的選擇,因此內(nèi)存數(shù)據(jù)庫只是小規(guī)模使用。隨著摩爾定律效應(yīng)的累計(jì),內(nèi)存的價(jià)格持續(xù)下降、速度持續(xù)增加,量變成為質(zhì)變,VoltDB、HANA、MemSQL等一系列練就了獨(dú)門功夫的內(nèi)存數(shù)據(jù)庫如雨后春筍般出現(xiàn)。他們的共同特點(diǎn)就是所有數(shù)據(jù)都存儲在內(nèi)存中。這其中每個(gè)數(shù)據(jù)庫又有自己的特點(diǎn),比如VoltDB顛覆了原有數(shù)據(jù)庫設(shè)計(jì)理論,通過全局時(shí)鐘和預(yù)編譯的方法來進(jìn)行并發(fā)控制,避免了鎖等開銷,很好地適應(yīng)了OLTP類應(yīng)用;HANA通過內(nèi)存列存儲和極限壓縮來支持更快的大數(shù)據(jù)分析任務(wù);MemSQL重新設(shè)計(jì)了Mysql的存儲引擎部分,使之更加適應(yīng)內(nèi)存。
我們現(xiàn)在已經(jīng)可以清楚地看到內(nèi)存替代外存的趨勢,因此可以斷言:今后內(nèi)存將是存取數(shù)據(jù)、索引的主要發(fā)生地,而不僅僅是緩存某些數(shù)據(jù)。SSD可能會作為快速數(shù)據(jù)持久化的手段,保證斷電以后當(dāng)前數(shù)據(jù)的安全。而速度更慢的機(jī)械磁盤可能作為備份的手段,替代磁帶保證歷史數(shù)據(jù)的可用性。
如果認(rèn)可而摩爾定律推導(dǎo)的這個(gè)趨勢,就必須審視它會對未來的系統(tǒng)架構(gòu)和軟件帶來何種的影響。預(yù)寫日志、日志檢查點(diǎn)、回滾和前滾、B樹索引等現(xiàn)有數(shù)據(jù)庫特性都是基于使用機(jī)械磁盤的假設(shè)。機(jī)械磁盤尋道時(shí)間長故隨機(jī)存取速度慢,這與SSD和內(nèi)存等高速隨機(jī)存取器有非常大的差別。為了適應(yīng)機(jī)械磁盤的特點(diǎn),數(shù)據(jù)庫管理系統(tǒng)(DBMS)利用了大量的代碼將隨機(jī)存取變成順序存取。比如日志,一個(gè)事務(wù)寫一次日志很自然,但是為了要順序存取,就要緩存一批日志再一次性寫入磁盤。這就又帶來了事務(wù)持久化的新問題,因此需要大量的代碼為之服務(wù)。B樹索引也是為磁盤順序存取優(yōu)化的,在SSD和內(nèi)存等隨機(jī)存取器中顯得完全沒有必要。
如果要使用高速且隨機(jī)存取的內(nèi)存作為主要存儲器,那么最好對整個(gè)數(shù)據(jù)庫的架構(gòu)進(jìn)行全新的設(shè)計(jì)。可以看到VoltDB和HANA正是這樣做的,拋棄了很多傳統(tǒng)的包袱,輕裝上陣。Oracle和DB2的歷史包袱太沉重,他們不可能拋棄自己的遺產(chǎn),只能采取優(yōu)化的方式,比如ORACLE12c中也推出了內(nèi)存列存儲,DB2新的BLU特性也允許激進(jìn)地使用內(nèi)存,但其底層的數(shù)據(jù)存儲,還是為機(jī)械磁盤來優(yōu)化的。
凱文.凱利說顛覆總是從邊緣開始,因?yàn)橹挥袙仐墏鹘y(tǒng)、獨(dú)辟蹊徑,才能發(fā)現(xiàn)新的技術(shù)范式,在數(shù)據(jù)庫領(lǐng)域也是如此??梢灶A(yù)測要不了幾年,內(nèi)存數(shù)據(jù)庫就會從事務(wù)處理系統(tǒng)開始全面取代磁盤數(shù)據(jù)庫的領(lǐng)先地位。很高興的是,我們看到聯(lián)想、華為、南大通用等國內(nèi)的軟件公司已經(jīng)認(rèn)識到這一點(diǎn),已經(jīng)在內(nèi)存數(shù)據(jù)庫方面進(jìn)行了頗多的探索,有的已經(jīng)有了相應(yīng)的產(chǎn)品。南大通用最近準(zhǔn)備籌資5000萬用于內(nèi)存數(shù)據(jù)庫產(chǎn)品的進(jìn)一步研發(fā)。
看到未來的趨勢,順應(yīng)潮流,擁抱變化的世界,這種方式的“去IOE”是彎道超車。這是《易經(jīng)》告訴我們的道理。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com