版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)自1970年,埃德加科德提出關(guān)系模型之后,關(guān)系數(shù)據(jù)庫(kù)便開始出現(xiàn),經(jīng)過 了 40 多年的演化,如今的關(guān)系型數(shù)據(jù)庫(kù)具備了強(qiáng)大的存儲(chǔ)、維護(hù)、查詢數(shù)據(jù)的 能力。但在關(guān)系數(shù)據(jù)庫(kù)日益強(qiáng)大的時(shí)候, 人們發(fā)現(xiàn),在這個(gè)信息爆炸的“大數(shù)據(jù)” 時(shí)代,關(guān)系型數(shù)據(jù)庫(kù)遇到了性能方面的瓶頸,面對(duì)一個(gè)表中上億條的數(shù)據(jù), SQL 語(yǔ)句在大數(shù)據(jù)的查詢方面效率欠佳。 我們應(yīng)該知道, 往往添加了越多的約束的技 術(shù),在一定程度上定會(huì)拖延其效率。在 1998 年, CarloStrozzi 提出 NOSQL 的概念, 指的是他開發(fā)的一個(gè)沒有 SQL 功能,輕量級(jí)的,開源的關(guān)系型數(shù)據(jù)庫(kù)。注意,這個(gè)定義跟我們現(xiàn)在
2、對(duì) NoSQL 的定義有很大的區(qū)別,它確確實(shí)實(shí)字如其名,指的就是“沒有SQL”的數(shù)據(jù)庫(kù)。 但是 NoSQL 的發(fā)展慢慢偏離了初衷, CarloStrozzi 也發(fā)覺,其實(shí)我們要的不是 nosql ,而應(yīng)該是 norelational ,也就是我們現(xiàn)在常說的非關(guān)系型數(shù)據(jù)庫(kù)了。 在關(guān)系型數(shù)據(jù)庫(kù)中, 導(dǎo)致性能欠佳的最主要因素是多表的關(guān)聯(lián)查詢, 以及復(fù)雜的 數(shù)據(jù)分析類型的復(fù)雜 SQL 報(bào)表查詢。為了保證數(shù)據(jù)庫(kù)的 ACID 特性,我們必須 盡量按照其要求的范式進(jìn)行設(shè)計(jì), 關(guān)系型數(shù)據(jù)庫(kù)中的表都是存儲(chǔ)一些格式化的數(shù) 據(jù)結(jié)構(gòu),每個(gè)元組字段的組成都一樣, 即使不是每個(gè)元組都需要所有的字段, 但 數(shù)據(jù)庫(kù)會(huì)為每個(gè)元
3、組分配所有的字段, 這樣的結(jié)構(gòu)可以便于表與表之間進(jìn)行連接 等操作,但從另一個(gè)角度來說它也是關(guān)系型數(shù)據(jù)庫(kù)性能瓶頸的一個(gè)因素。 非關(guān)系型數(shù)據(jù)庫(kù)提出另一種理念, 他以鍵值對(duì)存儲(chǔ), 且結(jié)構(gòu)不固定, 每一個(gè)元組 可以有不一樣的字段, 每個(gè)元組可以根據(jù)需要增加一些自己的鍵值對(duì), 這樣就不 會(huì)局限于固定的結(jié)構(gòu), 可以減少一些時(shí)間和空間的開銷。 使用這種方式, 用戶可 以根據(jù)需要去添加自己需要的字段, 這樣,為了獲取用戶的不同信息, 不需要像 關(guān)系型數(shù)據(jù)庫(kù)中,要對(duì)多表進(jìn)行關(guān)聯(lián)查詢。僅需要根據(jù) id 取出相應(yīng)的 value 就 可以完成查詢。但非關(guān)系型數(shù)據(jù)庫(kù)由于很少的約束,他也不能夠提供想 SQL 所 提供的
4、where 這種對(duì)于字段屬性值情況的查詢。并且難以體現(xiàn)設(shè)計(jì)的完整性。 他只適合存儲(chǔ)一些較為簡(jiǎn)單的數(shù)據(jù),對(duì)于需要進(jìn)行較復(fù)雜查詢的數(shù)據(jù), SQL 數(shù) 據(jù)庫(kù)顯得更為合適。目前出現(xiàn)的 NoSQL(NotonlySQL ,非關(guān)系型數(shù)據(jù)庫(kù) )有不下于 25 種,除了 Dynamo 、Bigtable 以外還有很多,比如 Amazon 的 SimpleDB 、微軟公司的 AzureTable 、 Facebook 使用的 Cassandra 、類 Bigtable 的 Hypertable 、 Hadoop 的 HBase、MongoDB、CouchDB、Redis 以及 Yahoo!的 PNUTS 等 等
5、。這些 NoSQL 各有特色,是基于不同應(yīng)用場(chǎng)景而開發(fā)的, 而其中以 MongoDB 和 Redis 最為被大家追捧。以下是 MongoDB 的一些情況:MongoDB 是基于文檔的存儲(chǔ)的(而非表),是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系 數(shù)據(jù)庫(kù)之間的產(chǎn)品, 是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富, 最像關(guān)系數(shù)據(jù)庫(kù)的。 他支 持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似 json 的 bjson 格式,因此可以存儲(chǔ)比較復(fù)雜的 數(shù)據(jù)類型。模式自由 (schema-free) ,意味著對(duì)于存儲(chǔ)在 MongoDB 數(shù)據(jù)庫(kù)中的 文件,我們不需要知道它的任何結(jié)構(gòu)定義。 如果需要的話, 你完全可以把不同結(jié) 構(gòu)的文件存儲(chǔ)在同一個(gè)數(shù)據(jù)庫(kù)里。 M
6、ongo 最大的特點(diǎn)是他支持的查詢語(yǔ)言非常 強(qiáng)大,其語(yǔ)法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù) 據(jù)庫(kù)單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引。Mongo主要解決的是海量數(shù)據(jù)的訪問效率問題。因?yàn)镸ongo主要是支持海量 數(shù)據(jù)存儲(chǔ)的,所以Mongo還自帶了一個(gè)出色的分布式文件系統(tǒng) GridFS,可以 支持海量的數(shù)據(jù)存儲(chǔ)。由于Mon go可以支持復(fù)雜的數(shù)據(jù)結(jié)構(gòu),而且?guī)в袕?qiáng)大的 數(shù)據(jù)查詢功能,因此非常受到歡迎。關(guān)系型數(shù)據(jù)庫(kù)的特點(diǎn)1關(guān)系型數(shù)據(jù)庫(kù)關(guān)系型數(shù)據(jù)庫(kù),是指采用了關(guān)系模型來組織數(shù)據(jù)的數(shù)據(jù)庫(kù)。簡(jiǎn)單來說,關(guān)系模型指的就是二維表格模型,而一個(gè)關(guān)系型數(shù)據(jù)庫(kù)就是由二維表及其之間的聯(lián)系所組
7、 成的一個(gè)數(shù)據(jù)組織。常見的關(guān)系型數(shù)據(jù)庫(kù)有Oracle、Mysql、sqlserver等等。2關(guān)系型數(shù)據(jù)庫(kù)瓶頸?高并發(fā)讀寫需求?網(wǎng)站的用戶并發(fā)性非常高,往往達(dá)到每秒上萬(wàn)次讀寫請(qǐng)求,對(duì)于傳統(tǒng)關(guān)系型數(shù)據(jù) 庫(kù)來說,硬盤I/O是一個(gè)很大的瓶頸?海量數(shù)據(jù)的高效率讀寫網(wǎng)站每天產(chǎn)生的數(shù)據(jù)量是巨大的,對(duì)于關(guān)系型數(shù)據(jù)庫(kù)來說,在一張包含海量數(shù)據(jù)的表中查詢,效率是非常低的?高擴(kuò)展性和可用性?在基于web的結(jié)構(gòu)當(dāng)中,數(shù)據(jù)庫(kù)是最難進(jìn)行橫向擴(kuò)展的,當(dāng)一個(gè)應(yīng)用系統(tǒng)的用 戶量和訪問量與日俱增的時(shí)候,數(shù)據(jù)庫(kù)卻沒有辦法像webserver和appserver那樣簡(jiǎn)單的通過添加更多的硬件和服務(wù)節(jié)點(diǎn)來擴(kuò)展性能和負(fù)載能力。對(duì)于很多需 要
8、提供24小時(shí)不間斷服務(wù)的網(wǎng)站來說,對(duì)數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行升級(jí)和擴(kuò)展是非常痛苦的事情,往往需要停機(jī)維護(hù)和數(shù)據(jù)遷移。?對(duì)網(wǎng)站來說,關(guān)系型數(shù)據(jù)庫(kù)的很多特性不再需要了:?事務(wù)一致性?關(guān)系型數(shù)據(jù)庫(kù)在對(duì)事物一致性的維護(hù)中有很大的開銷, 而現(xiàn)在很多系統(tǒng)對(duì)事物的讀寫一致性都不高?讀寫實(shí)時(shí)性?對(duì)關(guān)系數(shù)據(jù)庫(kù)來說,插入一條數(shù)據(jù)之后立刻查詢,是肯定可以讀出這條數(shù)據(jù)的,但是對(duì)于很多web應(yīng)用來說,并不要求這么高的實(shí)時(shí)性,比如發(fā)一條消息之后, 過幾秒乃至十幾秒之后才看到這條動(dòng)態(tài)是完全可以接受的?復(fù)雜SQL,特別是多表關(guān)聯(lián)查詢?任何大數(shù)據(jù)量的web系統(tǒng),都非常忌諱多個(gè)大表的關(guān)聯(lián)查詢,以及復(fù)雜的數(shù)據(jù)分析類型的復(fù)雜SQL報(bào)表查詢,特
9、別是SNS類型的網(wǎng)站,從需求以及產(chǎn)品階級(jí) 角度,就避免了這種情況的產(chǎn)生。往往更多的只是單表的主鍵查詢, 以及單表的 簡(jiǎn)單條件分頁(yè)查詢,SQL的功能極大的弱化了?在關(guān)系型數(shù)據(jù)庫(kù)中,導(dǎo)致性能欠佳的最主要原因是多表的關(guān)聯(lián)查詢,以及復(fù)雜的數(shù)據(jù)分析類型的復(fù)雜SQL報(bào)表查詢。為了保證數(shù)據(jù)庫(kù)的 ACID特性,我們必須 盡量按照其要求的范式進(jìn)行設(shè)計(jì),關(guān)系型數(shù)據(jù)庫(kù)中的表都是存儲(chǔ)一個(gè)格式化的數(shù) 據(jù)結(jié)構(gòu)。每個(gè)元組字段的組成都是一樣,即使不是每個(gè)元組都需要所有的字段,但數(shù)據(jù)庫(kù)會(huì)為每個(gè)元組分配所有的字段,這樣的結(jié)構(gòu)可以便于標(biāo)語(yǔ)表之間進(jìn)行鏈接等操作,但從另一個(gè)角度來說它也是關(guān)系型數(shù)據(jù)庫(kù)性能瓶頸的一個(gè)因素。非關(guān)系型數(shù)據(jù)庫(kù)(
10、NoSQL2009年初,JohanOskarsson舉辦了一場(chǎng)關(guān)于開源分布式數(shù)據(jù)庫(kù)的討論,EricEvans在這次討論中提出了 NoSQL 詞,用于指代那些非關(guān)系型的,分布 式的,且一般不保證遵循 ACID原則的數(shù)據(jù)存儲(chǔ)系統(tǒng)。EricEvans使用NoSQL 這個(gè)詞,并不是因?yàn)樽置嫔系摹皼]有 SQL”的意思,他只是覺得很多經(jīng)典的關(guān) 系型數(shù)據(jù)庫(kù)名字都叫“*SQL”,所以為了表示跟這些關(guān)系型數(shù)據(jù)庫(kù)在定位上的截 然不同,就是用了“ NoSQL “一詞。?注:數(shù)據(jù)庫(kù)事務(wù)必須具備 ACID特性,ACID是Atomic原子性,Consistency一致性,隔離性,Durability 持久性。?非關(guān)系型數(shù)
11、據(jù)庫(kù)提出另一種理念,例如,以鍵值對(duì)存儲(chǔ),且結(jié)構(gòu)不固定,每一個(gè) 元組可以有不一樣的字段,每個(gè)元組可以根據(jù)需要增加一些自己的鍵值對(duì),這樣就不會(huì)局限于固定的結(jié)構(gòu),可以減少一些時(shí)間和空間的開銷。 使用這種方式,用 戶可以根據(jù)需要去添加自己需要的字段,這樣,為了獲取用戶的不同信息,不需要像關(guān)系型數(shù)據(jù)庫(kù)中,要對(duì)多表進(jìn)行關(guān)聯(lián)查詢。僅需要根據(jù)id取出相應(yīng)的value 就可以完成查詢。但非關(guān)系型數(shù)據(jù)庫(kù)由于很少的約束,他也不能夠提供像SQL所提供的where這種對(duì)于字段屬性值情況的查詢。并且難以體現(xiàn)設(shè)計(jì)的完整性。 他只適合存儲(chǔ)一些較為簡(jiǎn)單的數(shù)據(jù),對(duì)于需要進(jìn)行較復(fù)雜查詢的數(shù)據(jù),SQL數(shù)據(jù)庫(kù)顯的更為合適。?關(guān)系型數(shù)據(jù)
12、庫(kù)與非關(guān)系型數(shù)據(jù)庫(kù)的區(qū)別?關(guān)系型數(shù)據(jù)庫(kù)的最大特點(diǎn)就是事務(wù)的一致性:傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)讀寫操作都是 事務(wù)的,具有ACID的特點(diǎn),這個(gè)特性使得關(guān)系型數(shù)據(jù)庫(kù)可以用于幾乎所有對(duì)一 致性有要求的系統(tǒng)中,如典型的銀行系統(tǒng)。?但是,在網(wǎng)頁(yè)應(yīng)用中,尤其是 SNS應(yīng)用中,一致性卻不是顯得那么重要,用戶 A看到的內(nèi)容和用戶B看到同一用戶C內(nèi)容更新不一致是可以容忍的,或者說, 兩個(gè)人看到同一好友的數(shù)據(jù)更新的時(shí)間差那么幾秒是可以容忍的,因此,關(guān)系型數(shù)據(jù)庫(kù)的最大特點(diǎn)在這里已經(jīng)無(wú)用武之地,起碼不是那么重要了。相反地,關(guān)系型數(shù)據(jù)庫(kù)為了維護(hù)一致性所付出的巨大代價(jià)就是其讀寫性能比較差,而像微博、 facebook這類SNS的應(yīng)
13、用,對(duì)并發(fā)讀寫能力要求極高,關(guān)系型數(shù)據(jù)庫(kù)已經(jīng)無(wú) 法應(yīng)付(在讀方面,傳統(tǒng)上為了克服關(guān)系型數(shù)據(jù)庫(kù)缺陷,提高性能,都是增加一級(jí)memcache 來靜態(tài)化網(wǎng)頁(yè),而在 SNS中,變化太快,memchache 已經(jīng)無(wú) 能為力了),因此,必須用新的一種數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)來代替關(guān)系數(shù)據(jù)庫(kù)。?關(guān)系數(shù)據(jù)庫(kù)的另一個(gè)特點(diǎn)就是其具有固定的表結(jié)構(gòu),因此,其擴(kuò)展性極差,而在SNS中,系統(tǒng)的升級(jí),功能的增加,往往意味著數(shù)據(jù)結(jié)構(gòu)巨大變動(dòng),這一點(diǎn)關(guān) 系型數(shù)據(jù)庫(kù)也難以應(yīng)付,需要新的結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)。?于是,非關(guān)系型數(shù)據(jù)庫(kù)應(yīng)運(yùn)而生,由于不可能用一種數(shù)據(jù)結(jié)構(gòu)化存儲(chǔ)應(yīng)付所有的 新的需求,因此,非關(guān)系型數(shù)據(jù)庫(kù)嚴(yán)格上不是一種數(shù)據(jù)庫(kù), 應(yīng)該是一種數(shù)據(jù)
14、結(jié)構(gòu) 化存儲(chǔ)方法的集合。必須強(qiáng)調(diào)的是,數(shù)據(jù)的持久存儲(chǔ),尤其是海量數(shù)據(jù)的持久存 儲(chǔ),還是需要一種關(guān)系數(shù)據(jù)庫(kù)。1.關(guān)系型數(shù)據(jù)庫(kù)關(guān)系型數(shù)據(jù)庫(kù),是指采用了關(guān)系模型來組織數(shù)據(jù)的數(shù)據(jù)庫(kù)。關(guān)系模型是在1970年由IBM的研究員博士首先提出的,在之后的幾十年中, 關(guān)系模型的概念得到了充分的發(fā)展并逐漸成為主流數(shù)據(jù)庫(kù)結(jié)構(gòu)的主流模型。簡(jiǎn)單來說,關(guān)系模型指的就是二維表格模型,而一個(gè)關(guān)系型數(shù)據(jù)庫(kù)就是由二維表 及其之間的聯(lián)系所組成的一個(gè)數(shù)據(jù)組織。關(guān)系模型中常用的概念:?關(guān)系:可以理解為一張二維表,每個(gè)關(guān)系都具有一個(gè)關(guān)系名,就是通常說 的表名?元組:可以理解為二維表中的一行,在數(shù)據(jù)庫(kù)中經(jīng)常被稱為記錄?屬性:可以理解為二維表
15、中的一列,在數(shù)據(jù)庫(kù)中經(jīng)常被稱為字段?域:屬性的取值范圍,也就是數(shù)據(jù)庫(kù)中某一列的取值限制?關(guān)鍵字:一組可以唯一標(biāo)識(shí)元組的屬性,數(shù)據(jù)庫(kù)中常稱為主鍵,由一個(gè)或 多個(gè)列組成?關(guān)系模式:指對(duì)關(guān)系的描述。其格式為:關(guān)系名(屬性1,屬性2,屬 性N),在數(shù)據(jù)庫(kù)中成為表結(jié)構(gòu)關(guān)系型數(shù)據(jù)庫(kù)的優(yōu)點(diǎn):?容易理解:二維表結(jié)構(gòu)是非常貼近邏輯世界的一個(gè)概念,關(guān)系模型相對(duì)網(wǎng)狀、層次等其他模型來說更容易理解?使用方便:通用的SQL語(yǔ)言使得操作關(guān)系型數(shù)據(jù)庫(kù)非常方便?易于維護(hù):豐富的完整性(實(shí)體完整性、參照完整性和用戶定義的完整性 ) 大大減低了數(shù)據(jù)冗余和數(shù)據(jù)不一致的概率2.關(guān)系型數(shù)據(jù)庫(kù)瓶頸?高并發(fā)讀寫需求網(wǎng)站的用戶并發(fā)性非常高,
16、往往達(dá)到每秒上萬(wàn)次讀寫請(qǐng)求,對(duì)于傳統(tǒng)關(guān)系型數(shù)據(jù) 庫(kù)來說,硬盤I/O是一個(gè)很大的瓶頸?海量數(shù)據(jù)的高效率讀寫網(wǎng)站每天產(chǎn)生的數(shù)據(jù)量是巨大的,對(duì)于關(guān)系型數(shù)據(jù)庫(kù)來說,在一張包含海量數(shù)據(jù) 的表中查詢,效率是非常低的?高擴(kuò)展性和可用性在基于web的結(jié)構(gòu)當(dāng)中,數(shù)據(jù)庫(kù)是最難進(jìn)行橫向擴(kuò)展的,當(dāng)一個(gè)應(yīng)用系統(tǒng)的用 戶量和訪問量與日俱增的時(shí)候,數(shù)據(jù)庫(kù)卻沒有辦法像webserver和appserver那樣簡(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ù)遷移。對(duì)網(wǎng)站來說,關(guān)系型數(shù)據(jù)庫(kù)的很多特性不再需要了
17、:? 事務(wù)一致性關(guān)系型數(shù)據(jù)庫(kù)在對(duì)事物一致性的維護(hù)中有很大的開銷,而現(xiàn)在很多系統(tǒng)對(duì)事物的讀寫一致性都不高?讀寫實(shí)時(shí)性對(duì)關(guān)系數(shù)據(jù)庫(kù)來說,插入一條數(shù)據(jù)之后立刻查詢,是肯定可以讀出這條數(shù)據(jù)的, 但是對(duì)于很多web應(yīng)用來說,并不要求這么高的實(shí)時(shí)性,比如發(fā)一條消息之后, 過幾秒乃至十幾秒之后才看到這條動(dòng)態(tài)是完全可以接受的?復(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)品階級(jí) 角度,就避免了這種情況的產(chǎn)生。往往更多的只是單表的主鍵查詢, 以及單表的 簡(jiǎn)單條件分頁(yè)查詢,SQL的功能極大的
18、弱化了在關(guān)系型數(shù)據(jù)庫(kù)中,導(dǎo)致性能欠佳的最主要原因是多表的關(guān)聯(lián)查詢,以及復(fù)雜的數(shù)據(jù)分析類型的復(fù)雜SQL報(bào)表查詢。為了保證數(shù)據(jù)庫(kù)的 ACID特性,我們必須 盡量按照其要求的范式進(jìn)行設(shè)計(jì),關(guān)系型數(shù)據(jù)庫(kù)中的表都是存儲(chǔ)一個(gè)格式化的數(shù) 據(jù)結(jié)構(gòu)。每個(gè)元組字段的組成都是一樣,即使不是每個(gè)元組都需要所有的字段, 但數(shù)據(jù)庫(kù)會(huì)為每個(gè)元組分配所有的字段,這樣的結(jié)構(gòu)可以便于標(biāo)語(yǔ)表之間進(jìn)行鏈 接等操作,但從另一個(gè)角度來說它也是關(guān)系型數(shù)據(jù)庫(kù)性能瓶頸的一個(gè)因素。NoSQL 一詞首先是CarloStrozzi在1998年提出來的,指的是他開發(fā)的一個(gè)沒 有SQL功能,輕量級(jí)的,開源的關(guān)系型數(shù)據(jù)庫(kù)。這個(gè)定義跟我們現(xiàn)在對(duì)NoSQL
19、的定義有很大的區(qū)別,它確確實(shí)實(shí)字如其名,指的就是“沒有SQL”的數(shù)據(jù)庫(kù)。 但是NoSQL的發(fā)展慢慢偏離了初衷,我們要的不是“ nosql ”,而是“n orelatio nal ”,也就是我們現(xiàn)在常說的非關(guān)系型數(shù)據(jù)庫(kù)了。2009年初,JohanOskarsson舉辦了一場(chǎng)關(guān)于開源分布式數(shù)據(jù)庫(kù)的討論,EricEvans在這次討論中再次提出了 NoSQL 詞,用于指代那些非關(guān)系型的, 分布式的,且一般不保證遵循 ACID原則的數(shù)據(jù)存儲(chǔ)系統(tǒng)。EricEvans使用 NoSQL這個(gè)詞,并不是因?yàn)樽置嫔系摹皼]有 SQL”的意思,他只是覺得很多經(jīng) 典的關(guān)系型數(shù)據(jù)庫(kù)名字都叫“*SQL ”,所以為了表示跟這些
20、關(guān)系型數(shù)據(jù)庫(kù)在定位 上的截然不同,就是用了“ NoSQL “一詞 注:數(shù)據(jù)庫(kù)事務(wù)必須具備 ACID特性,ACID是Atomic原子性,Consistency 一致性,Isolation 隔離性,Durability 持久性。非關(guān)系型數(shù)據(jù)庫(kù)提出另一種理念,例如,以鍵值對(duì)存儲(chǔ),且結(jié)構(gòu)不固定,每一個(gè) 元組可以有不一樣的字段,每個(gè)元組可以根據(jù)需要增加一些自己的鍵值對(duì),這樣就不會(huì)局限于固定的結(jié)構(gòu),可以減少一些時(shí)間和空間的開銷。 使用這種方式,用 戶可以根據(jù)需要去添加自己需要的字段,這樣,為了獲取用戶的不同信息,不需要像關(guān)系型數(shù)據(jù)庫(kù)中,要對(duì)多表進(jìn)行關(guān)聯(lián)查詢。僅需要根據(jù)id取出相應(yīng)的value 就可以完成查
21、詢。但非關(guān)系型數(shù)據(jù)庫(kù)由于很少的約束,他也不能夠提供像SQL所提供的where這種對(duì)于字段屬性值情況的查詢。并且難以體現(xiàn)設(shè)計(jì)的完整性。 他只適合存儲(chǔ)一些較為簡(jiǎn)單的數(shù)據(jù),對(duì)于需要進(jìn)行較復(fù)雜查詢的數(shù)據(jù),SQL數(shù)據(jù)庫(kù)顯的更為合適。4.關(guān)系型數(shù)據(jù)庫(kù).非關(guān)系型數(shù)據(jù)庫(kù)關(guān)系型數(shù)據(jù)庫(kù)的最大特點(diǎn)就是事務(wù)的一致性:傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)讀寫操作都是 事務(wù)的,具有ACID的特點(diǎn),這個(gè)特性使得關(guān)系型數(shù)據(jù)庫(kù)可以用于幾乎所有對(duì)一 致性有要求的系統(tǒng)中,如典型的銀行系統(tǒng)。但是,在網(wǎng)頁(yè)應(yīng)用中,尤其是 SNS應(yīng)用中,一致性卻不是顯得那么重要,用戶 A看到的內(nèi)容和用戶B看到同一用戶C內(nèi)容更新不一致是可以容忍的,或者說, 兩個(gè)人看到同一好友的數(shù)據(jù)更新的時(shí)間差那么幾秒是可以容忍的,因此,關(guān)系型數(shù)據(jù)庫(kù)的最大特點(diǎn)在這里已經(jīng)無(wú)用武之地,起碼不是那么重要了。相反地,關(guān)系型數(shù)據(jù)庫(kù)為了維護(hù)一致性所付出的巨大代價(jià)就是其讀寫性能比較差, 而像微博、facebook這類SNS的應(yīng)用,對(duì)并發(fā)讀寫能力要求極高,關(guān)系型數(shù) 據(jù)庫(kù)已經(jīng)無(wú)法應(yīng)付(在讀方面,傳統(tǒng)上為了克服關(guān)系型數(shù)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年汽車銷售合同擔(dān)保服務(wù)模板附車輛改裝服務(wù)3篇
- 2024年短期公租房租賃合同
- 崗位職責(zé)表課程設(shè)計(jì)
- 2024幼兒園發(fā)展規(guī)劃(35篇)
- 基于機(jī)器學(xué)習(xí)的古代繪畫修復(fù)與復(fù)原技術(shù)研究
- 2024年?duì)I銷工作計(jì)劃(59篇)
- 沼氣池儲(chǔ)氣罐課程設(shè)計(jì)
- 線描西蘭花課程設(shè)計(jì)
- 英漢互譯系統(tǒng)的課程設(shè)計(jì)
- 物流行業(yè)運(yùn)輸司機(jī)工作總結(jié)
- (八省聯(lián)考)河南省2025年高考綜合改革適應(yīng)性演練 生物試卷(含答案)
- 人工智能銷售工作總結(jié)
- 2025年中小學(xué)春節(jié)安全教育主題班會(huì)課件
- 工商注冊(cè)租房合同范例
- 2023-2024學(xué)年廣東省深圳市羅湖區(qū)八年級(jí)上學(xué)期期末生物試題
- 【9物(北師)期末】阜陽(yáng)市臨泉縣2023-2024學(xué)年九年級(jí)上學(xué)期期末考試物理試題
- 2025年醫(yī)院保衛(wèi)科工作總結(jié)及2025年工作計(jì)劃
- 班會(huì)課件高中
- 部編版一年級(jí)上冊(cè)語(yǔ)文第一單元-作業(yè)設(shè)計(jì)
- 安全生產(chǎn)泄漏課件
- 陜西省西安市高新第一中學(xué)2023-2024學(xué)年八年級(jí)上學(xué)期期末歷史試題
評(píng)論
0/150
提交評(píng)論