網(wǎng)站維護(hù)數(shù)據(jù)庫(kù)的架構(gòu)需求有哪些?

2021-10-29    分類: 網(wǎng)站建設(shè)

同往常一樣,你最好定義你的需求,特別是,把那些超出你的范圍從而成為別人的問(wèn)題的內(nèi)容寫(xiě)成文檔。如果這一步搞清楚了,你就幫了每個(gè)人的大忙。你對(duì)詳誰(shuí)應(yīng)該解決問(wèn)題決定得越快,則那個(gè)人為解決問(wèn)題而做的預(yù)算和計(jì)劃也就越快。所以,讓我們例建一個(gè)假想的Web應(yīng)用作為示例,非正式地把需求列出來(lái)。
我們虛構(gòu)的應(yīng)用將是每天24小時(shí)一直在線。在流量上將會(huì)有浪涌和波峰,隨著美國(guó)的東西海岸起床時(shí)間不同,每天會(huì)有兩次波峰。而且我們的波峰足夠高,從而能夠在平緩期進(jìn)行維護(hù)操作,但不能停機(jī),只能減少容量來(lái)做這些維護(hù)操作。停機(jī)會(huì)直接影響系統(tǒng)底線。將來(lái),我們會(huì)擴(kuò)展到歐洲和亞洲,從而停機(jī)就更不可行了。會(huì)有季節(jié)性的高流量,在某些流行網(wǎng)站的首頁(yè)也可能會(huì)提到我們,從而導(dǎo)致流量驟增。沒(méi)關(guān)系一一我們可以將功能降級(jí),而不是垮掉。

數(shù)據(jù)庫(kù)的讀操作將占95%,而寫(xiě)占5%。多數(shù)寫(xiě)操作都是單行的,會(huì)有一些復(fù)雜查詢。這些查詢會(huì)非常耗時(shí),為了提高效率,不得不把一些匯總預(yù)先計(jì)算出來(lái),或?qū)δ承?shù)據(jù)做非規(guī)范化處理,這將是一個(gè)非非常耗CPU的過(guò)程。我們將把這些耗時(shí)的分析工作的成本分推到整天,這樣一來(lái),所用的數(shù)據(jù)會(huì)稍微有些過(guò)時(shí)。有日時(shí)候使用這些過(guò)時(shí)的數(shù)據(jù)是沒(méi)問(wèn)題的,而有的時(shí)候,我們不得不在一天之內(nèi)對(duì)數(shù)據(jù)進(jìn)行逐步的增量更新。
數(shù)據(jù)庫(kù)模式的問(wèn)題還沒(méi)有解決;應(yīng)用還沒(méi)有成熟,正在快速開(kāi)發(fā)中,包括數(shù)據(jù)庫(kù)模式也在不斷變化。結(jié)果就是必須進(jìn)行在線部署。從而不得不在生產(chǎn)環(huán)境中運(yùn)行ALTERTABLE,作為更新數(shù)據(jù)庫(kù)模式的例行手段,而且還不能影響可用性。我們知道數(shù)據(jù)會(huì)越來(lái)越大,而ALTER花費(fèi)的時(shí)間也會(huì)越來(lái)越長(zhǎng),以至于長(zhǎng)到無(wú)法忍受。
持續(xù)增長(zhǎng)的負(fù)載會(huì)超過(guò)單臺(tái)服務(wù)器的能力。能走多遠(yuǎn)并不重要,因?yàn)橹挥腥齻€(gè)數(shù):零、1和多。無(wú)論如何,我們都不認(rèn)為應(yīng)用會(huì)增長(zhǎng)到互聯(lián)網(wǎng)的規(guī)模,所以我們會(huì)考慮幾臺(tái)到幾十臺(tái)之間的情況。
在一定范圍內(nèi)的數(shù)據(jù)丟失是可以接受的。如果一臺(tái)服務(wù)器消失了一段時(shí)間,將會(huì)損失一小筆錢,但將會(huì)無(wú)顏面對(duì)管理機(jī)構(gòu)。不管怎么說(shuō),我們還是強(qiáng)烈希望數(shù)據(jù)庫(kù)服務(wù)器是高可用的,要求一年的容機(jī)時(shí)間加起來(lái)不要超過(guò)一天。因?yàn)椋?分鐘的宕機(jī)時(shí)間比損失5分鐘的數(shù)據(jù)要昂貴得多。
為了災(zāi)難恢復(fù)的目的,我們要求數(shù)據(jù)庫(kù)在最壞情況下能夠恢復(fù)到昨天的數(shù)據(jù),而在多數(shù)情況下,我們當(dāng)然希望能夠恢復(fù)到剛才的數(shù)據(jù),使損失的數(shù)據(jù)不多于幾秒鐘。希望通常情況下恢復(fù)過(guò)程不要超過(guò)一小時(shí),而在最壞情況,如損失大量的數(shù)據(jù)或服務(wù)器,則希望恢復(fù)時(shí)間不多于一天。
團(tuán)隊(duì)對(duì)數(shù)據(jù)庫(kù)只有一般的能力,我們的團(tuán)隊(duì)實(shí)際上是RubyonRails的專家,所以高級(jí)的數(shù)據(jù)庫(kù)問(wèn)題還是需要外部的幫助。系統(tǒng)管理團(tuán)隊(duì)也非常優(yōu)秀,但同樣不太擅長(zhǎng)數(shù)據(jù)庫(kù)。
記住這些,我們來(lái)看看如何滿足這些需求。
易于成功的事情
開(kāi)始研究特定的架構(gòu)之前,我想指出一些需要計(jì)劃劃的事情,而不管最終的架構(gòu)是什么:
● 要做的第一件事是增加緩存層。memcached非常好用,使用memcached可以為數(shù)據(jù)庫(kù)減輕太多的負(fù)載,不用它簡(jiǎn)直太蠢了。
● 不要讓用戶產(chǎn)生異常情況,如有10000個(gè)好友,或者1000張.照片。對(duì)于你認(rèn)為成本昂貴的那些關(guān)鍵區(qū)域,要限制規(guī)模,不要允許無(wú)限制的增長(zhǎng),就可以將事情保持在合理的范圍內(nèi),而不會(huì)等到出現(xiàn)問(wèn)題時(shí),再向那些導(dǎo)致異常的人發(fā)火。防患于未然,就不會(huì)出現(xiàn)令人驚訝的事情,從而也就構(gòu)成了良好的用戶體驗(yàn)的一部分。
● 對(duì)待需求要小心,不要將自己的網(wǎng)站建設(shè)標(biāo)準(zhǔn)立得高于用戶的期望,不要為應(yīng)用構(gòu)建太昂貴的功能。顯示搜索結(jié)果的精確數(shù)量,以及精確的搜索結(jié)果頁(yè)面,就是一個(gè)經(jīng)典的錯(cuò)誤。Google不這樣做,所以你也不需要這樣做。

網(wǎng)站標(biāo)題:網(wǎng)站維護(hù)數(shù)據(jù)庫(kù)的架構(gòu)需求有哪些?
標(biāo)題路徑:http://www.bm7419.com/news/133492.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、品牌網(wǎng)站設(shè)計(jì)、App開(kāi)發(fā)、搜索引擎優(yōu)化、域名注冊(cè)、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司