日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
深入了解MangoDB的Shell和文檔

1.MongoDB shell

成都創(chuàng)新互聯(lián)專(zhuān)注于章貢網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供章貢營(yíng)銷(xiāo)型網(wǎng)站建設(shè),章貢網(wǎng)站制作、章貢網(wǎng)頁(yè)設(shè)計(jì)、章貢網(wǎng)站官網(wǎng)定制、小程序設(shè)計(jì)服務(wù),打造章貢網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供章貢網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。

MangoDB其實(shí)是數(shù)據(jù)庫(kù)shell.一般假定它和mongod運(yùn)行在同一臺(tái)機(jī)器上,還假定了mongod綁定了默認(rèn)端口.

如果不是這樣的話(huà),可以在啟動(dòng)時(shí)指定這些參數(shù),讓shell連接另一臺(tái)服務(wù)器:

 

 
 
 
 
  1. mongo 192.168.10.10:10000 

這樣就會(huì)連接運(yùn)行在192.168.10.10上端口為10000的mongod

shell默認(rèn)連接test數(shù)據(jù)庫(kù),要使用別的數(shù)據(jù)庫(kù),在服務(wù)器地址后添加斜杠和數(shù)據(jù)庫(kù)名:

mongo 192.168.10.10:10000/refactor

這樣會(huì)連接192.168.10.10:10000上的refactor數(shù)據(jù)庫(kù)

也可以用--nodb選項(xiàng)啟動(dòng)shell,而不連接任何數(shù)據(jù)庫(kù),而只是試試javascript

mongo --nodb

db絕不是僅有的數(shù)據(jù)庫(kù),從shell中可以連接任意多的數(shù)據(jù)庫(kù),這對(duì)多個(gè)服務(wù)器的環(huán)境很方便.調(diào)用connect(),

并將結(jié)果賦值給變量.如在分片環(huán)境中,可能想用mongos表示mongos服務(wù)器,還想要有每個(gè)片的連接,可以

如下操作:

mongos=connect("127.0.0.1:10000")

shard0=connect("127.0.0.1:10001")

shard1=connect("127.0.0.1:10002")

這樣就能將mongos,shard0,shard1作為db變量使用.

shell工具

對(duì)于管理多個(gè)數(shù)據(jù)庫(kù),有多個(gè)數(shù)據(jù)庫(kù)變量就比簡(jiǎn)單的db有用處,如在分片中,

要維護(hù)一個(gè)單獨(dú)的只想配置服務(wù)器的變量:

config=db.getSisterDB("config")

config.shards.find()

2.BSON

MongoDB的文檔是個(gè)抽象概念,其具體的呈現(xiàn)形式取決與使用的驅(qū)動(dòng)和編程語(yǔ)言.

因?yàn)镸ongoDB中的通信大量依賴(lài)于文檔,所以需要一種所有驅(qū)動(dòng),工具和進(jìn)程都能共享的文檔表達(dá)方式.

這種表達(dá)方式叫Binary JSON(BSON)

BSON是輕量級(jí)的二進(jìn)制格式,能將MongoDB的所有文檔表示為自己字符串.數(shù)據(jù)庫(kù)能理解BSON,存在磁盤(pán)上的文檔

也是這種格式.

當(dāng)驅(qū)動(dòng)要插入文檔,或者將文檔作為查詢(xún)條件,驅(qū)動(dòng)會(huì)將文檔轉(zhuǎn)化成BSON,然后再發(fā)往服務(wù)器.同樣,返回到客戶(hù)端的文檔

也是BSON格式的字符串.驅(qū)動(dòng)需要將這些數(shù)據(jù)解碼,編程本機(jī)的文檔表示,***返回給客戶(hù)端.

用BSON的三個(gè)主要原因:

a.效率

BSON設(shè)計(jì)用來(lái)更有效的表示數(shù)據(jù),暫用更好的空間.最差的情況下,BSON比JSON效率略低,***的情況下(

比如存放二進(jìn)制數(shù)據(jù)或著大多數(shù)),BSON要比JSON要高效的多.

b.可遍歷行

有些時(shí)候BSON犧牲了空間效率,換取更容易遍歷的格式.如,在字符串前面加入其長(zhǎng)度,而不是在結(jié)尾處使用一個(gè)終結(jié)符

這對(duì)MongoDB的內(nèi)嵌文檔很有用.

c.性能

BSON編碼和解碼速度都很快.它用C風(fēng)格的表現(xiàn)方式表示類(lèi)型,在大多數(shù)編程語(yǔ)言中都很快.

2.MongoDB的傳輸協(xié)議

驅(qū)動(dòng)在TCP/IP協(xié)議的基礎(chǔ)上簡(jiǎn)單封裝了MongoDB傳輸協(xié)議,用來(lái)與MongoDB交互.

MongoDB的傳輸協(xié)議基本上是對(duì)一個(gè)簡(jiǎn)單封裝的BSON數(shù)據(jù),如,插入消息會(huì)有20字節(jié)的頭部數(shù)據(jù)(包括

告知服務(wù)器執(zhí)行寫(xiě)入操作的代碼,以及消息長(zhǎng)度,要插入的集合名,要插入的BSON文檔列表)

3.數(shù)據(jù)文件

MongoDB的數(shù)據(jù)目錄中,每個(gè)數(shù)據(jù)庫(kù)都有幾個(gè)獨(dú)立的文件.每個(gè)數(shù)據(jù)有一個(gè).ns文件和若干數(shù)據(jù)文件,數(shù)據(jù)文件以

遞增的數(shù)字結(jié)尾,所以,數(shù)據(jù)庫(kù)refactor會(huì)被存放在refactor.ns,refactor.0,refactor.1等文件中.

每個(gè)新的以數(shù)字結(jié)尾的數(shù)據(jù)文件大小會(huì)加倍,直到達(dá)到***值2GB.這是為了讓小數(shù)據(jù)庫(kù)不浪費(fèi)太多的磁盤(pán)空間,

同時(shí)讓大數(shù)據(jù)庫(kù)使用磁盤(pán)上連續(xù)的空間.

MongoDB為了保證性能還會(huì)預(yù)分配數(shù)據(jù)文件(可以用--norealloc關(guān)閉這一功能).預(yù)分配在后臺(tái)完成,有數(shù)據(jù)文件

被填滿(mǎn)時(shí)就會(huì)自動(dòng)啟動(dòng).這意味著MongoDB服務(wù)器總是視圖在每一個(gè)數(shù)據(jù)庫(kù)保留一個(gè)額外的空數(shù)據(jù)文件來(lái)避免

文件分配產(chǎn)生的阻塞.

4.命名空間和數(shù)據(jù)域

在數(shù)據(jù)文件內(nèi)部,每個(gè)數(shù)據(jù)庫(kù)都是按照 命名空間 組織的,一種類(lèi)別的數(shù)據(jù)與其它類(lèi)別的分開(kāi)存放.每個(gè)集合的文檔都有

自己的命名空間,索引也是.命名空間的元數(shù)據(jù)存放在數(shù)據(jù)庫(kù)的.ns文件中.

每個(gè)命名空間的數(shù)據(jù)都被分成若干組,放到數(shù)據(jù)文件的某一個(gè)區(qū)域內(nèi),這個(gè)區(qū)域成為數(shù)據(jù)域.

如圖:

數(shù)據(jù)庫(kù)foo有3個(gè)數(shù)據(jù)文件,其中第3個(gè)是預(yù)分配的空文件.前兩個(gè)數(shù)據(jù)文件被分成幾個(gè)數(shù)據(jù)域,屬于幾個(gè)不同的命名空間

每個(gè)命名空間可以有幾個(gè)不同的數(shù)據(jù)域,在磁盤(pán)上不必連續(xù).類(lèi)似于數(shù)據(jù)庫(kù)的數(shù)據(jù)文件,每次新分配的命名空間

的數(shù)據(jù)域大小也會(huì)增加.這是為了平衡命名空間浪費(fèi)的控件和盡量讓一個(gè)命名空間的數(shù)據(jù)連續(xù)做出的這種.

圖中還有個(gè)特殊的命名空間$freelist,存放這不再使用的數(shù)據(jù)域(如刪除集合或索引產(chǎn)生的數(shù)據(jù)域).

當(dāng)命名空間分配新的數(shù)據(jù)域時(shí),系統(tǒng)會(huì)先查找空閑列表,看看有沒(méi)有適合大小的數(shù)據(jù)域可用

5.內(nèi)從映射存儲(chǔ)引擎

MongoDB默認(rèn)的存儲(chǔ)引擎是內(nèi)存映射引擎,當(dāng)服務(wù)器啟動(dòng)后,將所有數(shù)據(jù)文件映射到內(nèi)存,然后由操作系統(tǒng)來(lái)

負(fù)責(zé)將緩沖數(shù)據(jù)寫(xiě)入磁盤(pán)并將數(shù)據(jù)調(diào)入調(diào)出內(nèi)存頁(yè)面

這樣的移情有若干重要的特性:

a)MongoDB管理內(nèi)存的代碼非常精煉,原因是將大部分工作交給了操作系統(tǒng).

b)MongoDB服務(wù)器進(jìn)程的虛擬大小通常會(huì)非常大,超過(guò)整個(gè)數(shù)據(jù)集的大小,這沒(méi)關(guān)系,

因?yàn)椴僮飨到y(tǒng)會(huì)處理讓那些數(shù)據(jù)常駐內(nèi)存.

c)MongoDB不能控制數(shù)據(jù)寫(xiě)入到磁盤(pán)的順序,也就不能用預(yù)寫(xiě)日志提供單機(jī)的持久性.

d)32位的MongoDB服務(wù)器有個(gè)限制,每個(gè)mongod最多處理2GB數(shù)據(jù),這是因?yàn)樗袛?shù)據(jù)必須能用32位地址訪問(wèn)到.

原文鏈接:http://www.cnblogs.com/refactor/archive/2012/08/15/2602348.html

【編輯推薦】

  1. MongoDB 2.0 正式版發(fā)布
  2. MongoDB 2.0新功能逐個(gè)看之Compact Command
  3. 主流NoSQL數(shù)據(jù)庫(kù)全方位評(píng)測(cè)之MongoDB
  4. 教你如何利用MySQL學(xué)習(xí)MongoDB
  5. 在Windows環(huán)境下MongoDB搭建和簡(jiǎn)單操作

網(wǎng)頁(yè)名稱(chēng):深入了解MangoDB的Shell和文檔
網(wǎng)站URL:http://www.dlmjj.cn/article/copieds.html