關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫的選擇.doc

關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫的選擇.doc

ID:57724946

大小:14.00 KB

頁數(shù):2頁

時(shí)間:2020-09-02

關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫的選擇.doc_第1頁
關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫的選擇.doc_第2頁
資源描述:

《關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫的選擇.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、從關(guān)系型數(shù)據(jù)庫到非關(guān)系型數(shù)據(jù)庫  自1970年,埃德加·科德提出關(guān)系模型之后,關(guān)系數(shù)據(jù)庫便開始出現(xiàn),經(jīng)過了40多年的演化,如今的關(guān)系型數(shù)據(jù)庫具備了強(qiáng)大的存儲、維護(hù)、查詢數(shù)據(jù)的能力。但在關(guān)系數(shù)據(jù)庫日益強(qiáng)大的時(shí)候,人們發(fā)現(xiàn),在這個(gè)信息爆炸的“大數(shù)據(jù)”時(shí)代,關(guān)系型數(shù)據(jù)庫遇到了性能方面的瓶頸,面對一個(gè)表中上億條的數(shù)據(jù),SQL語句在大數(shù)據(jù)的查詢方面效率欠佳。我們應(yīng)該知道,往往添加了越多的約束的技術(shù),在一定程度上定會拖延其效率。??????在1998年,CarloStrozzi提出NOSQL的概念,指的是他開發(fā)的一個(gè)沒有SQL功能,輕量級的,開源的關(guān)系型數(shù)

2、據(jù)庫。注意,這個(gè)定義跟我們現(xiàn)在對NoSQL的定義有很大的區(qū)別,它確確實(shí)實(shí)字如其名,指的就是“沒有SQL”的數(shù)據(jù)庫。但是NoSQL的發(fā)展慢慢偏離了初衷,CarloStrozzi也發(fā)覺,其實(shí)我們要的不是"nosql",而應(yīng)該是"norelational",也就是我們現(xiàn)在常說的非關(guān)系型數(shù)據(jù)庫了。???????在關(guān)系型數(shù)據(jù)庫中,導(dǎo)致性能欠佳的最主要因素是多表的關(guān)聯(lián)查詢,以及復(fù)雜的數(shù)據(jù)分析類型的復(fù)雜SQL報(bào)表查詢。為了保證數(shù)據(jù)庫的ACID特性,我們必須盡量按照其要求的范式進(jìn)行設(shè)計(jì),關(guān)系型數(shù)據(jù)庫中的表都是存儲一些格式化的數(shù)據(jù)結(jié)構(gòu),每個(gè)元組字段的組成都一樣,

3、即使不是每個(gè)元組都需要所有的字段,但數(shù)據(jù)庫會為每個(gè)元組分配所有的字段,這樣的結(jié)構(gòu)可以便于表與表之間進(jìn)行連接等操作,但從另一個(gè)角度來說它也是關(guān)系型數(shù)據(jù)庫性能瓶頸的一個(gè)因素。???????非關(guān)系型數(shù)據(jù)庫提出另一種理念,他以鍵值對存儲,且結(jié)構(gòu)不固定,每一個(gè)元組可以有不一樣的字段,每個(gè)元組可以根據(jù)需要增加一些自己的鍵值對,這樣就不會局限于固定的結(jié)構(gòu),可以減少一些時(shí)間和空間的開銷。使用這種方式,用戶可以根據(jù)需要去添加自己需要的字段,這樣,為了獲取用戶的不同信息,不需要像關(guān)系型數(shù)據(jù)庫中,要對多表進(jìn)行關(guān)聯(lián)查詢。僅需要根據(jù)id取出相應(yīng)的value就可以完成查詢

4、。但非關(guān)系型數(shù)據(jù)庫由于很少的約束,他也不能夠提供想SQL所提供的where這種對于字段屬性值情況的查詢。并且難以體現(xiàn)設(shè)計(jì)的完整性。他只適合存儲一些較為簡單的數(shù)據(jù),對于需要進(jìn)行較復(fù)雜查詢的數(shù)據(jù),SQL數(shù)據(jù)庫顯得更為合適。??????目前出現(xiàn)的NoSQL(NotonlySQL,非關(guān)系型數(shù)據(jù)庫)有不下于25種,除了Dynamo、Bigtable以外還有很多,比如Amazon的SimpleDB、微軟公司的AzureTable、Facebook使用的Cassandra、類Bigtable的Hypertable、Hadoop的HBase、MongoDB、C

5、ouchDB、Redis以及Yahoo!的PNUTS等等。這些NoSQL各有特色,是基于不同應(yīng)用場景而開發(fā)的,而其中以MongoDB和Redis最為被大家追捧。??????以下是MongoDB的一些情況:  MongoDB是基于文檔的存儲的(而非表),是一個(gè)介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bjson格式,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型。模式自由(schema-free),意味著對于存儲在MongoDB數(shù)據(jù)庫中的文件,我們不需要知道它的任何結(jié)構(gòu)定義。

6、如果需要的話,你完全可以把不同結(jié)構(gòu)的文件存儲在同一個(gè)數(shù)據(jù)庫里。Mongo最大的特點(diǎn)是他支持的查詢語言非常強(qiáng)大,其語法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。??????Mongo主要解決的是海量數(shù)據(jù)的訪問效率問題。因?yàn)镸ongo主要是支持海量數(shù)據(jù)存儲的,所以Mongo還自帶了一個(gè)出色的分布式文件系統(tǒng)GridFS,可以支持海量的數(shù)據(jù)存儲。由于Mongo可以支持復(fù)雜的數(shù)據(jù)結(jié)構(gòu),而且?guī)в袕?qiáng)大的數(shù)據(jù)查詢功能,因此非常受到歡迎。

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時(shí)可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。