132MongoDB 數(shù)據(jù)庫入門實戰(zhàn)--MongoDB 簡介與安裝

數(shù)據(jù)庫簡介

數(shù)據(jù)庫簡單而言就是一個存放數(shù)據(jù)的倉庫蝇裤。這個倉庫是按照一定的數(shù)據(jù)結(jié)構來組織践付、存儲的秦士,我們可以通過數(shù)據(jù)庫提供的多種方式來管理數(shù)據(jù)庫里的數(shù)據(jù)。
數(shù)據(jù)庫歷史悠久永高,分類繁多隧土,功能各異。目前來看命爬,大體可以分為兩類:關系型數(shù)據(jù)庫和非關系型數(shù)據(jù)庫曹傀。
關系型數(shù)據(jù)庫
關系型數(shù)據(jù)庫模型是把復雜的數(shù)據(jù)結(jié)構歸結(jié)為簡單的二元關系,即二維表格形式:有行和列的概念饲宛。在關系數(shù)據(jù)庫中皆愉,對數(shù)據(jù)的操作幾乎全部建立在一個或多個關系表格上,通過對這些關聯(lián)表的表格分類艇抠、合并幕庐、連接或選取等運算來實現(xiàn)數(shù)據(jù)的管理。
其中的典型代表就是 MySQL 和 Oracle 练链,后者所屬的美國甲骨文軟件系統(tǒng)公司每年憑借該產(chǎn)品可創(chuàng)造數(shù)百億美元的市場價值翔脱。
非關系型數(shù)據(jù)庫
非關系型數(shù)據(jù)庫也被稱為 NoSQL 數(shù)據(jù)庫。NoSQL 的本意是 Not Only SQL 媒鼓,意為 “不僅僅是 SQL” 届吁,并非 “不是 SQL” 错妖。因此,NoSQL 的產(chǎn)生并不是要與關系型數(shù)據(jù)庫對立疚沐,而是作為傳統(tǒng)關系型數(shù)據(jù)庫的一個補充暂氯。NoSQL 數(shù)據(jù)庫在特定的場景下可以發(fā)揮出難以想象的高效率和高性能。
相比關系型數(shù)據(jù)庫亮蛔,NoSQL 存儲數(shù)據(jù)時不支持太多約束痴施,且各個文檔集合之間沒有緊密聯(lián)系,尤其擅長超大規(guī)模數(shù)據(jù)的存儲究流。
隨著互聯(lián)網(wǎng) Web2.0 動態(tài)網(wǎng)站的興起辣吃,傳統(tǒng)的關系型數(shù)據(jù)庫在應付規(guī)模日益擴大的海量數(shù)據(jù)時會顯得力不從心,暴露了很多難以克服的問題芬探,傳統(tǒng)的關系型數(shù)據(jù)庫 IO 瓶頸神得、性能瓶頸都難以有效突破。于是開始出現(xiàn)了大批針對特定場景偷仿、以高性能和使用便利為目的的功能特異化的數(shù)據(jù)庫產(chǎn)品哩簿。NoSQL 數(shù)據(jù)庫就是在這樣的情景中誕生并得到了非常迅速的發(fā)展。NoSQL 不將數(shù)據(jù)的一致性作為重點酝静,或者是作為次重點节榜。
我們的課程要講解的就是非關系型數(shù)據(jù)庫的典型代表 MongoDB 數(shù)據(jù)庫。

MongoDB 簡介

MongoDB 是由 C++ 語言編寫的别智,是一個基于分布式文件存儲的開源數(shù)據(jù)庫系統(tǒng)宗苍。在高負載的情況下,添加更多的節(jié)點可以保證服務器性能亿遂。MongoDB 旨在為 Web 應用提供可擴展的高性能數(shù)據(jù)存儲解決方案浓若。
MongoDB 將數(shù)據(jù)存儲為一個文檔,數(shù)據(jù)結(jié)構由 Key-Value 鍵值對組成蛇数。MongoDB 文檔類似于 JSON 對象,字段值可以包含其它文檔是越、數(shù)組耳舅,如下圖所示:


image.png

其中的 Value 支持多種數(shù)據(jù)類型,包括 Double 倚评、String 浦徊、Object 、Array 天梧、Date 等等盔性。
MongoDB 是一個介于關系數(shù)據(jù)庫和非關系數(shù)據(jù)庫之間的數(shù)據(jù)存儲工具,是非關系數(shù)據(jù)庫當中功能最豐富呢岗、最像關系型數(shù)據(jù)庫的冕香。它支持的數(shù)據(jù)結(jié)構非常松散蛹尝,是類似 json 的 bson 格式,因此可以存儲比較復雜的數(shù)據(jù)類型悉尾。MongoDB 最大的特點是支持的查詢語言非常強大突那,其語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關系數(shù)據(jù)庫單表查詢的絕大部分功能构眯,而且還支持對數(shù)據(jù)建立索引愕难。MongoDB 是一個面向文檔集合的、模式自由的非關系型數(shù)據(jù)庫惫霸。

特點和適用場景

MongoDB 的主要特點如下:
是一個面向文檔存儲的數(shù)據(jù)庫猫缭,操作起來比較簡單和容易。
支持設置任何屬性的索引以實現(xiàn)更快的排序和查詢操作壹店。
可以通過本地或者網(wǎng)絡創(chuàng)建數(shù)據(jù)鏡像猜丹,這使得 MongoDB 有更強的擴展性。
分布式設計茫打,支持增加節(jié)點以提升存儲空間居触。
支持豐富的查詢表達式,查詢指令使用 JSON 形式的標記老赤,可輕易查詢文檔中內(nèi)嵌的對象及數(shù)組轮洋。
Map/Reduce 用來對數(shù)據(jù)進行批量處理和聚合操作。
GridFS 用于存放大量小文件抬旺。
允許在服務端執(zhí)行腳本弊予,可以用 Javascript 編寫某個函數(shù),直接在服務端執(zhí)行开财,也可以把函數(shù)的定義存儲在服務端汉柒,下次直接調(diào)用即可。
支持 Ruby 责鳍、Python 碾褂、Java 、C++ 历葛、PHP 正塌、C# 等多種編程語言。

MongoDB 的使用場景:
網(wǎng)站數(shù)據(jù):MongoDB 非常適合實時的插入恤溶、更新與查詢數(shù)據(jù)乓诽,并具備網(wǎng)站實時數(shù)據(jù)存儲所需的復制及高度伸縮性。
緩存:由于性能很高咒程,MongoDB 也適合作為信息基礎設施的緩存層鸠天。在系統(tǒng)重啟之前,由 MongoDB 搭建的持久化緩存層可以避免下層的數(shù)據(jù)源過載帐姻。
大尺寸稠集,低價值的數(shù)據(jù):使用傳統(tǒng)的關系型數(shù)據(jù)庫存儲一些數(shù)據(jù)時可能會比較昂貴奶段,在此之前,很多時候程序員往往會選擇傳統(tǒng)的文件進行存儲巍杈。
高伸縮性的場景:MongoDB 非常適合由數(shù)十或數(shù)百臺服務器組成的數(shù)據(jù)庫忧饭。MongoDB 的路線圖中已經(jīng)包含對 MapReduce 引擎的內(nèi)置支持。
用于對象及 JSON 數(shù)據(jù)的存儲:MongoDB 的 BSON 數(shù)據(jù)格式非常適合文檔化格式的存儲及查詢筷畦。

安裝 MongoDB

MongoDB 數(shù)據(jù)庫在 2007 年 10 月由 10gen 團隊所創(chuàng)建词裤,在 2009 年 2 月首度推出。其中 10gen 是專門創(chuàng)建和維護 MongoDB 數(shù)據(jù)庫的著名團隊鳖宾。
截止 2020 年 2 月吼砂,最新的版本是 MongoDB4.2 ,可以根據(jù)自己所使用的操作系統(tǒng)在官網(wǎng)上安裝最新版本鼎文。官方下載地址:https://docs.mongodb.com/manual/administration/install-community/ 渔肩。

image.png

在我們的實驗環(huán)境中已經(jīng)安裝了比較領先的 MongoDB4.0 版本,無需升級即可學習本課程拇惋。
打開實驗環(huán)境周偎,在終端命令行執(zhí)行 which mongo 命令可以找到它的可執(zhí)行文件的絕對路徑,這也證明了實驗環(huán)境中已經(jīng)安裝 MongoDB :

shiyanlou:project/ $ cd
shiyanlou:~/ $ which mongo
/usr/bin/mongo
shiyanlou:~/ $

執(zhí)行 mongo --version 命令查看版本:

shiyanlou:~/ $ mongo --version
MongoDB shell version v4.0.12
git version: 5776e3cbf9e7afe86e6b29e22520ffb6766e95d4
OpenSSL version: OpenSSL 1.0.2g  1 Mar 2016
allocator: tcmalloc
modules: none
build environment:
    distmod: ubuntu1604
    distarch: x86_64
    target_arch: x86_64
shiyanlou:~/ $

啟動 MongoDB 服務

執(zhí)行如下命令查看服務狀態(tài)和啟動服務:

$ sudo service mongodb status     # 查看服務狀態(tài)
$ sudo service mongodb start    # 啟動服務

操作截圖如下:


image.png

啟動服務成功撑帖,終端執(zhí)行 mongo 命令即可進入交互式客戶端:


image.png

查看數(shù)據(jù)庫

在交互客戶端中可以查看已有的數(shù)據(jù)庫蓉坎,執(zhí)行 show databases 命令:

> show databases
admin   0.000GB
config  0.000GB
local   0.000GB
>

如上所示,這是 MongoDB 自帶的三個關于配置信息和權限管理的數(shù)據(jù)庫胡嘿,不要輕易修改或刪除它們蛉艾。打印信息有兩列,第一列為數(shù)據(jù)庫名字衷敌,第二列為數(shù)據(jù)庫占用的存儲空間勿侯。
查看數(shù)據(jù)庫的命令可以簡寫為 show dbs :

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
>
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市缴罗,隨后出現(xiàn)的幾起案子助琐,更是在濱河造成了極大的恐慌,老刑警劉巖面氓,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弓柱,死亡現(xiàn)場離奇詭異,居然都是意外死亡侧但,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門航罗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來禀横,“玉大人,你說我怎么就攤上這事粥血“爻” “怎么了酿箭?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長趾娃。 經(jīng)常有香客問我缭嫡,道長,這世上最難降的妖魔是什么抬闷? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任妇蛀,我火速辦了婚禮,結(jié)果婚禮上笤成,老公的妹妹穿的比我還像新娘评架。我一直安慰自己,他們只是感情好炕泳,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布纵诞。 她就那樣靜靜地躺著,像睡著了一般培遵。 火紅的嫁衣襯著肌膚如雪浙芙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天籽腕,我揣著相機與錄音嗡呼,去河邊找鬼。 笑死节仿,一個胖子當著我的面吹牛晤锥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播廊宪,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼矾瘾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了箭启?” 一聲冷哼從身側(cè)響起壕翩,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎傅寡,沒想到半個月后放妈,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡荐操,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年芜抒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片托启。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡宅倒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出屯耸,到底是詐尸還是另有隱情拐迁,我是刑警寧澤蹭劈,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站线召,受9級特大地震影響铺韧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜缓淹,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一哈打、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧割卖,春花似錦前酿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至丙挽,卻和暖如春肺孵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背颜阐。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工平窘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人凳怨。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓瑰艘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親肤舞。 傳聞我的和親對象是個殘疾皇子紫新,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容