MongoDB 資料庫介紹及安裝

HuDu發表於2021-07-27

NoSQL 介紹

MongoDB 是一款 NoSQL(Not Only SQL) 資料庫,意思是"不僅僅是 SQL",指的是非關係型資料庫,是對不同與傳統的關係型資料庫的資料管理系統的統稱。
NoSQL 用於超大規模資料的儲存。這些型別的資料儲存不需要固定的模式,無需多餘操作就可以橫向擴充套件。

為什麼使用 NoSQL

    隨著資料日益增多,從 GBTBPB。這些資料有很大一部分是由關係型資料庫管理系統(RBAMS)來進行處理的。
    由於關係型資料庫的規範約束、事務特性、磁碟 IO 等特性,若伺服器使用關係型資料庫,當有大量資料產生時,傳統的關係型資料庫已經無法滿足快速查詢與插入的需求。NoSQL 的出現解決了這一危機。它通過降低資料的安全性,減少對事物的支援,減少對複雜查詢的支援,獲取效能上的提升。但是,在某些特定場景下,關係型資料庫仍然是最佳人選,比如一些絕對要有事物與安全指標的場景。
    NoSQL 是一項全新的資料庫革命性運動,早期就有人提出,發展至 2009 年趨勢愈發高漲。NoSQL 的擁護者們提倡運用非關係型的資料庫儲存,相對於鋪天蓋地的關係型資料庫運用,這一概念無疑是全新的思維注入

RBBMS vs NoSQL

MongoDB 資料庫

NoSQL 資料庫四大家族

鍵值(key-value)儲存

特點:鍵值資料庫就像傳統語言中使用的雜湊表,通過 key 新增、查詢活著刪除資料
優點:查詢速度快
缺點:資料無結構化,通常只被當作字串或者二進位制資料儲存
應用場景:內容快取、使用者資訊比如會話、配置資訊、購物車等,主要用於處理大量資料的高訪問負載
NoSQL代表:Redis、Memcached...

文件(Document-Oriented)儲存

特點:文件資料庫將資料以文件的形式儲存,類似 JSON,是一系列資料項的集合,每個資料都有一個名稱與之對應的值,值既可以是簡單的資料型別,比如字串、數字和日期等;也可以是複雜的型別,如有序列表和關聯物件。
優點:資料結構要求不嚴格,表結構可變,不需要像關係型資料庫一樣需要預先定義表結構。
缺點:查詢效能不高,缺乏統一的查詢與法
應用:日誌、Web應用等
NoSQL代表:MongoDB、CounchDB

列族(Wide Column Store/Column-Family)儲存

特點:列儲存資料庫將資料儲存在列族(Column Family)中,將多個列聚合成一個列族,鍵仍然存在,但是他們的特點是指向了多個列。舉個例子,如果我們有一個 Person 類,我們通常會一起查詢他們的姓名和年齡,而不是薪資。這種情況下,姓名和年齡就會被放入一個列族中而薪資則在另一個列族中。
優點:列儲存查詢速度快,可擴充強,更容易進行分散式擴充,適用於分散式系統,應對分散式儲存的海量資料。
缺點:查詢效能不高,缺乏統一的查詢語法
應用場景:日誌、分散式的檔案系統(物件儲存)、推薦畫像、時空資料、訊息/訂單等。
NoSQL代表:Cassandra、HBase...

圖形(Graph-Oriented)儲存

特點:圖形資料庫允許我們將資料以圖形方式儲存。
優點:圖形相關演算法。比如最短路徑定址,N 度關係查詢等
缺點:很多時候需要對整個圖做計算才能得出需要資訊,分散式的叢集方案不好做,處理超級節點乏力,沒有分片儲存機制,國內社群不活躍。
應用場景:社交網路、推薦系統等。專注於構建關係圖譜。
NoSQL代表:Neo4j、Infinite Graph...

NoSQL 優缺點

優點

  • 高可擴充套件性
  • 沒有標準化
  • 分散式計算
  • 有限的查詢功能 (到目前為止)
  • 低成本

缺點

  • 最終一致時不直觀的程式
  • 架構的靈活性,半結構化資料
  • 沒有複雜的關係

總結

NoSQL 資料庫在一以下幾種情況下比較適用:

  • 資料模型比較簡單
  • 需要靈活性更強的 IT 系統
  • 對資料庫效能要求較高
  • 不需要高強度的資料一致性
  • 對於給定的 Key,比較容易對映覆雜值的環境

MongoDB 簡介

Mongo 源於 Humongous(巨大的;龐大的)一詞。
MongoDB 是一個基於分散式檔案儲存的 NoSQL 資料庫。由 C++ 語言編寫。旨在為 WEB 應用提供可擴充的高效能資料儲存解決方案。
MongoDB是一個介於關係型資料庫和非關係型資料庫之間的產品,是非關係型資料庫當中功能最豐富,最像關係型資料庫的。

MongoDB 資料庫

MongoDB 與關係型資料庫術語對比

MongoDB 資料庫

MongoDB 資料型別

MongoDB 資料庫

下載與安裝

可以通過 https://docs.mongodb.com/manual/installation/ 確認該版本軟體是否支援你的作業系統

MongoDB 下載地址

MongoDB 資料庫

下載完後進行解壓配置環境變數

# 解壓
$ tar -zxvf mongodb-linux-x86_64-ubuntu1804-5.0.1.tgz -C /opt
# 重新命名資料夾
$ mv mongodb-linux-x86_64-ubuntu1804-5.0.1 mongodb
# 配置環境變數
$ vim /etc/profile
export MONGODB_HOME=/opt/mongodb
export PATH=$PATH:$MONGODB_HOME/bin

建立資料/日誌目錄

# 建立存放資料的目錄
mkdir -p /opt/mongodb/data/db
# 建立存放日誌的目錄
mkdir -p /opt/mongodb/logs
# 建立日誌記錄檔案
touch /opt/mongodb/logs/mongodb.log

啟動 MongoDB

前臺啟動

MongoDB 的預設啟動方式為前臺啟動。所謂的前臺啟動就是 MongoDB 啟動程式會佔用當前終端視窗

# 切換至指定目錄
$ mongod --dbpath /opt/mongodb/data/db/ --logpath /opt/mongodb/logs/mongodb.log --logappend --port 27017 --bind_ip 0.0.0.0
  • --dbpath:指定資料檔案存放目錄
  • --logpath:指定日誌檔案,注意是指定檔案不是目錄
  • --logappend:使用追加方式記錄日誌
  • --port:指定埠,預設為27017
  • --bind_ip:繫結服務 IP,若繫結 127.0.0.1,則只能本機訪問,預設為本機地址

注意:

啟動時可能會出現以下問題
mongod: error while loading shared libraries: libcurl.so.4: cannot open shar

sudo apt update
sudo apt install libcurl4-openssl-dev
sudo apt install curl

後臺啟動

所謂後臺啟動就是以守護程式的方式啟動 MongoDB。命令中新增 --fork即可

$ mongod --dbpath /opt/mongodb/data/db/ --logpath /opt/mongodb/logs/mongodb.log --logappend --port=27017 --bind_ip 0.0.0.0 --fork

結束服務只需要在上面命令下加上--shutdown

配置檔案

bin 目錄下增加一個 mongodb.conf配置檔案

# 資料存放目錄
dbpath = /opt/mongodb/data/db
# 日誌檔案存放目錄
logpath = /opt/mongodb/logs/mongodb.log
# 以追加的方式記錄日誌
logappend = true
# 埠預設為 27017
port = 27017
# 對訪問 IP 地址不做限制,預設為本機地址
bind_ip = 0.0.0.0
# 以守護程式的方式啟動,即在後臺執行
fork = true
# 啟動
$ mongod -f /opt/mongodb/bin/mongodb.conf
# 停止
$ mongod -f /opt/mongodb/bin/mongodb.conf --shutdown

客戶端訪問

$ mongo
# 檢視所有的資料庫(沒有資料的資料庫會顯示)
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
> db
test
# 檢視資料庫版本
> db.version()
5.0.1
# 清屏命令
>cls

MongoDB 函式關閉

# 連線到 MongoDB 服務後,切換到 admin 資料庫,使用相關函式關閉服務
# 切換 admin 資料庫
>use admin
# 執行以下函式(21)即可關閉服務
>db.shutdownServer()
>db.runCommand("shtudown")
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章