MongoDB基礎(安裝及多實例)
MongoDB是一跨平臺、面向文檔的數據庫。可以實現高性能、高可用性,並且能夠輕松擴展。是一個基於分布式文件存儲的開源數據庫系統,在高負載的情況下,添加更多的節點,可以保證服務器性能。
MongoDB也是一個介於關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。不采用關系模型主要是為了獲得更好的擴展性,MongoDB不再有“行”(row)的概念,其運行方式主要基於兩個概念:集合(collection)與文檔(document)。
MongoDB的特點
MongoDB的特點包括面向集合存儲、模式自由、豐富的查詢語句和多級索引、復制集機制、易於水平擴展、可插入存儲引擎、跨平臺多語言支持等。
MongoDB提供了復制、高可用性和自動分片功能。如果負載增加(需要更多的存儲空間和更強的處理能力),它可以分布在計算機網絡中的其他節點上,這就是所謂的分片。
MongoDB支持豐富的查詢表達式。查詢指令使用JSON形式的標記,可輕易查詢文檔中內嵌的對象及數組。
MongoDB支持各種變成語言:Ruby、Python、Java、C++、PHP、C#等多種語言。
MongoDB適用領域
MongoDB可以為WEB應用提供可擴展的高性能數據存儲解決方案。MongoDB主要適用領域有網站數據、分布式場景、數據緩存和JSON文檔格式存儲。適合大數據量、高並發、弱事務的互聯網應用,其內置的水平擴展機制提供了幾百萬到十億級別的數據處理能力,可以很好的滿足Web2.0和移動互聯網應用數據存儲的要求。
MongoDB常用術語及說明
SQL術語 | MongoDB術語 | 解釋/說明 |
---|---|---|
database | database | 數據庫 |
table | collection | 數據庫表/集合 |
row | document | 數據記錄行/文檔 |
column | field | 數據字段/域 |
index | index | 索引 |
table joins | 表連接,MongoDB不支持 | |
primary key | primary key | 主鍵,MongoDB自動將_id字段設置為主鍵 |
數據庫:一個MongoDB 實例可以承載多個數據庫。它們之間可以看作相互獨立,每個數據庫都有獨立的權限控制。在磁盤上,不同的數據庫存放在不同的文件中。MongoDB 中存在以下系統數據庫。
- Admin 數據庫:一個權限數據庫,如果創建用戶的時候將該用戶添加到admin 數據庫中,那麽該用戶就自動繼承了所有數據庫的權限。
- Local 數據庫:這個數據庫永遠不會被負責,可以用來存儲本地單臺服務器的任意集合。
- Config 數據庫:當MongoDB 使用分片模式時,config 數據庫在內部使用,用於保存分片的信息。
集合:集合就是一組文檔,類似於關系數據庫中的表。集合是無模式的,集合中的文檔可以是各式各樣的。在MongoDB中集合用collections表示,每個
collection用一個名字標識,需要註意以下幾點:
-
名字不允許是空字符串""
-
名字不能包含\0字符,因為它表示名字的結束
- 不能創建以system.開頭的
文檔:文檔是 MongoDB 中數據的基本單位,類似於關系數據庫中的行(但是比行復雜)。多個鍵及其關聯的值有序地放在一起就構成了文檔。
-
文檔中的鍵/值對是有序的。
-
文檔中的值不僅可以是在雙引號裏面的字符串,還可以是其他幾種數據類型(甚至可以是整個嵌入的文檔)。
-
MongoDB區分類型和大小寫。
-
MongoDB的文檔不能有重復的鍵。
- 文檔的鍵是字符串。除了少數例外情況,鍵可以使用任意UTF-8字符。
安裝MongoDB
1.配置YUM源倉庫
cd /etc/yum.repos.d/
vim mongodb-org.repo
[mongodb-org]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
2.在線安裝MongoDB
yum install -y mongodb-org
3.修改配置文件
vim /etc/mongod.service
1 # mongod.conf
2
3 # for documentation of all options, see:
4 # http://docs.mongodb.org/manual/reference/configuration-options/
5
6 # where to write logging data.
7 systemLog:
8 destination: file
9 logAppend: true //使用追加方式寫日誌
10 path: /var/log/mongodb/mongod.log //日誌文件路徑
11
12 # Where and how to store data.
13 storage:
14 dbPath: /var/lib/mongo //數據存儲目錄
15 journal:
16 enabled: true
17 # engine:
18 # mmapv1:
19 # wiredTiger:
20
21 # how the process runs
22 processManagement:
23 fork: true # fork and run in background後臺運行
24 pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
25 timeZoneInfo: /usr/share/zoneinfo
26
27 # network interfaces
28 net:
29 port: 27017 //默認服務器端口號
30 bindIp: 0.0.0.0 //監聽地址
31
32
33 #security:
34
35 #operationProfiling:
36
37 #replication:
38
4.關閉防火墻和增強安全功能並開啟數據庫
systemctl stop firewalld.service
setenforce 0
systemctl start mongod.service
netstat -anpt | grep mongod
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 15252/mongod
5.進入數據庫並進行簡單的查看
mongo //進入數據庫
>db.version() //查看數據庫版本
>show dbs //查看所有庫
>db.getMongo() //查看當前數據庫機器的連接地址
開啟多實例
在單臺服務器資源充分的情況下,可以使用多實例,以便充分使用服務器資源。操作如下:
cp -p /etc/mongod.conf /etc/mongod2.conf
vim /etc/mongod2.conf
...
path: /data/mongodb/mongod2.log
dbPath: /data/mongodb/mongo
...
port: 27018
...
mkdir -p /data/mongodb
mkdir /data/mongodb/mongo //創建對應的數據存儲目錄
touch /data/mongodb/mongod2.log //創建日誌文件
chmod 777 mongod2.log
開啟mongodb2:
#mongod -f /etc/mongod2.conf
#mongo --port 27018
MongoDB shell version v3.6.6
...
>
#netstat -ntap
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 15252/mongod
tcp 0 0 0.0.0.0:27018 0.0.0.0:* LISTEN 3649/mongod
MongoDB基礎(安裝及多實例)