MongoDB數(shù)據(jù)庫部署環(huán)境準備及使用介紹
一、MongoDB 簡介
MongoDB 是由 C++ 語言編寫的,是一個基于分布式文件存儲的非關(guān)系型開源數(shù)據(jù)庫系統(tǒng)。其優(yōu)勢在于可以存放海量數(shù)據(jù),具備強大的查詢功能,是一個獨立的面向集合文檔形式的。
應(yīng)用平臺:MongoDB 支持 Unix Linux Windows 等系統(tǒng)平臺。
MySQL 與 MongoDB 區(qū)別:
| MySQL | 數(shù)據(jù)庫 | 數(shù)據(jù)表 | 數(shù)據(jù) |
|---|---|---|---|
| MongDB | 數(shù)據(jù)庫 | 集合 | 文檔 |
1.MongoDB 特點
存儲性:
面向集合:數(shù)據(jù)被分組存儲在數(shù)據(jù)集中,被稱為一個集合。
面向文檔:存儲在集合中的文檔,被存儲為鍵值對的形式。
高效二進制數(shù)據(jù)存儲:使用二進制格式存儲,可以保存任何類型的數(shù)據(jù)對象。
操作性:
完全索引:可以在任意屬性上建立索引,包含內(nèi)部對象。以提高查詢的速度。
強大的聚合工具:MongoDB 除了提供豐富的查詢功能外,還提供了強大的聚合工具,如 count group 等。
支持 Perl PHP Java C# JavaScript Ruby Python C 和 C++ 語言的驅(qū)動程序。
可用性:
支持復制和數(shù)據(jù)恢復:MongoDB 支持主從復制機制,可以實現(xiàn)數(shù)據(jù)的備份、故障恢復、讀擴展等功能。而基于副本集的復制機制提供了自動故障恢復的功能,確保了集群數(shù)據(jù)不會丟失。
自動處理分片:MongoDB 支持集群自動切分數(shù)據(jù),對數(shù)據(jù)進行切分可以使用集群存儲更多的數(shù)據(jù),實現(xiàn)更大的負載,也能保證存儲的負載均衡。
2.MongoDB 適用場景
網(wǎng)站實時數(shù)據(jù)處理:它非常適合實時的插入、更新與查詢,并具備網(wǎng)站實時數(shù)據(jù)存儲所需的復制及高伸縮性。
緩存:它適合作為信息基礎(chǔ)設(shè)施的緩存層。在系統(tǒng)重啟之后,由它搭建的持久化緩存層可以避免下層的數(shù)據(jù)源過載。
高伸縮性的場景:非常適合由數(shù)十臺或數(shù)百臺服務(wù)器組成的數(shù)據(jù)庫。
不適用于的場景如下:
要求高度事務(wù)性的系統(tǒng)(例如:銀行和會計系統(tǒng))傳統(tǒng)的商業(yè)只能應(yīng)用。復雜的跨文檔(表)級聯(lián)查詢。
3.MongoDB 存儲結(jié)構(gòu)
邏輯結(jié)構(gòu):
文檔 document:存放的數(shù)據(jù)。
集合 collection:由多個文檔組成,相當于表,但不同的是集合是無固定架構(gòu)。
數(shù)據(jù)庫 database:多個集合組成的數(shù)據(jù)庫。
物理結(jié)構(gòu):
.wt 文件:每個表或索引對應(yīng)一個命名空間,數(shù)據(jù)量增加,文件數(shù)量增多,存儲了分配和正在使用的磁盤空間。
數(shù)據(jù)文件:存放數(shù)據(jù)的實體,并且使用預(yù)分配空間機制。
日志文件:系統(tǒng)日志文件、journal 日志文件(用于 MongoDB 崩潰恢復的保障)、oplog 復制操作日志文件(相當于 MySQL 的 BinLog 文件)、慢查詢?nèi)罩荆ú樵儾僮鞒鲋付〞r間的語句)
物理結(jié)構(gòu)就是真正存放數(shù)據(jù)的位置。
4.MongoDB 數(shù)據(jù)類型

二、部署 MongoDB 數(shù)據(jù)庫應(yīng)用
| 主機名 | 操作系統(tǒng) | IP 地址 | 版本 |
|---|---|---|---|
| MongoDB | CentOS 7.4 | 192.168.1.1 | mongodb-linux-x86_64-rhel70-4.4.5.tgz |
1.準備系統(tǒng)環(huán)境
[root@MongoDB ~]# ulimit -n 25000 # 同一時間最多開啟的文件數(shù) [root@MongoDB ~]# ulimit -u 25000 # 用戶最多開啟的程序數(shù)目 [root@MongoDB ~]# echo 0 > /proc/sys/vm/zone_reclaim_mode # 設(shè)置內(nèi)核參數(shù). 當某個節(jié)點內(nèi)存不足時可以借用其它節(jié)點的內(nèi)存 [root@MongoDB ~]# sysctl -w vm.zone_reclaim_mode=0 vm.zone_reclaim_mode = 0 [root@MongoDB ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled [root@MongoDB ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
因為下面安裝的版本為 4.4.5,而 MongoDB 4 版本以上的 /bin 目錄中的工具進行了分離,所以需要安裝:傳送門

[root@MongoDB ~]# tar xf mongodb-database-tools-rhel70-x86_64-100.3.1.tgz
2.安裝 MongoDB
[root@MongoDB ~]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.5.tgz [root@MongoDB ~]# tar xf mongodb-linux-x86_64-rhel70-4.4.5.tgz [root@MongoDB ~]# mv mongodb-linux-x86_64-rhel70-4.4.5 /usr/local/mongodb [root@MongoDB ~]# mv mongodb-database-tools-rhel70-x86_64-100.3.1/bin/* /usr/local/mongodb/bin/ [root@MongoDB ~]# echo "export PATH=/usr/local/mongodb/bin:\$PATH" >> /etc/profile [root@MongoDB ~]# source /etc/profile
3.創(chuàng)建 MongoDB 存儲目錄以及配置文件
[root@MongoDB ~]# mkdir /usr/local/mongodb/{data,logs,conf}
[root@MongoDB ~]# touch /usr/local/mongodb/logs/mongodb.log
[root@MongoDB ~]# chmod 777 /usr/local/mongodb/logs/mongodb.log
[root@MongoDB ~]# cat <<END > /usr/local/mongodb/conf/mongodb.conf
bind_ip=192.168.1.1
port=27017
dbpath=/usr/local/mongodb/data/
logpath=/usr/local/mongodb/logs/mongodb.log
logappend=true # 日志以文件追加的方式寫入
fork=true # 通過后臺運行 MongoDB 服務(wù)
maxConns=5000 # MongoDB 最大連接數(shù)
END
4.編寫服務(wù)啟動腳本
[root@MongoDB ~]# mongod -f /usr/local/mongodb/conf/mongodb.conf # 啟動 MongoDB 服務(wù) [root@MongoDB ~]# mongo 192.168.1.1:27017 # 登錄驗證 [root@MongoDB ~]# mongod -f /usr/local/mongodb/conf/mongodb.conf --shutdown # 關(guān)閉 MongoDB 服務(wù) [root@MongoDB ~]# vim /etc/init.d/mongodb #!/bin/bash case "$1" in start) /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf;; stop) /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf --shutdown;; restart) /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf --shutdown /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf;; esac [root@MongoDB ~]# chmod +x /etc/init.d/mongodb # 添加執(zhí)行權(quán)限 [root@MongoDB ~]# /etc/init.d/mongodb start # 啟動
登錄驗證
[root@MongoDB ~]# mongo 192.168.1.1:27017 # 登錄 MongoDB 數(shù)據(jù)庫 (默認在 test 庫中) > show databases # 查看數(shù)據(jù)庫中所有庫 admin 0.000GB config 0.000GB local 0.000GB > db.getName() # 查看當前登錄庫 test
MongoDB 安裝完后的默認 4 個庫:
admin:存放了有關(guān)數(shù)據(jù)庫賬號的相關(guān)信息。
config:用于分片集群環(huán)境,存放分片相關(guān)的元數(shù)據(jù)信息。
local:用于存儲限于本地單臺服務(wù)器的任意集合(因為該庫并不會被復制到從節(jié)點,簡單來說就是沒有冗余性)
test:MongoDB 默認創(chuàng)建的一個測試庫,連接 MongoDB 服務(wù)時,如果不指定連接的具體數(shù)據(jù)庫,默認就會連接到 test 庫。
以上就是MongoDB數(shù)據(jù)庫部署環(huán)境準備及使用介紹的詳細內(nèi)容,更多關(guān)于MongoDB數(shù)據(jù)庫部署環(huán)境準備的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MongoDB執(zhí)行mongoexport時的異常及分析(數(shù)字類型的查詢)
這篇文章主要給大家介紹了關(guān)于MongoDB執(zhí)行mongoexport時的異常及分析(數(shù)字類型的查詢)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧2018-09-09
利用mongodb查詢某坐標是否在規(guī)定多邊形區(qū)域內(nèi)的方法
這篇文章主要介紹了利用mongodb如何查詢某坐標是否在固定多邊形區(qū)域內(nèi)的方法,文中給出了詳細示例代碼,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-02-02
mongodb eval 執(zhí)行服務(wù)器端腳本
在MongoDB的服務(wù)器端可以通過db.eval函數(shù)來執(zhí)行javascript腳本,如我們可以定義一個javascript函數(shù),然后通過db.eval在服務(wù)器端來運行!我們前面其實也接觸過在服務(wù)器段運行一個預(yù)定義的javascript腳本的情況,如在$where查詢,執(zhí)行mapreduce任務(wù)等。2015-05-05

