AWS部署數(shù)據(jù)庫(kù):監(jiān)控和管理誰(shuí)負(fù)責(zé)
大多數(shù)的現(xiàn)代應(yīng)用都要求使用數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)的積聚、查詢和管理。在AWS頂部部署一個(gè)數(shù)據(jù)庫(kù)要求我們具有監(jiān)控和管理的功能,從而能夠更容易地?cái)U(kuò)展應(yīng)用程序、減少故障帶來(lái)的負(fù)面影響以及降低成本。
在提升其核心數(shù)據(jù)庫(kù)能力、自動(dòng)化管理以及與之相關(guān)的監(jiān)控功能等方面,AWS已經(jīng)做得相當(dāng)好了。與此同時(shí),AWS數(shù)據(jù)庫(kù)服務(wù)的競(jìng)爭(zhēng)對(duì)手們也正在改進(jìn)它們的管理功能。企業(yè)可能希望更仔細(xì)地在AWS上可用的原廠和第三方數(shù)據(jù)庫(kù)服務(wù)的功能和管理之間進(jìn)行權(quán)衡比較。
了解系統(tǒng)需求
在軟件開(kāi)發(fā)團(tuán)隊(duì)開(kāi)始開(kāi)發(fā)之前,認(rèn)真考慮應(yīng)用的需求是非常非常重要的一項(xiàng)工作,Scalr的創(chuàng)始人兼CEO Sebastian Stadil說(shuō)。相對(duì)而言,在開(kāi)始真正開(kāi)發(fā)工作之前進(jìn)行架構(gòu)變更是比較容易的。雖然進(jìn)行系統(tǒng)規(guī)模評(píng)估總是一項(xiàng)困難的工作,但是評(píng)估所需的一致性保證則是較為簡(jiǎn)單的。
例如,Netflix公司使用AWS來(lái)托管其在Apache Cassandra數(shù)據(jù)庫(kù)中的大部分?jǐn)?shù)據(jù)。就業(yè)務(wù)內(nèi)容來(lái)說(shuō),Netflix公司會(huì)認(rèn)為在線(可用性)要比記得上一次所觀看視頻的存儲(chǔ)位置(一致性)更重要。
企業(yè)需要思考可用性和可擴(kuò)展性是否是最重要的考慮因素。很多企業(yè)在NoSQL平臺(tái)上運(yùn)行專(zhuān)為可用性進(jìn)行優(yōu)化的應(yīng)用程序,這需要為確保一致性而進(jìn)行調(diào)整。對(duì)于這些類(lèi)型的應(yīng)用程序來(lái)說(shuō),更好的一個(gè)方法就是使用一個(gè)諸如PostgreSQL這樣的傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù),因?yàn)檫@種類(lèi)型的數(shù)據(jù)庫(kù)能夠更加有效地提供企業(yè)所需的一致性。
相反,很多企業(yè)犯下了這樣一個(gè)錯(cuò)誤,即使用一個(gè)能夠提供一致性但不具有高可用性的事務(wù)關(guān)系數(shù)據(jù)庫(kù),例如一個(gè)推薦系統(tǒng)應(yīng)用程序。在這些情況下,企業(yè)***從一開(kāi)始就使用諸如Cassandra這樣的數(shù)據(jù)庫(kù)。
本地化
另一個(gè)好的做法就是考慮使用本地AWS服務(wù)以取代傳統(tǒng)的數(shù)據(jù)庫(kù)架構(gòu)。Appirio的工程部總監(jiān)Dayal Gaitonde表示,當(dāng)開(kāi)發(fā)人員把應(yīng)用程序從傳統(tǒng)環(huán)境遷移至AWS時(shí),他們一般都會(huì)建立起數(shù)據(jù)庫(kù)服務(wù)器和集群。
亞馬遜的RDS為用戶提供了把數(shù)據(jù)庫(kù)當(dāng)作托管服務(wù)使用的功能,這也就為MySQL、PostgreSQL、Oracle以及微軟的SQL服務(wù)器提供了一個(gè)不錯(cuò)的替代選擇,Gaitonde說(shuō)。這是因?yàn)镽DS包括了大量可用于更新升級(jí)、打補(bǔ)丁以及故障檢測(cè)的監(jiān)控與管理功能。但是,這并不會(huì)剝奪數(shù)據(jù)庫(kù)管理員的所有職責(zé)。他說(shuō),企業(yè)仍然需要配置備份、確定數(shù)據(jù)庫(kù)需求以及指定諸如內(nèi)存和存儲(chǔ)這樣的資源。
AWS確實(shí)包括了大量的數(shù)據(jù)庫(kù)服務(wù)以及內(nèi)置的管理和監(jiān)控功能,如SimpleDB和DynamoDB。這些以可擴(kuò)展方式提供的服務(wù)是相對(duì)微不足道的,它們可減少對(duì)專(zhuān)用服務(wù)的需求。但是,某家NoSQL數(shù)據(jù)庫(kù)供應(yīng)商的產(chǎn)品總監(jiān)Kelly Stirman指出,其它的NoSQL數(shù)據(jù)庫(kù)更傾向于為眾多用例提供更豐富的功能集,這也正是它們?cè)絹?lái)越受歡迎的原因。
隨著AWS改進(jìn)它的基本功能,這一狀況有可能會(huì)發(fā)生變化。例如,AWS剛剛在DynamoDB基礎(chǔ)上增加了對(duì)JSON數(shù)據(jù)模式的支持,這一直都是諸如MogoDB這樣替代產(chǎn)品引人注目的不同之處之一。但是此刻,在文檔大小、對(duì)文本搜索功能和地理空間功能等方面,AWS服務(wù)比第三方的同類(lèi)型產(chǎn)品有著更為嚴(yán)格的限制,Stirman說(shuō)。
可擴(kuò)展性和功能之間的平衡
第三方NoSQL數(shù)據(jù)庫(kù)(如MongoDB)所帶來(lái)的主要挑戰(zhàn)之一就是在配置新實(shí)例、更新軟件或者擴(kuò)展規(guī)模方面的難度。例如,配置一個(gè)12臺(tái)服務(wù)器的MongoDB集群通常需要150個(gè)步驟。而近期加入到MongoDB的MMS的自動(dòng)化功能就能夠把這一繁瑣的手工操作簡(jiǎn)化至只需若干次的鼠標(biāo)點(diǎn)擊操作。“通過(guò)使用MMS,你就可以在幾分鐘內(nèi)完成這一工作而不是在幾個(gè)小時(shí)內(nèi),同時(shí)不需要了解它內(nèi)部工作的詳細(xì)信息,”Stirman說(shuō)。
一家使用AWS服務(wù)提供互聯(lián)網(wǎng)廣告管理服務(wù)的供應(yīng)商Decisive使用MMS就能夠簡(jiǎn)化自動(dòng)化部署和擴(kuò)展新MongoDB實(shí)例的工作,也就是使用一個(gè)新的API來(lái)創(chuàng)建和優(yōu)化移動(dòng)廣告活動(dòng)。Decisive的CTO Ryan Witt表示,他們公司選擇MongoDB是因?yàn)閿?shù)據(jù)模型的靈活性。MongoDB使針對(duì)某一主題收集各種各樣的數(shù)據(jù)成為可能,例如觀看廣告的用戶的數(shù)量與類(lèi)型,以及他們的點(diǎn)擊率。
雖然AWS為運(yùn)行在其服務(wù)平臺(tái)上的數(shù)據(jù)庫(kù)應(yīng)用提供了一些基本的監(jiān)控和管理功能,但是對(duì)于大多數(shù)的應(yīng)用需求來(lái)說(shuō),它所提供信息的詳細(xì)程度還不夠,Witt說(shuō)。MMS可以讓Decisive測(cè)量硬盤(pán)I/O流量以及在客戶端上的延遲。MMS還可以幫助他們對(duì)數(shù)據(jù)庫(kù)集群的運(yùn)行狀態(tài)進(jìn)行評(píng)估,當(dāng)發(fā)生問(wèn)題時(shí),這個(gè)功能就讓故障診斷變得更為簡(jiǎn)單。由于讀寫(xiě)操作負(fù)載變得更高,MMS會(huì)報(bào)告這些操作發(fā)生的位置,并提供了關(guān)于如何擴(kuò)展系統(tǒng)以解決這些問(wèn)題的***方法指導(dǎo)。
同時(shí),對(duì)于像數(shù)據(jù)倉(cāng)庫(kù)這樣眾多的用例需求來(lái)說(shuō),諸如Redshift這樣的AWS數(shù)據(jù)庫(kù)服務(wù)是足夠滿足和具有成本效益的。“對(duì)于企業(yè)分析這樣某些特殊類(lèi)型的工作來(lái)說(shuō),Redshift表現(xiàn)優(yōu)異,”Witt說(shuō)。“我們將經(jīng)常地把事件保存在MongoDB中,一旦我們不再需要保存這一數(shù)據(jù),那么我們會(huì)將其移動(dòng)至Redshift。但是,你往往會(huì)在靈活性方面付出代價(jià)。”
本文出自:http://www.searchcloudcomputing.com.cn/showcontent_86566.htm