1. 程式人生 > >MongoDB基礎(安裝及多實例)

MongoDB基礎(安裝及多實例)

說明 移動互 engine python gem 路徑 數據緩存 prim lec

MongoDB簡介

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

MongoDB的特點

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基礎(安裝及多實例)