MongoDB 資料庫詳解,以及 MongoDB4.0版本的安裝

來源:互聯網
上載者:User

標籤:結構   資料庫   存取控制   對象   多級   應用   tap   分配   資料   

MongoDB 簡介

MongDB 是一款跨平台,面向文檔的資料庫,可以實現高效能,高可用性,並且能夠輕鬆擴充,是一個基於分布式檔案儲存體的開來源資料庫系統。在高負載的情況下,添加更多的節點,可以保證伺服器效能。
MongoDB 也是一個介於關聯式資料庫和非關聯式資料庫之間的產品,是非關聯式資料庫當中功能最豐富,最像關聯式資料庫的。不採用關聯式模式主要是為了獲得更好的拓展性,MongoDB 不再有“行”(row)的概念,其運行方式主要基於兩個概念:集合(collection)與文檔(document)。

MongoDB 的特點
  • MongoDB 的特點包括面向集合儲存、模式自由、豐富的查詢語句和多級索引、複製集機制、易於水平拓展、可插入儲存引擎、跨平台多語言支援等。
  • MongoDB 安裝簡單,提供了面向文檔儲存功能,操作起來比較容易上手。
  • MongoDB 提供了複製、高可用性和自動分區功能。如果負載增加(需要更多的儲存空間和更強的處理能力),它可以分布在電腦網路中的其他節點上,這就是所謂的分區。
  • Mongo 支援豐富的查詢運算式。查詢指令使用 JSON 形式的標記,可輕易查詢文檔中內嵌的對象及數組。
  • MongoDB 支援各種程式設計語言:Ruby、Python、Java、C++、PHP、C# 等各種語言。
MongoDB 適用領域

MongoDB 可以為 Web 應用程式提供可拓展的高效能資料儲存解決方案。MongoDB 主要適用領域有網站資料、分布式情境、資料緩衝和 JSON 文檔格式儲存。適合大資料量、高並發、弱事務的互連網應用,其內建的水平拓展機制提供了從幾百萬到十億層級的資料處理能力,可以很好地滿足 Web2.0 和移動互連網應用資料存放區的要求。

MongoDB 4.0 的安裝

MongoDB 提供了 Linux 平台上的安裝包,可以從官方網站 http://www.mongodb.org/downloads 下載。本次我們選擇使用最新版 MongoDB4.0 來安裝並實驗。

  • 下載 MongoDB4.0 軟體包

    wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.0.tgztar zxvf mongodb-linux-x86_64-4.0.0.tgz -C /optmv /opt/mongodb-linux-x86_64-4.0.0/ /usr/local/mongodb
  • 建立MongoDB 的資料存放區目錄,日誌儲存目錄,設定檔
    # mkdir /data/mongodb1# mkdir /data/logs/mongodb# touch /data/logs/mongodb/mongodb1.log# chmod -R 777 /data/logs/mongodb/mongodb1.log# vim /usr/local/mongodb/mongodb1.conf  //添加下面的行dbpath=/data/mongodb1    #資料存放區目錄logpath=/data/logs/mongodb/mongodb1.log    #記錄檔port=27017    #預設伺服器連接埠logappend=true    #使用追加方式寫日誌fork=true    #後台運行maxConns=5000  #最大同時串連數,預設2000storageEngine=mmapv1    #指定儲存引擎為記憶體對應檔

設定核心參數

echo 0 > /proc/sys/vm/zone_reclaim_modesysctl -w vm.zone_reclaim_mode=0    #永久設定echo never > /sys/kernel/mm/transparent_hugepage/enabledecho never > /sys/kernel/mm/transparent_hugepage/defrag
  • 設定系統內容變數,方便使用

    echo ‘export MONGODB_HOME=/usr/local/mongodb‘ >> /etc/profileecho ‘export PATH=$PATH:$MONGODB_HOME/bin‘ >> /etc/profilesource /etc/profile
  • 啟動 mongodb 服務進程,查看連接埠(預設27017)

    mongod --config /usr/local/mongodb/mongodb1.conf  #開啟MongoDBmongod --config /usrlocal/mongodb/mongodb1.conf --shutdown  #停止MongoDBnetstat -ntap | grep mongodmongo --port 27017# 進入mongo資料庫,若是不指定連接埠預設進27017連接埠
  • 建立多執行個體
    在單台伺服器資源充分的情況下,可以使用多執行個體,以便充分使用伺服器資源(只需要修改資料存放區目錄、記錄檔及連接埠號碼並建立相應目錄即可)
    cd /usr/local/mongodb/cp mongodb1.conf mongodb2.confvim mongodb2.conf   #修改如下# dbpath=/data/mongodb2    #資料存放區目錄# logpath=/data/logs/mongodb/mongodb2.log    #記錄檔# port=27018    #預設伺服器連接埠# logappend=true    #使用追加方式寫日誌# fork=true    #後台運行# maxConns=5000  #最大同時串連數,預設2000# storageEngine=mmapv1    #指定儲存引擎為記憶體對應檔mkdir /data/mongodb2touch /data/logs/mongodb/mongodb2.logchmod -R 777 /data/logs/mongodb/mongodb2.logmongod --config /usr/local/mongodb/mongodb2.conf  #開啟多執行個體
MongoDB 邏輯儲存結構

MongoDB 的邏輯結構主要由文檔(document)、集合(collection)和資料庫(database)三部分組成。其中文檔是 MongoDB 的核心概念,它是 MongoDB 邏輯儲存的最小單元,相當於關係型資料庫中的一行記錄,多個文檔組成集合,集合相當於關係型資料庫中的表的概念,多個幾個組成資料庫。

SQL 術語/概念 MongoDB 術語/概念 解釋/說明
database database 資料庫
table collection 資料庫表/集合
row document 資料記錄行/文檔
column field 資料欄位/域
index index 索引
table joins 表串連,MongoDB不支援
primary key primary key 主鍵,MongoDB自動將 _id欄位設定為主鍵
MongoDB 基本操作
  • 登入、退出

    #本地登入(預設執行個體連接埠號碼:--port=27017,可以不寫)> mongo#登入遠程主機的執行個體> mongo --host 192.168.1.2 --port =27017#退出MongoDB> exit
  • 資料庫操作

    #建立資料庫(如果資料庫不存在,則建立資料庫,否則切換到指定資料庫)> use school#查看所有資料庫> show dbs#刪除school資料庫> use school> db.dropDatabase()#顯示資料庫操作命令> db.help()
  • 集合
    MongoDB 的資料儲存在集合中,所有儲存在集合中的資料都是 Binary JSON 格式,簡稱 BSON。BSON 是一種類似於 JSON 的二進位形式的儲存格式。

    #建立info集合> db.createcollection(‘info‘)#查看集合方法一:> show tabels方法二:> show colletctions#顯示info集合操作命令> db.info.help()
  • 文檔(增、刪、改、查)
    插入
    #插入一條記錄> db.info.insert({"id":1,"name":"jack","hobby":["game","talk","sport"]})#向指定集合中插入一條文檔資料> db.collection.insertOne()#向指定集合中插入多條文檔資料> db.collection.insertMany()#通過迴圈批量插入資料> for(var i=1;i<100;i++)db.info.insert({"id":i,"name":"jack"+i})

    刪除

    #刪除info集合中id=1的文檔> db.info.remove({"id":"1"})

    修改

    #修改info集合id=1的name值為"zhangsan"文檔db.info.update({"id":"1"},{$set:{"name":"wzn"}})

    查詢

    #查詢info集合所有文檔> db.info.find()#查詢info集合id為1的文檔> db.info.findOne({id:1})#統計記錄數> db.info.count()
備份、恢複資料庫
  • 匯入匯出
  • 匯出:mongoexport
  • 匯入:mongoimport
  • 選項: -d 指定資料庫名稱;-c 指定集合名稱;-f 指定匯出哪些列;-o 指定要匯出的檔案名稱;-q:指定匯出資料的過濾條件。具體命令通過 --help 查看。
  • 備份與恢複
  • 備份:mongodump
  • 恢複:mongorestore
  • 選項:
    1 : -h 指定Mongodb所在伺服器的地址也可以指定連接埠。(例:-h 127.0.0.1:27017)
    2 : -d :需要備份的資料庫執行個體。
    3 : -o :備份資料存放的目錄 該目錄需提前建立。

  • 複製資料庫

    > db.copyDatabase("db1","db2")     //複製資料庫db1 到db2 中
  • 複製集合
  • 把資料庫 db1 的 info 集合複製到執行個體連接埠:27018
    # mongo --port 27018# db.runCommand({"cloneCollection":"db1.info","from":"localhost:27017"}) 
MongoDB 安全管理

MongoDB 安全管理主要包括 MongoDB 的安全存取控制以及使用者權限分配。

  • 限定監聽特定 IP 和連接埠

    # vim /usr/local/mongodb/mongodb1.conf# 只綁定內網卡地址bind_ip=localhost(ip)# 只監聽指定的連接埠port=27017
  • 授權啟動
  • 內建資料庫使用者:read、readWrite
  • 資料庫管理角色:dbAdmin、dbOwner、userAdmin
  • 超級使用者角色:root

    #在db1資料庫建立超級使用者root,密碼:123123> use db1> db.createUser({"user":"root","pwd":"123123","roles":["root"]})> exit##關閉 mongodb 服務mongod -f /usr/local/mongodb/mongodb1.conf --shutdown## 使用帶認證參數的方式啟動 mongodb 服務mongod -f /usr/local/mongodb/mongodb1.conf --auth## 此時查詢資料不顯示內容,需要進行授權認證> use db1> db.auth("root":"123123")## 當然,實際情況中,我們可以修改設定檔,#這樣別人在訪問我們的 MongoDB 時,我們可以指定一個有相應許可權的使用者給他進行登入並操作vim /usr/local/mongodb/mongodb1.confauth=true    //添加
  • 進程管理
  • 查看當前正在啟動並執行進程(擷取高消耗資源的進程opid)
    > db.currentOp()
  • 終止正在啟動並執行高消耗資源的進程(括弧內跟上面擷取到的opid值)
    > db.killOp(opid)
MongoDB 監控
  • 查看資料庫執行個體的狀態資訊
    > db.serverStatus()
  • 查看當前資料庫的統計資訊
    > db.status()
  • 查看集合統計資訊
    > db.users.status()
  • 查看集合大小
    > db.users.dataSize()
  • 此外,我們可以通過 Web 介面查看系統監控資訊,只需要修改設定檔

    # vim /usr/local/mongodb/mongodb1.confhttpinterface=true    //添加

    通過 Web 頁面可以看到:
    1)當前 MongoDB 的所有串連
    2)各個資料庫和集合的訪問統計,包括:Reads、Writes、Queries、GetMores、Inserts、Updates、Removes
    3)寫鎖的狀態
    4)記錄檔的最後幾百行
    5)所有的 MongoDB 命令

  • 第三方監控工具
    我們可以通過 Nagios 中配置使用 MongoDB 外掛程式來監控 MongoDB 資料庫。

MongoDB 資料庫詳解,以及 MongoDB4.0版本的安裝

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.