成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深入了解MangoDB的Shell和文檔

數(shù)據(jù)庫 其他數(shù)據(jù)庫 數(shù)據(jù)庫運維
今天我們將談到MangoDB的Shell和文檔,MangoDB其實是數(shù)據(jù)庫shell.一般假定它和mongod運行在同一臺機器上,還假定了mongod綁定了默認端口。

1.MongoDB shell

MangoDB其實是數(shù)據(jù)庫shell.一般假定它和mongod運行在同一臺機器上,還假定了mongod綁定了默認端口.

如果不是這樣的話,可以在啟動時指定這些參數(shù),讓shell連接另一臺服務器:

 

  1. mongo 192.168.10.10:10000 

這樣就會連接運行在192.168.10.10上端口為10000的mongod

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

mongo 192.168.10.10:10000/refactor

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

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

mongo --nodb

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

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

如下操作:

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工具

對于管理多個數(shù)據(jù)庫,有多個數(shù)據(jù)庫變量就比簡單的db有用處,如在分片中,

要維護一個單獨的只想配置服務器的變量:

config=db.getSisterDB("config")

config.shards.find()

2.BSON

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

因為MongoDB中的通信大量依賴于文檔,所以需要一種所有驅動,工具和進程都能共享的文檔表達方式.

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

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

也是這種格式.

當驅動要插入文檔,或者將文檔作為查詢條件,驅動會將文檔轉化成BSON,然后再發(fā)往服務器.同樣,返回到客戶端的文檔

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

用BSON的三個主要原因:

a.效率

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

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

b.可遍歷行

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

這對MongoDB的內嵌文檔很有用.

c.性能

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

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

驅動在TCP/IP協(xié)議的基礎上簡單封裝了MongoDB傳輸協(xié)議,用來與MongoDB交互.

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

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

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

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

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

每個新的以數(shù)字結尾的數(shù)據(jù)文件大小會加倍,直到達到***值2GB.這是為了讓小數(shù)據(jù)庫不浪費太多的磁盤空間,

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

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

被填滿時就會自動啟動.這意味著MongoDB服務器總是視圖在每一個數(shù)據(jù)庫保留一個額外的空數(shù)據(jù)文件來避免

文件分配產生的阻塞.

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

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

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

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

如圖:

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

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

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

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

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

5.內從映射存儲引擎

MongoDB默認的存儲引擎是內存映射引擎,當服務器啟動后,將所有數(shù)據(jù)文件映射到內存,然后由操作系統(tǒng)來

負責將緩沖數(shù)據(jù)寫入磁盤并將數(shù)據(jù)調入調出內存頁面

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

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

b)MongoDB服務器進程的虛擬大小通常會非常大,超過整個數(shù)據(jù)集的大小,這沒關系,

因為操作系統(tǒng)會處理讓那些數(shù)據(jù)常駐內存.

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

d)32位的MongoDB服務器有個限制,每個mongod最多處理2GB數(shù)據(jù),這是因為所有數(shù)據(jù)必須能用32位地址訪問到.

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

【編輯推薦】

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

責任編輯:彭凡 來源: 博客園
相關推薦

2010-06-23 20:31:54

2010-07-13 09:36:25

2010-11-19 16:22:14

Oracle事務

2020-09-21 09:53:04

FlexCSS開發(fā)

2009-08-25 16:27:10

Mscomm控件

2022-08-26 13:48:40

EPUBLinux

2020-07-20 06:35:55

BashLinux

2019-08-02 08:59:21

Token認證服務器

2019-11-29 16:21:22

Spring框架集成

2017-01-20 08:30:19

JavaScriptfor循環(huán)

2018-02-24 13:21:02

2018-09-04 16:20:46

MySQ索引數(shù)據(jù)結構

2013-04-10 11:16:19

iPad的MouseE

2016-10-20 08:46:17

2021-09-03 08:27:47

FortinetSASE平臺安全

2011-07-18 15:08:34

2022-06-03 10:09:32

威脅檢測軟件

2010-11-15 11:40:44

Oracle表空間

2018-06-22 13:05:02

前端JavaScript引擎

2021-01-19 12:00:39

前端監(jiān)控代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产欧美日韩一区 | 岛国视频 | 久久亚洲一区二区三区四区 | 久久精品国产a三级三级三级 | 亚洲成人免费在线观看 | 有码一区| 中文字幕欧美日韩一区 | 国产成人免费 | 国产一区高清 | www.com久久久| 国产传媒在线观看 | 精品久久久久久红码专区 | 国产精品久久久久久婷婷天堂 | 欧美三级视频在线观看 | 日韩高清av | 日韩欧美手机在线 | 一区二区三区在线播放视频 | 国产精品亚洲一区 | 日韩精品在线免费观看视频 | 精品亚洲一区二区三区四区五区高 | 免费看黄色小视频 | 久久久国产一区 | 精品久久久久久久久久久下田 | 日本成人福利视频 | 成人av一区二区在线观看 | 久久久久久久久久久久久九 | 亚洲国产黄色av | 久久久久久看片 | 国产9 9在线 | 中文 | 久久精品久久综合 | 精品1区| 日本一区二区三区四区 | 日韩精品一区二区三区中文字幕 | 欧美成人猛片aaaaaaa | 国产在线观看一区二区 | 国产做a爱片久久毛片 | 亚洲国产精品va在线看黑人 | 成人深夜福利 | 久久99久久99| 国产精品久久久久一区二区三区 | 亚洲综合首页 |