mongodb快速入門

MongoDB介紹

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供資源企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營銷網(wǎng)站建設(shè)、html5、小程序制作等業(yè)務(wù)。10年已為資源眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。


MongoDB是一個(gè)高性能,開源,無模式的文檔型數(shù)據(jù)庫,是當(dāng)前NoSql數(shù)據(jù)庫中比較熱門的一種。它在許多場景下可用于替代傳統(tǒng)的關(guān)系型數(shù)據(jù)庫或鍵/值存儲(chǔ)方式。Mongo使用C++開發(fā)。Mongo的官方網(wǎng)站地址是://www.mongodb.org/

NOSQL,全稱是 Not Only Sql,指的是非關(guān)系型的數(shù)據(jù)庫。下一代數(shù)據(jù)庫主要解決幾個(gè)要點(diǎn):非關(guān)系型的、分布式的、開源的、水平可擴(kuò)展的。原始的目的是為了大規(guī)模web應(yīng)用,這場運(yùn)動(dòng)開始于2009年初,通常特性應(yīng)用如:模式自由、支持簡易復(fù)制、簡單的API、最終的一致性(非ACID)、大容量數(shù)據(jù)等。NoSQL被我們用得最多的當(dāng)數(shù)key-value存儲(chǔ),當(dāng)然還有其他的文檔型的、列存儲(chǔ)、圖型數(shù)據(jù)庫、xml數(shù)據(jù)庫等。

特點(diǎn)


高性能、易部署、易使用,存儲(chǔ)數(shù)據(jù)非常方便。主要功能特性有:

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

模式自由。

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

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

支持查詢。

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

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

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

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

文件存儲(chǔ)格式為BSON(一種JSON的擴(kuò)展)。

可通過網(wǎng)絡(luò)訪問。

功能


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

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

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

查詢監(jiān)視:Mongo包含一個(gè)監(jiān)視工具用于分析數(shù)據(jù)庫操作的性能。

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

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

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

適用場景


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

緩存:由于性能很高,Mongo也適合作為信息基礎(chǔ)設(shè)施的緩存層。

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

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

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

MongoDB的使用限制


高度事務(wù)性的系統(tǒng):例如銀行或會(huì)計(jì)系統(tǒng)。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫目前還是更適用于需要大量原子性復(fù)雜事務(wù)的應(yīng)用程序。

傳統(tǒng)的商業(yè)智能應(yīng)用:針對(duì)特定問題的BI數(shù)據(jù)庫會(huì)對(duì)產(chǎn)生高度優(yōu)化的查詢方式。對(duì)于此類應(yīng)用,數(shù)據(jù)倉庫可能是更合適的選擇。

安裝與運(yùn)行


官網(wǎng)下載對(duì)應(yīng)的版本,一定要分清楚是32位還是64位

此處以32位的tar.gz包為例子

tar

mv改名,改名為mongodb

mv移動(dòng)到/opt目錄下,并修改權(quán)限為777

mkdir -p /data/db,并修改權(quán)限為777

vi ~/.bashrc

加入:export PATH=/opt/mongodb/bin:$PATH

重啟機(jī)器

輸入命令mongod即可啟動(dòng),可以看到端口,瀏覽器訪問IP+端口即可(不要關(guān)閉該窗口)

如果無法啟動(dòng)就刪除掉/data/db下的mongod.lock

mongodb快速入門

mongoVUE基本操作


MongoVUE是一個(gè)MongoDB在windwos下的客戶端管理工具,一般都會(huì)使用它來操作。

name隨便寫,server寫你服務(wù)器的ip,port端口號(hào),mongodb的默認(rèn)端口是27017,然后連接就OK

體系結(jié)構(gòu)


MongoDB 的文檔(document) ,相當(dāng)于關(guān)系數(shù)據(jù)庫中的一行記錄。

多個(gè)文檔組成一個(gè)集合(collection) ,相當(dāng)于關(guān)系數(shù)據(jù)庫的表。

多個(gè)集合(collection) ,邏輯上組織在一起,就是數(shù)據(jù)庫(database) 。

一個(gè) MongoDB 實(shí)例支持多個(gè)數(shù)據(jù)庫(database) 。

mongodb快速入門

單條件查詢


mongodb快速入門

in查詢


mongodb快速入門

多條件查詢and


mongodb快速入門

多條件查詢or


mongodb快速入門

顯示查詢字段


mongodb快速入門

排序(1 升序;-1 降序)


mongodb快速入門

插入記錄


mongodb快速入門

修改記錄


mongodb快速入門

刪除記錄


輸入條件,運(yùn)行即可刪除

mongodb監(jiān)控——mongostat


mongodb快速入門

getmore:通常發(fā)生在結(jié)果集比較大的查詢時(shí), 第一個(gè)query返回了部分結(jié)果,后續(xù)的結(jié)果是通過getmore來獲取的

flushs:每秒執(zhí)行同步將數(shù)據(jù)寫入硬盤的次數(shù)。

mapped 映射到內(nèi)存的數(shù)據(jù)大小,單位是MB,

vsize:虛擬內(nèi)存使用量,單位MB

res:物理內(nèi)存使用量,單位MB

faults:每秒訪問失敗數(shù)(只有Linux有),數(shù)據(jù)被交換出物理內(nèi)存,放到swap。不要超過100,否則就是機(jī)器內(nèi)存太小,造成頻繁swap寫入。此時(shí)要升級(jí)內(nèi)存或者擴(kuò)展

locked db:被鎖的時(shí)間百分比,盡量控制在10%以下

idx miss %:索引不命中所占百分比。如果太高的話就要考慮索引是不是設(shè)計(jì)不合理

qr|qw ar|aw: mongo負(fù)載高時(shí),命令來不及處理,mongo將命令放入隊(duì)列。 qr|qw 等待讀/寫的隊(duì)列長度 ar|aw 執(zhí)行讀/寫操作客戶端數(shù)量。

conn:有多少連接

mongodb profiler


類似于MySQL中的慢查詢

mongodb快速入門

開啟profile


db.setProfilingLevel(n);

n:

0 - 關(guān)閉性能分析,測試環(huán)境可以打開,生成環(huán)境關(guān)閉,對(duì)性能有很大影響

1 - 開啟慢查詢?nèi)罩?,?zhí)行時(shí)間大于100毫秒的語句

2 - 開啟所有操作日志

db.setProfilingLevel(level , slowms);

mongodb快速入門

Mongo Profile 記錄是直接存在系統(tǒng)db里的,記錄位置local》collections》system.profile

重點(diǎn)指標(biāo)以及常見優(yōu)化


millis: 該命令執(zhí)行耗時(shí),以毫秒記

responseLength:查詢返回的長度

nscanned:在執(zhí)行查詢操作的時(shí)候掃描了多少對(duì)象

nreturned:從查詢中返回的結(jié)果對(duì)象

mongodb快速入門

如果 nscanned(掃描的記錄數(shù))遠(yuǎn)大于 nreturned(返回結(jié)果的記錄數(shù))的話,那么我們就要考慮通過加索引來優(yōu)化記錄定位了。

db.表名.ensureIndex({age:1}) //1(升序);-1(降序)

對(duì)于創(chuàng)建索引的建議是:如果很少讀,那么盡量不要添加索引,因?yàn)樗饕蕉?,寫操作?huì)越慢。如果讀量很大,那么創(chuàng)建索引還是比較劃算的。

當(dāng)返回的結(jié)果集很大時(shí)即responseLength值相當(dāng)大時(shí),會(huì)使得性能下降,在做find查詢時(shí),需要添加第二個(gè)查詢參數(shù),只獲取需要顯示的字段.

造成慢查詢可能是索引的問題,也可能是數(shù)據(jù)不在內(nèi)存造成(磁盤讀入)。

最大連接數(shù)


db.serverStatus().connections;

current數(shù)值+available數(shù)值就是當(dāng)前mongodb最大連接數(shù)

啟動(dòng)里面加參數(shù) --maxConns=3000

不要忘了linux中的打開最大文件連接數(shù)會(huì)影響此處的設(shè)置,一定要把他也調(diào)大

mongo主從復(fù)制


架構(gòu)上和mysql的主從復(fù)制類似,原理如下:

mongodb的復(fù)制至少需要兩個(gè)服務(wù)器或者節(jié)點(diǎn)。其中一個(gè)是主,負(fù)責(zé)處理客戶端請(qǐng)求,其余為從,負(fù)責(zé)映射主節(jié)點(diǎn)的數(shù)據(jù)。主節(jié)點(diǎn)記錄在其上執(zhí)行的所有操作。從節(jié)點(diǎn)定期輪詢主節(jié)點(diǎn)獲得操作,然后對(duì)自己的數(shù)據(jù)副本執(zhí)行這些操作。

打開oplog

新聞名稱:mongodb快速入門
標(biāo)題網(wǎng)址:http://muchs.cn/article0/gesjio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、定制開發(fā)、虛擬主機(jī)外貿(mào)建站、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)