1. 程式人生 > 其它 >MongoDB | 安裝使用以及 CRUD 操作

MongoDB | 安裝使用以及 CRUD 操作

第一章、MongoDB 相關概念

1.1 業務場景

傳統的關係型資料庫 (比如 MySQL), 在資料操作的”三高”需求以及對應的 Web 2.0 網站需求面前, 會有”力不從心”的感覺

所謂的三高需求:

高併發, 高效能, 高可用, 簡稱三高

  • High Performance: 對資料庫的高併發讀寫的要求
  • High Storage: 對海量資料的高效率儲存和訪問的需求
  • High Scalability && High Available: 對資料的高擴充套件性和高可用性的需求

而 MongoDB 可以應對三高需求

具體的應用場景:

  • 社交場景, 使用 MongoDB 儲存儲存使用者資訊, 以及使用者發表的朋友圈資訊, 通過地理位置索引實現附近的人, 地點等功能.
  • 遊戲場景, 使用 MongoDB 儲存遊戲使用者資訊, 使用者的裝備, 積分等直接以內嵌文件的形式儲存, 方便查詢, 高效率儲存和訪問.
  • 物流場景, 使用 MongoDB 儲存訂單資訊, 訂單狀態在運送過程中會不斷更新, 以 MongoDB 內嵌陣列的形式來儲存, 一次查詢就能將訂單所有的變更讀取出來.
  • 物聯網場景, 使用 MongoDB 儲存所有接入的智慧裝置資訊, 以及裝置彙報的日誌資訊, 並對這些資訊進行多維度的分析.
  • 視訊直播, 使用 MongoDB 儲存使用者資訊, 點贊互動資訊等.

這些應用場景中, 資料操作方面的共同點有:

  1. 資料量大
  2. 寫入操作頻繁
  3. 價值較低的資料, 對事務性
    要求不高

對於這樣的資料, 更適合用 MongoDB 來實現資料儲存

那麼我們什麼時候選擇 MongoDB 呢?

除了架構選型上, 除了上述三個特點之外, 還要考慮下面這些問題:

  • 應用不需要事務及複雜 JOIN 支援
  • 新應用, 需求會變, 資料模型無法確定, 想快速迭代開發
  • 應用需要 2000 - 3000 以上的讀寫QPS(更高也可以)
  • 應用需要 TB 甚至 PB 級別資料儲存
  • 應用發展迅速, 需要能快速水平擴充套件
  • 應用要求儲存的資料不丟失
  • 應用需要 99.999% 高可用
  • 應用需要大量的地理位置查詢, 文字查詢

如果上述有1個符合, 可以考慮 MongoDB, 2個及以上的符合, 選擇 MongoDB 絕不會後悔.

如果用MySQL呢?

相對MySQL, 可以以更低的成本解決問題(包括學習, 開發, 運維等成本)

1.2 MongoDB 簡介

MongoDB是一個開源, 高效能, 無模式的文件型資料庫, 當初的設計就是用於簡化開發和方便擴充套件, 是NoSQL資料庫產品中的一種.是最 像關係型資料庫(MySQL)的非關係型資料庫. 它支援的資料結構非常鬆散, 是一種類似於 JSON 的 格式叫BSON, 所以它既可以儲存比較複雜的資料型別, 又相當的靈活. MongoDB中的記錄是一個文件, 它是一個由欄位和值對(field:value)組成的資料結構.MongoDB文件類似於JSON物件, 即一個文件認 為就是一個物件.欄位的資料型別是字元型, 它的值除了使用基本的一些型別外, 還可以包括其他文件, 普通陣列和文件陣列.

“最像關係型資料庫的 NoSQL 資料庫”. MongoDB 中的記錄是一個文件, 是一個 key-value pair. 欄位的資料型別是字元型, 值除了使用基本的一些型別以外, 還包括其它文件, 普通陣列以及文件陣列。

1.3 體系結構

MySQL和MongoDB對比

術語對比

1.4 資料模型

MongoDB的最小儲存單位就是文件(document)物件。文件(document)物件對應於關係型資料庫的行。資料在MongoDB中以 BSON(Binary-JSON)文件的格式儲存在磁碟上。

BSON(Binary Serialized Document Format)是一種類json的一種二進位制形式的儲存格式,簡稱Binary JSON。BSON和JSON一樣,支援內嵌的文件物件和陣列物件,但是BSON有JSON沒有的一些資料型別,如Date和BinData型別。

BSON採用了類似於 C 語言結構體的名稱、對錶示方法,支援內嵌的文件物件和陣列物件,具有輕量性、可遍歷性、高效性的三個特點,可 以有效描述非結構化資料和結構化資料。這種格式的優點是靈活性高,但它的缺點是空間利用率不是很理想。

Bson中,除了基本的JSON型別:string,integer,boolean,double,null,array和object,mongo還使用了特殊的資料型別。這些型別包括 date,object id,binary data,regular expression 和code。每一個驅動都以特定語言的方式實現了這些型別,檢視你的驅動的文件來獲取詳 細資訊。

BSON資料型別參考列表:

1.5 MongoDB 的特點

1.5.1 高效能

MongoDB 提供高效能的資料持久化

  • 嵌入式資料模型的支援減少了資料庫系統上的 I/O 活動
  • 索引支援更快的查詢, 並且可以包含來自嵌入式文件和陣列的鍵 (文字索引解決搜尋的需求, TTL 索引解決歷史資料自動過期的需求, 地理位置索引可以用於構件各種 O2O 應用)
  • mmapv1, wiredtiger, mongorocks (rocksdb) in-memory 等多引擎支援滿足各種場景需求
  • Gridfs 解決檔案儲存需求

1.5.2 高可用

MongoDB 的複製工具稱作副本集 (replica set) 可以提供自動故障轉移和資料冗餘

1.5.3 高擴充套件

水平擴充套件是其核心功能一部分

分片將資料分佈在一組叢集的機器上 (海量資料儲存, 服務能力水平擴充套件)

MongoDB 支援基於片鍵建立資料區域, 在一個平衡的叢集當中, MongoDB 將一個區域所覆蓋的讀寫只定向到該區域的那些片

1.5.4 其他

MongoDB支援豐富的查詢語言, 支援讀和寫操作(CRUD), 比如資料聚合, 文字搜尋和地理空間查詢等. 無模式(動態模式), 靈活的文件模型

作者:王陸 出處:https://www.cnblogs.com/wkfvawl/

-------------------------------------------

個性簽名:罔談彼短,靡持己長。做一個謙遜愛學的人!

本站使用「署名 4.0 國際」創作共享協議,轉載請在文章明顯位置註明作者及出處。鑑於博主處於考研複習期間,有什麼問題請在評論區中提出,博主儘可能當天回覆,加微信好友請註明原因