AWS發(fā)布云關(guān)系型數(shù)據(jù)庫Aurora 六問技術(shù)細(xì)節(jié)
亞馬遜發(fā)布了Aurora系統(tǒng),并允諾其會有許多引人注目的特性。讓我們深入了解一下Aurora系統(tǒng),并探索一下其分支結(jié)構(gòu)。
結(jié)構(gòu):
Aurora的整體設(shè)計(jì)是這樣的,利用一個master節(jié)點(diǎn)提供寫服務(wù),Slave節(jié)點(diǎn)展開在master節(jié)點(diǎn)周圍,用于讀,,這聽起來像MySQL-讀操作是可擴(kuò)展的。亞馬遜還撰寫了很多關(guān)于Aurora存儲功能的說明,但是關(guān)于其結(jié)構(gòu)細(xì)節(jié)的內(nèi)容卻少的可憐。也許他們將使用了SSDs的AWS DynamoDB作為對數(shù)據(jù)引擎透明的后端存儲。因?yàn)閿U(kuò)展讀操作需要用到AWS基礎(chǔ)設(shè)施中的共享磁盤,所以Aurora只能工作在AWS上。
擴(kuò)展:
通過允許15副本(Slave讀操作節(jié)點(diǎn)),Aurora在多種工作負(fù)載情況都具有良好的可擴(kuò)展性。然而,對于寫操作的擴(kuò)展細(xì)節(jié)是不明確的。最終系統(tǒng)性能會受到主節(jié)點(diǎn)寫操作性能的制約。這里還沒有提及內(nèi)存中寫入的處理,因此寫入操作將限制于存儲基礎(chǔ)架構(gòu),其通常建議使用SSD,但橫跨多個Availability Groups,又回到那個延遲的問題。
可用性:
亞馬遜承諾同時提供多個“ 副本 ”(Slave讀操作節(jié)點(diǎn))和“基于恢復(fù)時間點(diǎn)的增量備份。” 但是,沒有規(guī)定副本推送至寫操作Master節(jié)點(diǎn)的延遲; 所以,如果丟失了寫操作Master節(jié)點(diǎn),將會產(chǎn)生一個(應(yīng)用程序)的延遲,之后才能繼續(xù)寫操作。相應(yīng)地,基于時間點(diǎn)的恢復(fù)也有顯著延時:“......重建數(shù)據(jù)庫到你保存的任意時刻直到***5分鐘前。“因此,如果您的實(shí)例掛掉,所有***五分鐘的事務(wù)都將丟失?Aurora試圖通過將故障轉(zhuǎn)移到其他副本,以緩解這種巨大的延時,即“Reserved Instance” “熱插拔”硬件已經(jīng)在云技術(shù)中出現(xiàn)了!
復(fù)制:
延遲是一個有趣的問題。亞馬遜已經(jīng)表示,他們的復(fù)制是異步的。這并不奇怪,因?yàn)槿绻贿@么做,他們將在Master節(jié)點(diǎn)上看到巨大的寫入延遲。他們聲稱復(fù)制是毫秒級的-但是具體是如何處理的并不為人所知。如果DynamoDB對他們來說是一個共享的磁盤存儲,他們是如何處理Slave節(jié)點(diǎn)上緩存一致性的?這是另一個還未解決的有趣問題。
性能:
亞馬遜承諾“Aurora性能是同等硬件條件下MySQL V5.6速度的五倍。”這聽起來十分不錯,但我們真的能看到實(shí)際的數(shù)字么?在特定平臺運(yùn)行測試的細(xì)節(jié)呢?大家都知道“可達(dá)到”是有一點(diǎn)回旋余地的。不幸的是,目前,Aurora是“有限預(yù)覽,”所以我們都必須等待。
事務(wù)延遲:
如果需要多個“規(guī)定數(shù)量”的寫操作和讀操作(Slave節(jié)點(diǎn))保持同步,Slave節(jié)點(diǎn)完全同步的延遲是多少?例如,如果應(yīng)用程序是從Slave節(jié)點(diǎn)副本讀取,然后Master節(jié)點(diǎn)被更新,這次事務(wù)是如何完成的?顧客添加一個電子商務(wù)網(wǎng)站上某個商品到購物車,一旦他們查詢其購物車(例如,在Slave讀操作節(jié)點(diǎn)上),他們可以選擇更改所購商品數(shù)量或顏色。如果此時有customer2剛剛購買了某一個顏色的全部商品,customer1會話中是否會反映出***的可用數(shù)量?或者應(yīng)用程序有個機(jī)制來處理此類問題。這些是電子商務(wù)網(wǎng)站部署要解決的關(guān)鍵問題。
總體而言,亞馬遜的Aurora發(fā)布時給出了很多的承諾,比如“速度與高端數(shù)據(jù)庫的可靠性,”但對于系統(tǒng)內(nèi)部細(xì)節(jié)描述不多。具體來說,可能出現(xiàn)的各種延遲是否會影響到事務(wù)并發(fā)和應(yīng)用程序的可用性?作為參考,NoSQL數(shù)據(jù)庫可以提供驚人的速度和高可用性; 他們只需要'丟掉'事務(wù)支持,就能做到這一點(diǎn)。
Aurora是采用SQL語法的加強(qiáng)版NoSQL數(shù)據(jù)庫引擎?或者它是一個具有完全ACID屬性、兼容MPP事務(wù)和MVCC功能的NewSQL數(shù)據(jù)庫引擎?
只有時間才能給我們答案,但至少可以肯定一點(diǎn),那就是ClustrixDB是一個完全對ACID兼容,支持MVCC功能的數(shù)據(jù)庫,在云計(jì)算的AWS,Rackspace和其他數(shù)百個全球?qū)嵗弦呀?jīng)部署成功,每月處理萬億級的事務(wù)。