mongodb快速入門

mongodb介紹

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

NoSql褐捻,全稱是 Not Only Sql,指的是非關系型的數(shù)據(jù)庫掸茅。下一代數(shù)據(jù)庫主要解決幾個要點:非關系型的、分布式的柠逞、開源的昧狮、水平可擴展的。原始的目的是為了大規(guī)模web應用板壮,這場運動開始于2009年初逗鸣,通常特性應用如:模式自由、支持簡易復制、簡單的API慕购、最終的一致性(非ACID)聊疲、大容量數(shù)據(jù)等茬底。NoSQL被我們用得最多的當數(shù)key-value存儲沪悲,當然還有其他的文檔型的、列存儲阱表、圖型數(shù)據(jù)庫殿如、xml數(shù)據(jù)庫等。

特點

高性能最爬、易部署涉馁、易使用,存儲數(shù)據(jù)非常方便爱致。主要功能特性有:

面向集合存儲烤送,易存儲對象類型的數(shù)據(jù)。

模式自由糠悯。

支持動態(tài)查詢帮坚。

支持完全索引,包含內部對象互艾。

支持查詢试和。

支持復制和故障恢復。

使用高效的二進制數(shù)據(jù)存儲纫普,包括大型對象(如視頻等)阅悍。

自動處理碎片,以支持云計算層次的擴展性

支持Python昨稼,PHP节视,Ruby,Java假栓,C寻行,C#,Javascript但指,Perl及C++語言的驅動程序寡痰,社區(qū)中也提供了對Erlang及.NET等平臺的驅動程序。

文件存儲格式為BSON(一種JSON的擴展)棋凳。

可通過網(wǎng)絡訪問拦坠。

功能

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

動態(tài)查詢:Mongo支持豐富的查詢表達式剩岳。查詢指令使用JSON形式的標記贞滨,可輕易查詢文檔中內嵌的對象及數(shù)組。

完整的索引支持:包括文檔內嵌對象及數(shù)組。Mongo的查詢優(yōu)化器會分析查詢表達式晓铆,并生成一個高效的查詢計劃勺良。

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

復制及自動故障轉移:Mongo數(shù)據(jù)庫支持服務器之間的數(shù)據(jù)復制骄噪,支持主-從模式及服務器之間的相互復制尚困。復制的主要目標是提供冗余及自動故障轉移。

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

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

適用場景

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

緩存:由于性能很高,Mongo也適合作為信息基礎設施的緩存層陪蜻。

大尺寸邦马,低價值的數(shù)據(jù):使用傳統(tǒng)的關系型數(shù)據(jù)庫存儲一些數(shù)據(jù)時可能會比較昂貴,在此之前宴卖,很多時候程序員往往會選擇傳統(tǒng)的文件進行存儲滋将。

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

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

MongoDB的使用限制

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

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

安裝與運行

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

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

tar

mv改名,改名為mongodb

mv移動到/opt目錄下医寿,并修改權限為777

mkdir -p /data/db栏赴,并修改權限為777

vi ~/.bashrc

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

重啟機器

輸入命令mongod即可啟動,可以看到端口靖秩,瀏覽器訪問IP+端口即可(不要關閉該窗口)

如果無法啟動就刪除掉/data/db下的mongod.lock

mongoVUE基本操作

MongoVUE是一個MongoDB在windwos下的客戶端管理工具须眷,一般都會使用它來操作。

name隨便寫沟突,server寫你服務器的ip花颗,port端口號,mongodb的默認端口是27017惠拭,然后連接就OK

體系結構

MongoDB 的文檔(document) 扩劝,相當于關系數(shù)據(jù)庫中的一行記錄。

多個文檔組成一個集合(collection) ,相當于關系數(shù)據(jù)庫的表棒呛。

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

一個 MongoDB 實例支持多個數(shù)據(jù)庫(database) 鱼喉。

單條件查詢

in查詢

多條件查詢and

多條件查詢or

顯示查詢字段

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

插入記錄

修改記錄

刪除記錄

輸入條件宰睡,運行即可刪除

mongodb監(jiān)控——mongostat

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

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

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

vsize:虛擬內存使用量麸恍,單位MB

res:物理內存使用量,單位MB

faults:每秒訪問失敗數(shù)(只有Linux有)搀矫,數(shù)據(jù)被交換出物理內存抹沪,放到swap。不要超過100瓤球,否則就是機器內存太小融欧,造成頻繁swap寫入。此時要升級內存或者擴展

locked db:被鎖的時間百分比卦羡,盡量控制在10%以下

idx miss %:索引不命中所占百分比噪馏。如果太高的話就要考慮索引是不是設計不合理

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

conn:有多少連接

mongodb profiler

類似于mysql中的慢查詢

開啟profile

db.setProfilingLevel(n);

n:

0 - 關閉性能分析拟赊,測試環(huán)境可以打開刺桃,生成環(huán)境關閉,對性能有很大影響

1 - 開啟慢查詢日志吸祟,執(zhí)行時間大于100毫秒的語句

2 - 開啟所有操作日志

db.setProfilingLevel(level , slowms);

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

重點指標以及常見優(yōu)化

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

responseLength:查詢返回的長度

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

nreturned:從查詢中返回的結果對象

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

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

對于創(chuàng)建索引的建議是:如果很少讀,那么盡量不要添加索引炒瘟,因為索引越多吹埠,寫操作會越慢。如果讀量很大,那么創(chuàng)建索引還是比較劃算的缘琅。

當返回的結果集很大時即responseLength值相當大時粘都,會使得性能下降,在做find查詢時,需要添加第二個查詢參數(shù)刷袍,只獲取需要顯示的字段.

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

最大連接數(shù)

db.serverStatus().connections;

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

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

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

mongo主從復制

架構上和mysql的主從復制類似堆生,原理如下:

mongodb的復制至少需要兩個服務器或者節(jié)點。其中一個是主雷酪,負責處理客戶端請求淑仆,其余為從,負責映射主節(jié)點的數(shù)據(jù)哥力。主節(jié)點記錄在其上執(zhí)行的所有操作蔗怠。從節(jié)點定期輪詢主節(jié)點獲得操作,然后對自己的數(shù)據(jù)副本執(zhí)行這些操作吩跋。

打開oplog

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末寞射,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子锌钮,更是在濱河造成了極大的恐慌桥温,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件梁丘,死亡現(xiàn)場離奇詭異侵浸,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來服鹅,“玉大人,你說我怎么就攤上這事履腋。” “怎么了惭嚣?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵遵湖,是天一觀的道長。 經(jīng)常有香客問我晚吞,道長延旧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任槽地,我火速辦了婚禮迁沫,結果婚禮上芦瘾,老公的妹妹穿的比我還像新娘。我一直安慰自己集畅,他們只是感情好近弟,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著挺智,像睡著了一般祷愉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赦颇,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天二鳄,我揣著相機與錄音,去河邊找鬼媒怯。 笑死订讼,一個胖子當著我的面吹牛,可吹牛的內容都是我干的沪摄。 我是一名探鬼主播躯嫉,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼杨拐!你這毒婦竟也來了?” 一聲冷哼從身側響起擂啥,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤哄陶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后哺壶,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屋吨,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年山宾,在試婚紗的時候發(fā)現(xiàn)自己被綠了至扰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡资锰,死狀恐怖敢课,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情绷杜,我是刑警寧澤直秆,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站鞭盟,受9級特大地震影響圾结,放射性物質發(fā)生泄漏。R本人自食惡果不足惜齿诉,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一筝野、第九天 我趴在偏房一處隱蔽的房頂上張望晌姚。 院中可真熱鬧,春花似錦歇竟、人聲如沸舀凛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽猛遍。三九已至,卻和暖如春号坡,著一層夾襖步出監(jiān)牢的瞬間懊烤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工宽堆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留腌紧,地道東北人。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓畜隶,卻偏偏與公主長得像壁肋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子籽慢,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內容

  • 1.MongDB 簡介 MongoDB(來自于英文單詞“Humongous”浸遗,中文含義為“龐大”)是可以應用于各種...
    我沒有三顆心臟閱讀 1,170評論 1 12
  • 1.MongDB 簡介 MongoDB(來自于英文單詞“Humongous”,中文含義為“龐大”)是可以應用于各種...
    zwb_jianshu閱讀 437評論 0 1
  • 一箱亿、NoSQL概述 NoSQL是Not Only SQL的縮寫跛锌,指的是非關系型數(shù)據(jù)庫,與傳統(tǒng)的關系型數(shù)據(jù)庫相對應届惋,...
    凜_冬_將_至閱讀 2,101評論 0 4
  • MongoDB快速入門 一髓帽、MongoDB 簡介MongoDB是由C++語言編寫的介于關系數(shù)據(jù)庫和非關系數(shù)據(jù)庫之間...
    learninginto閱讀 436評論 0 6
  • 如果把mysql比作大名鼎鼎的c語言;那么mongodb就是簡單友好的python Mysql數(shù)據(jù)庫有什么缺陷? ...
    zhaoolee閱讀 2,665評論 1 10