广元煌褂旅行社

當(dāng)前位置:

java認(rèn)證考試基礎(chǔ)串講資料非關(guān)系型數(shù)據(jù)庫(kù)應(yīng)用實(shí)例

發(fā)表時(shí)間:2015/4/8 11:20:45 來源:互聯(lián)網(wǎng) 點(diǎn)擊關(guān)注微信:關(guān)注中大網(wǎng)校微信
關(guān)注公眾號(hào)

隨著互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,非關(guān)系型的數(shù)據(jù)庫(kù)現(xiàn)在成了一個(gè)極其熱門的新領(lǐng)域,非關(guān)系數(shù)據(jù)庫(kù)產(chǎn)品的發(fā)展非常迅速。而傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)在應(yīng)付web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類型的web2.0純動(dòng)態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問題,例如:

1、High performance——對(duì)數(shù)據(jù)庫(kù)高并發(fā)讀寫的需求

Web2.0網(wǎng)站要根據(jù)用戶個(gè)性化信息來實(shí)時(shí)生成動(dòng)態(tài)頁(yè)面和提供動(dòng)態(tài)信息,所以基本上無(wú)法使用動(dòng)態(tài)頁(yè)面靜態(tài)化技術(shù),因此數(shù)據(jù)庫(kù)并發(fā)負(fù)載非常高,往往要達(dá)到每秒上萬(wàn)次讀寫請(qǐng)求。關(guān)系數(shù)據(jù)庫(kù)應(yīng)付上萬(wàn)次SQL查詢還勉強(qiáng)頂?shù)米?,但是?yīng)付上萬(wàn)次SQL寫數(shù)據(jù)請(qǐng)求,硬盤IO就已經(jīng)無(wú)法承受了。其實(shí)對(duì)于普通的BBS網(wǎng)站,往往也存在對(duì)高并發(fā)寫請(qǐng)求的需求,例如像JavaEye網(wǎng)站的實(shí)時(shí)統(tǒng)計(jì)在線用戶狀態(tài),記錄熱門帖子的點(diǎn)擊次數(shù),投票計(jì)數(shù)等,因此這是一個(gè)相當(dāng)普遍的需求。

2、Huge Storage——對(duì)海量數(shù)據(jù)的高效率存儲(chǔ)和訪問的需求

類似Facebook,twitter,F(xiàn)riendfeed這樣的SNS網(wǎng)站,每天用戶產(chǎn)生海量的用戶動(dòng)態(tài),以Friendfeed為例,一個(gè)月就達(dá)到了2.5億條用戶動(dòng)態(tài),對(duì)于關(guān)系數(shù)據(jù)庫(kù)來說,在一張2.5億條記錄的表里面進(jìn)行SQL查詢,效率是極其低下乃至不可忍受的。再例如大型web網(wǎng)站的用戶登錄系統(tǒng),例如騰訊,盛大,動(dòng)輒數(shù)以億計(jì)的帳號(hào),關(guān)系數(shù)據(jù)庫(kù)也很難應(yīng)付。

3、High Scalability && High Availability——對(duì)數(shù)據(jù)庫(kù)的高可擴(kuò)展性和高可用性的需求

在基于web的架構(gòu)當(dāng)中,數(shù)據(jù)庫(kù)是最難進(jìn)行橫向擴(kuò)展的,當(dāng)一個(gè)應(yīng)用系統(tǒng)的用戶量和訪問量與日俱增的時(shí)候,你的數(shù)據(jù)庫(kù)卻沒有辦法像web server和app server那樣簡(jiǎn)單的通過添加更多的硬件和服務(wù)節(jié)點(diǎn)來擴(kuò)展性能和負(fù)載能力。對(duì)于很多需要提供24小時(shí)不間斷服務(wù)的網(wǎng)站來說,對(duì)數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行升級(jí)和擴(kuò)展是非常痛苦的事情,往往需要停機(jī)維護(hù)和數(shù)據(jù)遷移,為什么數(shù)據(jù)庫(kù)不能通過不斷的添加服務(wù)器節(jié)點(diǎn)來實(shí)現(xiàn)擴(kuò)展呢?

在上面提到的“三高”需求面前,關(guān)系數(shù)據(jù)庫(kù)遇到了難以克服的障礙,而對(duì)于web2.0網(wǎng)站來說,關(guān)系數(shù)據(jù)庫(kù)的很多主要特性卻往往無(wú)用武之地,例如:

1. 數(shù)據(jù)庫(kù)事務(wù)一致性需求

很多web實(shí)時(shí)系統(tǒng)并不要求嚴(yán)格的數(shù)據(jù)庫(kù)事務(wù),對(duì)讀一致性的要求很低,有些場(chǎng)合對(duì)寫一致性要求也不高。因此數(shù)據(jù)庫(kù)事務(wù)管理成了數(shù)據(jù)庫(kù)高負(fù)載下一個(gè)沉重的負(fù)擔(dān)。

2. 數(shù)據(jù)庫(kù)的寫實(shí)時(shí)性和讀實(shí)時(shí)性需求

對(duì)關(guān)系數(shù)據(jù)庫(kù)來說,插入一條數(shù)據(jù)之后立刻查詢,是肯定可以讀出來這條數(shù)據(jù)的,但是對(duì)于很多web應(yīng)用來說,并不要求這么高的實(shí)時(shí)性,比方說我(JavaEye的robbin)發(fā)一條消息之后,過幾秒乃至十幾秒之后,我的訂閱者才看到這條動(dòng)態(tài)是完全可以接受的。

3、對(duì)復(fù)雜的SQL查詢,特別是多表關(guān)聯(lián)查詢的需求

任何大數(shù)據(jù)量的web系統(tǒng),都非常忌諱多個(gè)大表的關(guān)聯(lián)查詢,以及復(fù)雜的數(shù)據(jù)分析類型的復(fù)雜SQL報(bào)表查詢,特別是SNS類型的網(wǎng)站,從需求以及產(chǎn)品設(shè)計(jì)角度,就避免了這種情況的產(chǎn)生。往往更多的只是單表的主鍵查詢,以及單表的簡(jiǎn)單條件分頁(yè)查詢,SQL的功能被極大的弱化了。

因此,關(guān)系數(shù)據(jù)庫(kù)在這些越來越多的應(yīng)用場(chǎng)景下顯得不那么合適了,為了解決這類問題的非關(guān)系數(shù)據(jù)庫(kù)應(yīng)運(yùn)而生,現(xiàn)在這兩年,各種各樣非關(guān)系數(shù)據(jù)庫(kù),特別是鍵值數(shù)據(jù)庫(kù)(Key-Value Store DB)風(fēng)起云涌,多得讓人眼花繚亂。前不久國(guó)外剛剛舉辦了NoSQL Conference,各路NoSQL數(shù)據(jù)庫(kù)紛紛亮相,加上未亮相但是名聲在外的,起碼有超過10個(gè)開源的NoSQLDB,例如:

Redis,Tokyo Cabinet,Cassandra,Voldemort,MongoDB,Dynomite,HBase,CouchDB,Hypertable, Riak,Tin, Flare, Lightcloud, KiokuDB,Scalaris, Kai, ThruDB, ......

這些NoSQL數(shù)據(jù)庫(kù),有的是用C/C++編寫的,有的是用Java編寫的,還有的是用Erlang編寫的,每個(gè)都有自己的獨(dú)到之處,看都看不過來了,我(robbin)也只能從中挑選一些比較有特色,看起來更有前景的產(chǎn)品學(xué)習(xí)和了解一下。

編輯推薦

java認(rèn)證考試基礎(chǔ)串講資料匯總

JAVA認(rèn)證考試報(bào)考指南 / 更多JAVA考試資料

(責(zé)任編輯:xy)

2頁(yè),當(dāng)前第1頁(yè)  第一頁(yè)  前一頁(yè)  下一頁(yè)
最近更新 考試動(dòng)態(tài) 更多>
东海县| 秭归县| 珲春市| 柳州市| 宁都县| 井冈山市| 垦利县| 新巴尔虎左旗| 宁安市| 伊宁市| 桃源县| 德化县| 沙坪坝区| 中牟县| 荔波县| 建昌县| 洛阳市| 安塞县| 威宁| 米易县| 阳曲县| 昭平县| 马山县| 拉孜县| 九龙县| 西峡县| 富阳市| 崇文区| 梓潼县| 宿州市| 陵川县| 文化| 东莞市| 济南市| 保山市| 枣阳市| 萝北县| 紫阳县| 石景山区| 光泽县| 兴宁市|