多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > 互聯(lián)網(wǎng) > 第一部分 基礎(chǔ)篇 第一章 走進(jìn)MongoDB

第一部分 基礎(chǔ)篇 第一章 走進(jìn)MongoDB

來(lái)源:程序員人生   發(fā)布時(shí)間:2015-01-05 08:01:14 閱讀次數(shù):2474次

聲明:該文章主要來(lái)自《MongoDB實(shí)戰(zhàn)》1書(shū)內(nèi)容,主要想通過(guò)該書(shū)學(xué)習(xí)MongoDB的相應(yīng)知識(shí),加深理解,故寫(xiě)在自己的博文當(dāng)中,作為記錄在最后的章節(jié)中,會(huì)有1個(gè)自己集合MongoDB數(shù)據(jù)庫(kù)利用的JavaEE的web利用。

第1章 走進(jìn)MongoDB

MongoDB是1個(gè)高性能、開(kāi)源、無(wú)模式的文檔型數(shù)據(jù)庫(kù),是當(dāng)前NoSQL數(shù)據(jù)庫(kù)產(chǎn)品中最熱門的1種,它在許多場(chǎng)景下可用于替換關(guān)系型數(shù)據(jù)庫(kù)或鍵/值存儲(chǔ)方式,MongoDB使用C++開(kāi)發(fā),MongoDB的官網(wǎng)是地址是:http://www.mongodb.org/,可以在此取得更多的詳細(xì)信息。


1.1、為何要用NoSQL

1.1.1、NoSQL簡(jiǎn)介

NoSQL,全程N(yùn)ot Only SQL,指的是非關(guān)系型的數(shù)據(jù)庫(kù),這類數(shù)據(jù)庫(kù)主要有這些特點(diǎn):非關(guān)系型的、散布式的、開(kāi)源的、水平可擴(kuò)大的,原始的目的是為了大范圍web利用,這場(chǎng)全新的數(shù)據(jù)庫(kù)革命運(yùn)動(dòng)初期就有人提出,發(fā)展至2009年趨勢(shì)越發(fā)高漲,NoSQL的擁戴者們提倡應(yīng)用非關(guān)系型的數(shù)據(jù)存儲(chǔ),通常的利用如:模式自由、支持建議復(fù)制、簡(jiǎn)單的API、終究的1致性(非ACID)、大容量數(shù)據(jù)等,NoSQL被我們用得最多得當(dāng)數(shù)key-value存儲(chǔ),固然還有其他的文檔、列存儲(chǔ)、圖型數(shù)據(jù)庫(kù)、xml數(shù)據(jù)庫(kù)等,相對(duì)目前遮天蔽日的關(guān)系型數(shù)據(jù)庫(kù)應(yīng)用,這1概念無(wú)疑是1種全新思惟的注入。

1.1.2、發(fā)展現(xiàn)狀

當(dāng)今的計(jì)算機(jī)體系結(jié)構(gòu)在數(shù)據(jù)存儲(chǔ)方法要求利用架構(gòu)具有龐大的水平擴(kuò)大性,而NoSQL正在致力于改變這1現(xiàn)狀,目前新浪微博的Redis和Google的Bitable和Amazon的SimpleDB使用的就是NoSQL型的數(shù)據(jù)庫(kù),NoSQL項(xiàng)目的名字上看不出甚么相同的地方,但是它們通常在某些方面相同:它們可以處理超大量的數(shù)據(jù)。

這場(chǎng)革命目前仍需等待,NoSQL對(duì)大型企業(yè)來(lái)講還不是主流,但是1兩年以后就會(huì)變個(gè)模樣,在NoSQL運(yùn)動(dòng)的最新1次集會(huì)中,來(lái)自世界各地的150人,擠滿了CBS Interactive的1間會(huì)議室,分享他們?nèi)绾晤嵏簿徛嘿F的關(guān)系數(shù)據(jù)庫(kù)的暴政,怎樣使用有效和更便宜的方法來(lái)管理數(shù)據(jù)。

關(guān)系型數(shù)據(jù)庫(kù)給你強(qiáng)加了太多的東西,它們要你強(qiáng)行修改對(duì)象數(shù)據(jù),以滿足數(shù)據(jù)庫(kù)新系統(tǒng)的需要,在NoSQL擁戴者們來(lái)看,基于NoSQL的數(shù)據(jù)庫(kù)替換方案,只是給你所需要的。

1.1.3、為何是NoSQL

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

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

web2.0網(wǎng)站要根據(jù)用戶個(gè)性化信息來(lái)實(shí)時(shí)生成動(dòng)態(tài)頁(yè)面和提供動(dòng)態(tài)信息,所以基本上沒(méi)法使用動(dòng)態(tài)網(wǎng)頁(yè)靜態(tài)化技術(shù),因此數(shù)據(jù)庫(kù)并發(fā)負(fù)載非常高,常常要到達(dá)每秒上萬(wàn)次讀寫(xiě)要求,關(guān)系型數(shù)據(jù)庫(kù)應(yīng)付上萬(wàn)次的SQL查詢還委曲頂?shù)米。菓?yīng)付上萬(wàn)次的SQL寫(xiě)數(shù)據(jù)要求,硬盤(pán)IO就已沒(méi)法承受了,其實(shí)對(duì)普通的BBS網(wǎng)站,常常也存在對(duì)高并發(fā)寫(xiě)要求的需求。

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

對(duì)大型的SNS網(wǎng)站,每天用戶產(chǎn)生海量的用戶動(dòng)態(tài)信息,以國(guó)外的Friend feed為例子,1個(gè)月就到達(dá)了2.5億條用戶動(dòng)態(tài),對(duì)關(guān)系型數(shù)據(jù)庫(kù)來(lái)講,在1張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)1個(gè)利用系統(tǒng)的用戶量和訪問(wèn)量與日俱增時(shí),你的數(shù)據(jù)庫(kù)卻沒(méi)有辦法像web server和app server那樣簡(jiǎn)單的通過(guò)添加更多的硬件和服務(wù)節(jié)點(diǎn)來(lái)擴(kuò)大性能和負(fù)載能力,對(duì)很多需要提供24小時(shí)不中斷服務(wù)的網(wǎng)站來(lái)講,對(duì)數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行升級(jí)和擴(kuò)大是非常痛苦的事情,常常需要停機(jī)保護(hù)和數(shù)據(jù)遷移,可是停機(jī)保護(hù)隨之帶來(lái)的就是公司收入的減少。

在上面提高的3高需求眼前,關(guān)系數(shù)據(jù)庫(kù)遇到難以克服的障礙,而對(duì)web2.0網(wǎng)站來(lái)講,關(guān)系數(shù)據(jù)庫(kù)的很多主要特性卻常常無(wú)用武之地。比如:

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

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

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

對(duì)關(guān)系數(shù)據(jù)庫(kù)來(lái)講,插入1條數(shù)據(jù)以后立刻查詢,是肯定可以讀出來(lái)這條數(shù)據(jù)的,但是對(duì)很多web利用來(lái)講,其實(shí)不 高俅這么高的實(shí)時(shí)性。

3、對(duì)復(fù)雜的SQL查詢,特別是奪標(biāo)關(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)生,常常更多的只是單表的主鍵查詢,和單表?xiàng)l件分頁(yè)查詢,SQL功能的被極大的弱化了。

因此關(guān)系數(shù)據(jù)庫(kù)在這些愈來(lái)愈多的利用場(chǎng)景下顯得不那末適合了,為了解決這1問(wèn)題的NoSQL數(shù)據(jù)庫(kù)應(yīng)運(yùn)而生。

NoSQL是非關(guān)系型數(shù)據(jù)存儲(chǔ)的廣義定義,它打破了久長(zhǎng)以來(lái)關(guān)系型數(shù)據(jù)庫(kù)與ACID理論大1統(tǒng)的局面,NoSQL數(shù)據(jù)存儲(chǔ)不需要固定的表結(jié)構(gòu),通常也不存在連接操作,在大數(shù)據(jù)存取上具有關(guān)系型數(shù)據(jù)庫(kù)沒(méi)法比擬的性能優(yōu)勢(shì),該概念在2009年初得到廣泛的認(rèn)可。‘

現(xiàn)今的利用體系結(jié)構(gòu)需要數(shù)據(jù)存儲(chǔ)在橫向伸縮性上能滿足需求,而NoSQL存儲(chǔ)就是為了實(shí)現(xiàn)這個(gè)需求。Google的BigTable與Amazon的Dynamo是非常成功的商業(yè)NoSQL實(shí)現(xiàn),1些開(kāi)源的NoSQL體系,如Fackbook的Cassandra,Aapche的HBase,也得到廣泛的認(rèn)可,從這NoSQL項(xiàng)目的名字看不出甚么相同的地方:hadoop、Voldemort、Dynomite還有其他很多,但是它們有1個(gè)共同點(diǎn):就是改變大家對(duì)數(shù)據(jù)庫(kù)在傳統(tǒng)意義上的理解。

1.1.4、NoSQL特點(diǎn):

1、它可以處理超大量的數(shù)據(jù)。

2、它運(yùn)行在便宜的PC服務(wù)器集群上。

PC集群擴(kuò)充起來(lái)非常方便并且本錢很低,避免了傳統(tǒng)商業(yè)數(shù)據(jù)庫(kù)的sharding操作的復(fù)雜性和本錢。

3、它擊碎了性能瓶頸。

NoSQL的支持者稱,通過(guò)NoSQL架構(gòu)可以省去將web或java利用和數(shù)據(jù)轉(zhuǎn)成SQL格式時(shí)間,履行速度變的更快。

SQL并不是適用于所有的程序代碼,對(duì)那些沉重的重復(fù)操作的數(shù)據(jù),SQL值得花錢,但是當(dāng)數(shù)據(jù)結(jié)構(gòu)非常簡(jiǎn)單時(shí),SQL可能沒(méi)有太大的用途。

4、它沒(méi)有過(guò)量的操作

雖然NoSQL的支持者也承認(rèn)關(guān)系型數(shù)據(jù)庫(kù)提供無(wú)可比擬的功能集合,而且在數(shù)據(jù)完全性上也發(fā)揮絕對(duì)穩(wěn)定,他們同時(shí)也表示,企業(yè)的具體需求可能沒(méi)有那末復(fù)雜。

5、它的支持者源于社區(qū)。

由于NoSQL項(xiàng)目都是開(kāi)源的,因此它們?nèi)鄙俟?yīng)商提供的正式支持,這1點(diǎn)它們與大多數(shù)開(kāi)源項(xiàng)目1樣,不能不從社區(qū)中需求支持。

NoSQL發(fā)展至今,出現(xiàn)了好幾種非關(guān)系型數(shù)據(jù)庫(kù),本書(shū)以NoSQL中目前表現(xiàn)最好的MongoDB來(lái)進(jìn)行說(shuō)明。


1.2、初始MongoDB

MongoDB是1個(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ù)類型,MongoDB最大的特點(diǎn)是它支持查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾近可以實(shí)現(xiàn)類似于關(guān)系數(shù)據(jù)庫(kù)單表查詢的絕大部份功能,而且還支持對(duì)數(shù)據(jù)建立索引,它是1個(gè)面向集合的、模式自由的文檔性數(shù)據(jù)庫(kù)

1、面向集合(collection-Orented)

意思是數(shù)據(jù)被分組存儲(chǔ)在數(shù)據(jù)集中,被稱為1個(gè)集合(Collection)。每一個(gè)集合在數(shù)據(jù)庫(kù)中都有1個(gè)唯1的標(biāo)示名,并且可以包括無(wú)線數(shù)目的文檔,集合的概念類似于關(guān)系型數(shù)據(jù)庫(kù)里的表,不同的是它不需要定義任何模式(Schema)

2、模式自由(schema-free)

意味著對(duì)存儲(chǔ)在MongoDB數(shù)據(jù)庫(kù)中的文件,我們不需要知道它的任何結(jié)構(gòu)定義,提額這么屢次無(wú)模式或模式自由,它們究竟是1個(gè)甚么概念呢?比如,下面兩個(gè)記錄可以存儲(chǔ)到同1個(gè)集合里面:

{"welcome":"beijing"}

{"age":25}

3、文檔型

意思是我們存儲(chǔ)的數(shù)據(jù)是鍵值對(duì)的集合,鍵是字符串,值可以是數(shù)據(jù)類型集合里的任何類型,包括數(shù)組和文檔、我們把這個(gè)數(shù)據(jù)格式稱作BSON,即Binary Serialized Document Notation。

1.2.1、特點(diǎn)

面向集合存儲(chǔ),易于存儲(chǔ)對(duì)象類型的數(shù)據(jù)

模式自由

支持動(dòng)態(tài)查詢

支持完全索引,包括內(nèi)部對(duì)象

支持查詢

支持復(fù)制和故障恢復(fù)

使用高效的2進(jìn)制數(shù)據(jù)存儲(chǔ),包括大型對(duì)象(如視頻等)

自動(dòng)處理碎片,以支持云計(jì)算層次的擴(kuò)大性。

支持Python、PHP、Ruby、Java、C、C#、javaScript、Perl和C++語(yǔ)言的驅(qū)動(dòng)程序,社區(qū)中也提供了對(duì)Erlang和.net平臺(tái)的驅(qū)動(dòng)程序。

文件存儲(chǔ)格式為BSON

可以通過(guò)網(wǎng)絡(luò)訪問(wèn)。


1.2.2、功能

面向集合的存儲(chǔ):合適存儲(chǔ)對(duì)象和JSON情勢(shì)的數(shù)據(jù)。

動(dòng)態(tài)查詢:mongoDB支持豐富的查詢表達(dá)式,查詢指令使用JSON情勢(shì)的標(biāo)記,可輕易查詢文檔中內(nèi)嵌的對(duì)象和數(shù)組。

完全的索引支持:包括文檔內(nèi)嵌對(duì)象和數(shù)據(jù),MongoDB的查詢優(yōu)化器會(huì)分析查詢表達(dá)式,并生成1個(gè)高效的查詢計(jì)劃。

查詢監(jiān)視:MongoDB包括1系列監(jiān)視工具用于分析數(shù)據(jù)庫(kù)操作的性能。

復(fù)制和自動(dòng)故障轉(zhuǎn)移:MongoDB數(shù)據(jù)庫(kù)支持服務(wù)器之間的數(shù)據(jù)復(fù)制,支持主從模式及服務(wù)器之間的相互復(fù)制,復(fù)制的主要目標(biāo)是提供冗余和自動(dòng)故障轉(zhuǎn)移。

高效的傳統(tǒng)存儲(chǔ)方式:支持2進(jìn)制數(shù)據(jù)和大型對(duì)象(如照片或圖片)

自動(dòng)分片以支持云級(jí)別的伸縮性:自動(dòng)分片功能支持水平的數(shù)據(jù)庫(kù)集群,可動(dòng)態(tài)添加額外的機(jī)器。


1.2.3、使用處合

網(wǎng)站數(shù)據(jù):MongoDB非常合適實(shí)時(shí)的插入,更新與查詢,并具有網(wǎng)站實(shí)時(shí)數(shù)據(jù)存儲(chǔ)所需要的復(fù)制和高度伸縮性。

緩存:由于性能很高,MongoDB也合適作為信息基礎(chǔ)實(shí)行的緩存層,在系統(tǒng)重啟以后,由于MongoDB搭建的持久化緩存可以免下層的數(shù)據(jù)源過(guò)載。

大尺寸,低價(jià)值的數(shù)據(jù):使用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)1些數(shù)據(jù)時(shí)可能會(huì)比較昂貴在此之前,很多時(shí)候程序員常常會(huì)選擇傳統(tǒng)的文件進(jìn)行存儲(chǔ)。

高伸縮性的場(chǎng)景:MongoDB非常合適由數(shù)10或數(shù)百臺(tái)服務(wù)器組成的數(shù)據(jù)庫(kù),MongoDB的線路圖中已包括對(duì)MapReduce引擎的內(nèi)置支持。

用于對(duì)象和JSON數(shù)據(jù)的存儲(chǔ):MongoDB的BSON數(shù)據(jù)格式非常合適文檔化格式的存儲(chǔ)和查詢。

生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国产亚洲人成a在线v网站 | 护士一级aaaaaa毛片 | 欧美猛烈性xbxbxbxb | 国产一区二区三区免费 | 亚洲免费网站在线观看 | 久久性生活 | 亚洲一区二区三区久久 | 亚洲欧美日韩国产精品久久 | 亚洲高清在线视频 | 亚洲国产第一页 | 男人尻女人视频 | 国产成人在线免费视频 | 亚洲欧美乱 | 宇都宫紫苑(rion)在线播放 | 一本大道道无香蕉综合在线 | 一区二区三区成人 | 多人伦精品一区二区三区视频 | 久久久91精品国产一区二区三区 | 亚洲精品 国产 日韩 | 中文字幕一区视频 | 中文字幕在线视频网站 | 免费乱码中文字幕网站 | 伊人网在线播放 | 亚洲国产天堂久久综合图区 | 在线观看视频一区二区 | 叼嘿视频在线观看免费 | 久久综合精品国产一区二区三区无 | 欧美精品免费一区欧美久久优播 | 男女羞羞免费视频 | 91精品久久一区二区三区 | 国产色综合一区二区三区 | 国产综合亚洲欧美日韩一区二区 | 久草视频播放 | 日本夜免费视频视频大片 | 精品亚洲456在线播放 | free性欧美hd | japanesexxxxx护士| 亚洲伊人久久精品 | 日韩欧美一二三区 | 一区二区三区四区视频在线观看 | free俄罗斯性xxxxhd大陆 |