什麼是 MongoDB?爲什麼要使用 MongoDB?
什麼是 NoSQL?
爲什麼使用 NoSQL?
爲了解決此問題,當然可以通過升級現有硬件來 “橫向擴展” 我們的系統。但這個成本很高。
NoSQL 數據庫是非關係數據庫,因此在設計時考慮到 Web 應用程序,比關係數據庫更好地擴展。
NoSQL 數據庫的簡要歷史
-
1998 年 - Carlo Strozzi 在他的輕量級開源關係數據庫中使用術語 NoSQL
-
2000 - 圖形數據庫 Neo4j 啓動
-
2004 年 - 推出 Google BigTable
-
2005 年 - 啓動 CouchDB
-
2007 年 - 發佈有關 Amazon Dynamo 的研究論文
-
2008 年 - Facebook 開源 Cassandra 項目
-
2009 年 - 重新引入 NoSQL 術語
NoSQL 的功能
-
非關係 NoSQL 數據庫從不遵循關係模型切勿爲 tables 提供固定的固定列記錄使用自包含的聚合或 BLOB 不需要對象關係映射和數據規範化沒有複雜的功能,例如查詢語言,查詢計劃者,參照完整性聯接,ACID
-
動態架構 NoSQL 數據庫是無模式的或具有寬鬆模式的數據庫不需要對數據架構進行任何形式的定義提供同一域中的異構數據結構
-
簡單的 API 提供易於使用的界面,用於存儲和查詢提供的數據 API 允許進行低級數據操作和選擇方法基於文本的協議,通常與帶有 JSON 的 HTTP REST 一起使用多數不使用基於標準的查詢語言支持 Web 的數據庫作爲面向互聯網的服務運行
-
分佈式可以以分佈式方式執行多個 NoSQL 數據庫提供自動縮放和故障轉移功能通常可犧牲 ACID 概念來實現可伸縮性和吞吐量分佈式節點之間幾乎沒有同步複製,多爲異步多主複製,對等,HDFS 複製僅提供最終的一致性無共享架構。這樣可以減少協調並提高分佈。
什麼是 MongoDB
MongoDB 是面向文檔的 NoSQL 數據庫,用於大量數據存儲。MongoDB 是一個在 2000 年代中期問世的數據庫。屬於 NoSQL 數據庫的類別。
MongoDB 功能
每個數據庫都包含集合,而集合又包含文檔。每個文檔可以具有不同數量的字段。每個文檔的大小和內容可以互不相同。文檔結構更符合開發人員如何使用各自的編程語言構造其類和對象。開發人員經常會說他們的類不是行和列,而是具有鍵值對的清晰結構。從 NoSQL 數據庫的簡介中可以看出,行(或在 MongoDB 中調用的文檔)不需要預先定義架構。相反,可以動態創建字段。MongoDB 中可用的數據模型使我們可以更輕鬆地表示層次結構關係,存儲數組和其他更復雜的結構。可伸縮性– MongoDB 環境具有很高的可伸縮性。全球各地的公司已經定義了自己的集羣,其中一些集羣運行着 100 多個節點,數據庫中包含大約數百萬個文檔。
爲什麼使用 MongoDB
以下是一些爲什麼應該開始使用 MongoDB 的原因
-
面向文檔的–由於 MongoDB 是 NoSQL 類型的數據庫,它不是以關係類型的格式存儲數據,而是將數據存儲在文檔中。這使得 MongoDB 非常靈活,可以適應實際的業務環境和需求。
-
臨時查詢 -MongoDB 支持按字段,範圍查詢和正則表達式搜索。可以查詢返回文檔中的特定字段。
-
索引 - 可以創建索引以提高 MongoDB 中的搜索性能。MongoDB 文檔中的任何字段都可以建立索引。
-
複製 -MongoDB 可以提供副本集的高可用性。副本集由兩個或多個 mongo 數據庫實例組成。每個副本集成員可以隨時充當主副本或輔助副本的角色。主副本是與客戶端交互並執行所有讀 / 寫操作的主服務器。輔助副本使用內置複製維護主數據的副本。當主副本發生故障時,副本集將自動切換到輔助副本,然後它將成爲主服務器。
-
負載平衡 -MongoDB 使用分片的概念,通過在多個 MongoDB 實例之間拆分數據來水平擴展。MongoDB 可以在多臺服務器上運行,以平衡負載或複製數據,以便在硬件出現故障時保持系統正常運行。
MongoDB 常用術語
下面是 MongoDB 中使用的一些常用術語
-
_id – 這是每個 MongoDB 文檔中必填的字段。_id 字段表示 MongoDB 文檔中的唯一值。_id 字段類似於文檔的主鍵。如果創建的新文檔中沒有_id 字段,MongoDB 將自動創建該字段。
-
集合 – 這是 MongoDB 文檔的分組。集合等效於在任何其他 RDMS(例如 Oracle 或 MS SQL)中創建的表。集合存在於單個數據庫中。從介紹中可以看出,集合不強制執行任何結構。
-
遊標 – 這是指向查詢結果集的指針。客戶可以遍歷遊標以檢索結果。
-
數據庫 – 這是像 RDMS 中那樣的集合容器,其中是表的容器。每個數據庫在文件系統上都有其自己的文件集。MongoDB 服務器可以存儲多個數據庫。
-
文檔 - MongoDB 集合中的記錄基本上稱爲文檔。文檔包含字段名稱和值。
-
字段 - 文檔中的名稱 / 值對。一個文檔具有零個或多個字段。字段類似於關係數據庫中的列。
下圖顯示了帶有鍵值對的字段的示例。如下的例子中,CustomerID 和 11 是文檔中定義的鍵值對之一。
MongoDB 與 RDBMS 區別
下表將幫助您更容易理解 Mongo 中的一些概念:
|
SQL 術語 / 概念
|
MongoDB 術語 / 概念
|
解釋 / 說明
| |
database
|
database
|
數據庫
| |
table
|
collection
|
數據庫表 / 集合
| |
row
|
document
|
數據記錄行 / 文檔
| |
column
|
field
|
數據字段 / 域
| |
index
|
index
|
索引
| |
table joins
|
|
表連接, MongoDB 不支持
| |
primary key
|
primary key
|
主鍵, MongoDB 自動將_id 字段設置爲主鍵
|
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/x7rYRVHbZpwbZkwioaErJw