什么是 NoSQL
NoSQL 是一種非關系型資料庫管理系統,不需要固定的架構,可以避免 JOIN 連接,并且易于擴展,
NoSQL 常用于具有龐大資料存盤需求的分布式資料存盤,通常是大資料和實時 Web 應用程式等場景,
對于海量資料,使用 RDBMS 處理是會導致系統回應時間變慢,一般的替代方案都是在負載增加時橫向擴展到其他的服務器上,而 NoSQL 比關系型資料庫更容易擴展,
NoSQL 的功能和優點主要是以下幾點:
- NoSQL 資料庫不遵循關系模型
- NoSQL 資料庫是無模式或具有寬松模式的資料庫
- NoSQL 提供簡單的 API 作為存盤和查詢
- NoSQL 可以以分布式方式執行,易于擴展
關于 MongoDB
MongoDB 是一個以 BSON 為資料模型的檔案資料庫,其中 BSON 是一種類 JSON 的二進制存盤格式,
檔案類似于 JSON 物件,其中存盤的也是鍵值對的資料結構,欄位的值也可以包括其他檔案、陣列和檔案陣列,
主要特點
- 易于使用:建模不是必需的,類 JSON 資料模型僅用一條資料表示復雜的層次關系
- 易于擴展:自帶分片功能,完美支持橫向擴展(更多機器),無需更改應用程式的邏輯
- 功能豐富:支持通用的二級索引,支持聚合分析資料,支持生命周期有限集合,針對大檔案存盤等等功能
- 性能卓越:使用多粒度鎖盡可能提高并發和吞吐量,使用盡可能多的記憶體作為快取,盡可能為查詢自動選擇正確的索引
- 高可用:自帶副本集的概念,支持自動故障轉移和資料冗余,對讀負載均衡非常友好
- 支持多種存盤引擎:自帶 WiredTiger 存盤引擎、記憶體存盤引擎,并且提供可插拔的 API 允許第三方開發存盤引擎
適用場景
MongoDB 主要有以下適用場景:
- 作為應用資料庫使用,類似于 Oracle、MySQL,由于其建模是非必需的,更適合創業公司快速迭代使用
- 由于其性能較高,且易于擴展,也常用在大資料領域中,通常是用作海量資料處理及搭建資料平臺
MongoDB 也有以下不適用場景:
- 高度事務化的系統:需要大量原子性復雜事務的應用程式使用傳統的關系型資料庫會更好
- 傳統的商業智能應用:針對特定問題的 BI 資料庫會產生高度優化的查詢方式,對于此類應用,資料倉庫可能是更合適的選擇
技術優勢總結
- 類 JSON 結構和物件模型接近,開發代碼量低
- 類 JSON 的動態模型意味著更容易回應新的業務需求
- MongoDB 原生支持的副本集提供 99.999% 高可用
- MongoDB 使用分片架構支持海量資料和無縫擴容
MongoDB vs 關系型資料庫
| 不同點 | MongoDB | RDBMS |
|---|---|---|
| 資料模型 | 檔案模型 | 關系模型 |
| 資料庫型別 | OLTP(聯機事務處理) | OLTP |
| CRUD | MQL/SQL | SQL |
| 高可用 | 復制集 | 集群模式 |
| 橫向擴展能力 | 原生分片完美支持 | 資料磁區或者應用侵入式 |
| 索引支持 | B 樹 全文索引 地理位置索引 多鍵索引 TTL 索引 |
B+ 樹 |
| 開發難度 | 容易 | 困難 |
| 資料容量 | 沒有理論上限 | 千萬、億 |
| 擴展方式 | 垂直擴展 + 水平擴展 | 垂直擴展 |
首發于翔仔的個人博客,點擊查看更多,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/525069.html
標籤:其他
