MongoDB基本介紹與安裝(1)

Tom彈架構發表於2021-12-31

MongoDB是一個基於分散式檔案儲存的資料庫。由C++語言編寫。旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。 MongoDB是一個介於關聯式資料庫和非關聯式資料庫之間的產品,是非關聯式資料庫當中功能最豐富,最像關聯式資料庫的。在這裡我們有必要先簡單介紹一下非關係型資料庫(NoSQL)

1 什麼是NoSQL

NoSQL,指的是非關係型的資料庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同於傳統的關係型資料庫的資料庫管理系統的統稱。NoSQL用於超大規模資料的儲存。(例如谷歌或Facebook每天為他們的使用者收集萬億位元的資料)。這些型別的資料儲存不需要固定的模式,無需多餘操作就可以橫向擴充套件。

2 關係型資料庫 PK 非關係型資料庫

關係型資料庫 NoSQL資料庫
高度組織化結構化資料 代表著不僅僅是SQL
結構化查詢語言(SQL) 沒有宣告性查詢語言
資料和關係都儲存在單獨的表中 沒有預定義的模式
資料操作語言,資料定義語言 鍵-值對儲存,列儲存,文件儲存,圖形資料庫
嚴格的一致性 最終一致性,而非ACID屬性
基礎事務 非結構化和不可預知的資料
CAP定理
高效能,高可用性和可伸縮性

3 NoSQL資料庫分類

型別 典型代表 特點
列儲存 Hbase
Cassandra
Hypertable
顧名思義,是按照列儲存資料的。最大的特點是方便儲存結構化和半結構化的資料,方便做資料壓縮,對針對某一列或者某幾列的查詢有非常大的IO優勢
文件儲存 MongoDB
CounchDB
文件儲存一般用類似json的格式儲存,儲存的內容是文件型的。這樣也就有機會對某些欄位建立索引,實現關聯式資料庫的某些功能。
Key-value儲存 Tokyo Cabinet/Tyrant
Berkelery DB
Memcache
Redis
可以通過key快速查詢到其value。一般來說,儲存不管value的格式,照單全收。(Redis包含了其他功能)
圖儲存 Neo4J
FlockDB
圖形關係的最佳儲存。使用傳統關聯式資料庫來解決的話效能低下,而且設計使用不方便。
物件儲存 Db4o
Versant
通過類似面嚮物件語言的語法運算元據庫,通過物件的方式儲存資料。
XML資料庫 Berkeley DB XML
BaseX
高效的儲存XML資料,並儲存XML的內部查詢語法,比如XQuery,Xpath。

4 CAP理論

在電腦科學中, CAP定理(CAP theorem), 又被稱作 布魯爾定理(Brewer's theorem), 它指出對於一個分散式計算系統來說,不可能同時滿足以下三點:

1、一致性(Consistency) (所有節點在同一時間具有相同的資料)

2、可用性(Availability) (保證每個請求不管成功或者失敗都有響應)

3、分割槽容錯性(Partition tolerance) (系統中任意資訊的丟失或失敗不影響系統的繼續執行)

CAP理論的核心是:一個分散式系統不可能同時很好的滿足一致性,可用性和分割槽容錯性這三個需求,最多隻能同時較好的滿足兩個。 因此,根據 CAP 原理將 NoSQL 資料庫分成了滿足 CA 原則、滿足 CP 原則和滿足 AP 原則三 大類:
CA - 單點叢集,滿足一致性,可用性的系統,通常在可擴充套件性上不太強大。
CP - 滿足一致性,分割槽容錯性的系統,通常效能不是特別高。
AP - 滿足可用性,分割槽容錯性的系統,通常可能對一致性要求低一些。

5 MongoDB的資料結構與關係型資料庫資料結構對比

關係型資料庫術語/概念 MongoDB術語/概念 解釋/說明
Database Database 資料庫
Table Collection 資料庫表/集合
Row Document 資料記錄行/文件
Column Field 資料列/資料欄位
Index Index 索引
Table joins 表關聯/MongoDB不支援
Primary Key Object ID 主鍵 / MongoDB自動將 _ id 設定為主鍵

6 MongoDB中的資料型別

資料型別 說明 解釋 舉例
Null 空值 表示空值或者未定義的物件 {“x”:null}
Boolean 布林值 真或者假:true或者false {“x”:true}
Integer 整數 整型數值。用於儲存數值。根據你所採用的伺服器,可分為 32 位或 64 位。
Double 浮點數 雙精度浮點值。 {“x”:3.14,”y”:3}
String 字串 UTF-8字串
Symbol 符號 符號。該資料型別基本上等同於字串型別,但不同的是,它一般用於採用特殊符號型別的語言。
ObjectID 物件ID 物件 ID。用於建立文件的 ID。 {“id”: ObjectId()}
Date 日期 日期時間。用 UNIX 時間格式來儲存當前日期或時間。 {“date”:new Date()}
Timestamp 時間戳 從標準紀元開始的毫秒數
Regular 正規表示式 文件中可以包含正規表示式,遵循JavaScript的語法 {“foo”:/testdb/i}
Code 程式碼 可以包含JavaScript程式碼 {“x”:function() {}}
Undefined 未定義 已廢棄
Array 陣列 值的集合或者列表 {“arr”: [“a”,”b”]}
Binary Data 二進位制 用於儲存二進位制資料。
Object 內嵌文件 文件可以作為文件中某個key的value {“x”:{“foo”:”bar”}}
Min/Max keys 最小/大值 將一個值與 BSON(二進位制的 JSON)元素的最低值和最高值相對比。

7 MongoDB的應用場景和不適用場景

7.1 適用場景

對於MongoDB實際應用來講,是否使用MongoDB需要根據專案的特定特點進行一一甄別,這就要求我們對MongoDB適用和不適用的場景有一定的瞭解。
根據MongoDB官網的說明,MongoDB的適用場景如下:

1)網站實時資料:MongoDB非常適合實時的插入,更新與查詢,並具備網站實時資料儲存所需的複製及高度伸縮性。

2)資料快取:由於效能很高,MongoDB也適合作為資訊基礎設施的快取層。在系統重啟之後,由MongoDB搭建的持久化快取層可以避免下層的資料來源過載。

3)大尺寸、低價值資料儲存:使用傳統的關係型資料庫儲存一些資料時可能會比較昂貴,在此之前,很多時候程式設計師往往會選擇傳統的檔案進行儲存。

4)高伸縮性場景:MongoDB非常適合由數十或數百臺伺服器組成的資料庫。MongoDB的路線圖中已經包含對MapReduce引擎的內建支援。

5)物件或JSON資料儲存:MongoDB的BSON資料格式非常適合文件化格式的儲存及查詢。

7.2 不適用場景

瞭解了MongoDB適用場景之後,還需要了解哪些場景下不適合使用MongoDB,具體如下:

1)高度事務性系統:例如銀行或會計系統。傳統的關係型資料庫目前還是更適用於需要大量原子性複雜事務的應用程式。

2)傳統的商業智慧應用:針對特定問題的BI資料庫會對產生高度優化的查詢方式。對於此類應用,資料倉儲可能是更合適的選擇。

3)需要複雜SQL查詢的問題。

相信通過上面的說明,你已經大致瞭解了MongoDB的使用規則,需要說明一點的是,MongoDB不僅僅是資料庫,更多的使用是將MongoDB作為一個資料庫中介軟體在實際應用中合理劃分使用細節,這一點對於MongoDB應用來講至關重要!

8 安裝MongoDB資料庫(Windows和Linux環境)

下載:https://www.mongodb.com/download-center?jmp=nav#community

file

8.1 安裝與啟動

1.在D盤建立安裝目錄,D:\MongoDB,將解壓後的檔案拷入新建的檔案。

2.在D盤建立一個目錄,D:\MongoDB\Data,用於存放MongoDB的資料。

3.執行安裝,使用命令列,進入MongDb的安裝目錄,執行安裝命令,並指明存放MongoDB的路徑。

file

注意,如果這是你的目錄中有空格,會報Invalid command錯誤,將dbpath後面的值加上雙引號即可mongod.exe -dbpath=”D:\MongoDB\Data”。

最後一行顯示我們的MongoDB已經連線到27017,它是預設的資料庫的埠;它建立完資料庫之後,會在我們的MongoDbData資料夾下,生成一些資料夾和檔案:在journal資料夾中會儲存相應的資料檔案,NoSQL的MongoDB,它以檔案的形式,也就是說被二進位制碼轉換過的json形式來儲存所有的資料模型。

8.2 環境變數配置

file

file

8.3 啟動資料庫

file

啟動MongoDB資料庫,需要根據自己配置mongodb.bat檔案,在D:\MongoDB\Server\3.4\bin中建立一個mongodb.bat檔案,然後我們來編寫這個可執行檔案如下:
mongod --dbpath=D:\MongoDB\Data
執行mongodb.bat檔案,MongoDB便啟動成功!

9 安裝Studio3T客戶端

file

本文為“Tom彈架構”原創,轉載請註明出處。技術在於分享,我分享我快樂!
如果本文對您有幫助,歡迎關注和點贊;如果您有任何建議也可留言評論或私信,您的支援是我堅持創作的動力。

原創不易,堅持很酷,都看到這裡了,小夥伴記得點贊、收藏、在看,一鍵三連加關注!如果你覺得內容太乾,可以分享轉發給朋友滋潤滋潤!

相關文章