MongoDB 第一篇

一、MongoDB 權威指南

親身經歷了在快速發(fā)展的大型互聯網公司應于MySQL的過程。開始
時只有很少的數據,一臺服務器就可以了妒貌。然后就得建立備份,以便應對大量
的讀取和不時的當季铸豁。用不了多久灌曙,就得加一個緩存層,調整所有的查詢节芥。
投入更多的硬件在刺。

MongoDB是是一款強大、靈活头镊、且易于擴展的通用性數據庫蚣驼。它能擴展出
非常多的功能,如二級索引, 范圍查詢相艇,排序颖杏,聚合,以及地理空間索引

縱向擴展就是適用計算能力更強的機器坛芽,而橫向擴展就是通過分區(qū)將
數據分散到更多的機器上留储。通常翼抠,縱向擴展是最省力的做法,其缺點是大型機
一般都非常昂貴获讳。而且机久,當數據量達到機器的物理極限時,無論話多少錢也買不到
更強的機器了赔嚎。

另一個選擇是橫向擴展;要增加存儲空間或提高性能胧弛,只需購買一臺普通的服務器
并把它添加到集群中就可以了尤误。

橫向擴展的缺點就是,維護一個1000個集群的機器结缚,比一個維護一個機器更麻煩损晤。

二、為什么MongoDB 更易于橫向擴展呢红竭?

因為MongoDB 的主鍵不是自增的尤勋,所以不會有自增時候的限制。
并且使用類似UUID的方式茵宪,更加適用于分布式存儲

這里需要研究下UUID的存儲

三最冰、MongoDB 提供一個卓越的性能。

MongoDB的一個主要目標是提供卓越的性能稀火。這很大成都上決定了MongoDB的設計暖哨。
MongoDB能對文檔進行動態(tài)填充(dynamic padding),也能預分配數據文件以利用
額外的空間來換取穩(wěn)定的性能凰狞。MongoDB把竟可能多的內存做緩存(cache),
試圖在各方面都保持他的卓越性能篇裁。

四、MongoDB 不提供

MongoDB 不提供連接(join)和復雜的多行事務(multirow trasaction).
省略這些功能是出于架構上的考慮赡若,因為在分布式系統(tǒng)中這兩個功能難以高效的實現

五达布、MongoDB 存儲的特點

  • 文檔的鍵是字符串。

  • 鍵不能含有\(zhòng)0(空字符串)逾冬。這個字符用于表示鍵的結尾

  • .和$具有特殊意義

  • MongoDB 的文檔不能有重復的鍵黍聂。下面的文檔就是非法的

{ "greeting": "Hello, world!", "greeting": "Hello, MongoDB!" }

  • 文檔中的鍵/值對是有序的

{ "x": 1, "y": 2 } 與 { "y": 2, "x": 1 } 是不同的

六、MySQL 與 MongoDB 的映射

MySQL MongoDB
db(tables) db(collections)

table collection

record document

七粉渠、動態(tài)模式

集合是動態(tài)的分冈。這意味著一個集合里面的文檔可以是各種各樣的。
例如霸株,下面兩個文檔可以存儲在同一個集合里面

{ "greeting": "Hello, world!" }
{ "foo" : 5 }

但還是有必要設計多個集合

  • 查詢簡單雕沉。

  • 磁盤尋道操作更少。

  • 創(chuàng)建索引去件,使用文檔的附加結構坡椒。一個集合中只放入一種類型的文檔扰路,可以更有效地
    對集合進行索引。

八倔叼、命名

集合不能出現以下情況

1汗唱、不能為空字符串
2、不能包含\0字符
3丈攒、不能以system.開頭
4哩罪、不能包含$

九、子集合

組織集合的一種慣例是使用“.”分隔不同命名空間的自己合巡验。
例如际插,一個具有博客功能的應用可能包含兩個集合,分別是
blog.posts 和 blog.authors 這是為了使組織結構更加清晰显设。
這里的blog集合(這個集合甚至不需要存在)跟它的子集合
沒有任何關系

十框弛、數據庫命名限制

  • 不能是空字符串。
  • 不能還有特殊符號, 可以使用- 或 _捕捂。數字或字母瑟枫。
  • 區(qū)分大小寫。
  • 最多64位指攒。

如果要使用cms數據庫中的blog.posts集合,這個結合的命名空間
就是cms.blog.posts慷妙。命名空間的長度不得超過121個字節(jié)

十一、MongoDB 啟動

 使用 mongod 啟動

mongod 在沒有參數的情況下會適用默認數據目錄/data/db幽七。
如果數據目錄不存在或者不可寫景殷,服務器會啟動失敗。

MongoDB 監(jiān)聽27017 端口澡屡。

MongoDB還會啟動一個非吃持浚基本的HTTP服務器,監(jiān)聽數字比主
端口號高1000的端口驶鹉,也就是28017 端口绩蜻。這意味著,通過瀏覽器
訪問http://localhost:28017 能獲取數據庫的管理信息室埋。

十二办绝、MongoDB shell簡介

MongoDB 自帶JavaScript shell, 可在shell中適用命令行
能運行任意JavaScript程序。

十三姚淆、MongoDB 的CRUD

  • 創(chuàng)建
  > post = {
    "title"   : "My Blog Post",
    "content" : "Here1s my blog post",
    "date"    : new Date()
  }

db.blog.insert(post)

  • 查詢

  > db.blog.find()

  or

  > db.blog.findOne()
  • 更新

  > post.comments = []

  > db.blog.update({ title : "My Blog Post"}, post)

  • 刪除

使用remove 方法可將文檔從數據庫中永遠刪除孕蝉。
如果沒有使用任何參數,它將集合內的所有文檔全部刪除腌逢。
它可以接受一個作為限定條件的文檔作為參數降淮。

> db.blog.remove({title: "My Blog Post"})

十四、數據類型

  • null

  { "x" : null }

  • 布爾型
  { "x" : true }
  • 數值

  { "x" : 3.14 }
  { "x" : NumberInt("3")}
  { "x" : NumberLong("3") }

  • 字符串

  { "x" : "foobar" }

  • 日期

毫秒數


  { "x" : new Date() }

  • 正則表達式

{ "x" : /foobar/i }

  • 數組

  { "x": ["a", "b", "c"]}

  • 內嵌文檔

  {"x": {"foo" : "bar"}}

  • _id

  { "x" : ObjecteId() }

  • 二進制數據

所以可以存儲任何的文件

  • 甚至代碼

{ "x" : function() { /* ... */ } }

參考 《MongoDB 權威指南》

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末搏讶,一起剝皮案震驚了整個濱河市佳鳖,隨后出現的幾起案子霍殴,更是在濱河造成了極大的恐慌,老刑警劉巖系吩,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件来庭,死亡現場離奇詭異,居然都是意外死亡穿挨,警方通過查閱死者的電腦和手機月弛,發(fā)現死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來科盛,“玉大人尊搬,你說我怎么就攤上這事⊥晾裕” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵幌墓,是天一觀的道長但壮。 經常有香客問我,道長常侣,這世上最難降的妖魔是什么蜡饵? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮胳施,結果婚禮上溯祸,老公的妹妹穿的比我還像新娘。我一直安慰自己舞肆,他們只是感情好焦辅,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著椿胯,像睡著了一般筷登。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上哩盲,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天前方,我揣著相機與錄音,去河邊找鬼廉油。 笑死惠险,一個胖子當著我的面吹牛,可吹牛的內容都是我干的抒线。 我是一名探鬼主播班巩,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼十兢!你這毒婦竟也來了趣竣?” 一聲冷哼從身側響起摇庙,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎遥缕,沒想到半個月后卫袒,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡单匣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年夕凝,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片户秤。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡码秉,死狀恐怖,靈堂內的尸體忽然破棺而出鸡号,到底是詐尸還是另有隱情转砖,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布鲸伴,位于F島的核電站府蔗,受9級特大地震影響,放射性物質發(fā)生泄漏汞窗。R本人自食惡果不足惜姓赤,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望仲吏。 院中可真熱鬧不铆,春花似錦、人聲如沸裹唆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽许帐。三九已至岖食,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間舞吭,已是汗流浹背泡垃。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留羡鸥,地道東北人蔑穴。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像惧浴,于是被迫代替她去往敵國和親存和。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容