近年來,資訊業界最夯的話題莫過於 Cloud Computing 和 Big Data 了,而「NoSQL」便是伴隨著這兩個主題所產生的技術主題。
MongoDB 也算是一種 NoSQL DB,所以我們會先從 NoSQL 說起,以利讀者們對於 NoSQL DB 有個基本認識以後,之後才來介紹 MongoDB。
一、NoSQL 的定義
一般人第一次看到「NoSQL」,直覺地都會以為是「不使用 SQL」的意思,其實不然,所以目前業界比較傾向使用「Not Only SQL」來解釋 NoSQL 一詞,也就是說通常是透過類似 SQL 的 API 來存取這類 DB。
以下則是摘錄《nosql-database.org》網站對「NoSQL」的定義:
「Next Generation Databases mostly addressing some of the points: being non-relational, distributed, open-source and horizontally scalable. 」
圖一、《nosql-database.org》網站上對「NoSQL」的定義與特徵說明 |
以下特徵採用的是《Toad World》網站「Survey distributed databases」一文的說法。
- Schema-less
有類似「Table」的資料結構,但不需預先定義 schema。每一筆記錄的欄位數量與結構也可以不一樣。紀錄的內容與限制條件主要由應用程式來控管。 - Shared nothing architecture
通常採用本地儲存、而非共同儲存設備(如 SAN 或 NAS)。本地磁碟的存取速度較透過網路傳輸快,也能透過增加節點的方式來擴充容量。使用一般規格的硬體即可(commodity hardware),故成本也隨之下降。 - Elasticity
只需增加更多主機,便能立即擴充儲存容量與負載能力,所以不需要有停機時間(downtime)。當新節點加入後,資料庫便會開始分配任務給它。 - Sharding
不將儲存視為龐大的空間,取而代之的是以「分片」(shard)方式來分割資料集。分片可在主機間進行複製(replication),但一個分片至少會由一部主機來管理。分片過大時,可採用自動分割方式,或者以程式為每一筆記錄指派所屬的分片ID。 - Asynchronous replication
相較於 RAID (mirroring / stripping)或同步複製機制,NoSQL DB採用的是非同步的複製。這種方式較不會受到額外網路流量影響,所以能使寫入動作更快完成。又因為資料不會立即複製,所以某些時候可能發生資料遺失的狀況。此外,也沒有 lock 機制以保護某些特定資料。 - BASE instead of ACID
由於 NoSQL DB 強調的是效能與可用度,所以「CAP Theorem」會比 RDBMS 的「ACID」更為重要。
三、NoSQL DB 的類型
世界頂尖的大師級人物 Martin Fowler、堪稱為「架構師中的架構師」。他在 2013 年的「goto; Conference」有一場主題為「Introduction to NoSQL」的演講,其中便對 NoSQL DB 做了一個分類:Document、Big Table、Graph 以及 Key-Value。
而下面這張圖就是我仿效該場演講其中一張投影片所重製的:
圖二、NoSQL DB 的四大類型 |
以下則是放在 Youtube 上面的錄影,請大家一睹大師風采。
四、Non-Relational vs. Relational
2012 年 TechCrunch 網站上有一篇介紹 Big Data 五大開放源碼技術趨勢的文章 —— 「Big Data Right Now: Five Trendy Open Source Technologies」。該文作者 Tim Gasper 是 InfoChimps 的產品總監,InfoChimps 則是一家專門提供 Big Data 服務、平台的公司。
下圖也是我重製文中的一張照片,原圖是一張不是很清晰的照片。
圖三、Non-Relational vs. Relational |
由上圖,我們可以知道:MongoDB 應該是一種 Non-Relational、NoSQL、Document based 的 DB:
- Non-Relational:代表了「無法或不使用 JOIN」。
- NoSQL:代表了「不使用標準 SQL 語言」。
- Document based:代表了「每筆紀錄都是一個 document」(相對於 RDBMS 的 row 而言)。
五、NoSQL DB 的理論基礎 - CAP & BASE
在 2000 年 的 PODC(Principles of Distributed Computing)會議上,柏克萊加州大學的 Eric Brewer 提出了著名的 「CAP Theorem」(CAP 定理)。2002 年,Seth Gilbert 和 Nancy Lynch 證明了這一理論:
- Consistency(一致性)
一致性是說資料的原子性,這種原子性在傳統 RDBMS 中是透過 Transaction 來保證的,當 Transaction 完成時,無論其是成功還是回滾,資料都會處於一致的狀態。在分散式環境中,一致性是說多個節點的資料是否一致。 - Availability(可用性)
可用性是說服務能一直保證是可用的狀態,當使用者發出一個請求,服務能在有限時間內返回結果。 - Partition Tolerance(分區容錯性)
Partition 是指網路的分區。可以這樣理解,一般來說,關鍵的資料和服務都會位於不同的 IDC 機房。
圖四、CAP Theorem |
但是對於分散式資料系統而言,「分區容錯性」(P) 是基本要求,否則就不能稱為「分散式系統」了。因此,一般我們所說的 NoSQL DB 都是在「一致性」(C) 和「可用性」(A) 之間尋求平衡(即上圖中以紅色虛線框所標示的交集處)。
BASE 是 Basically Available、Soft state、Eventually consistent 三個片語的簡寫,是對 CAP 中 C 和 A 的延伸:
- Basically Available:基本可用;
- Soft-state:軟狀態/柔性交易,即狀態可以有一段時間的不同步;
- Eventual consistency:最終一致性;
BASE 是基於 CAP 理論逐步演化而來,核心思想是:即便不能達到「強一致性」(Strong consistency),但可以根據應用特點採用適當的方式來達到「最終一致性」(Eventual consistency)的效果。
BASE 是反 ACID 的,它完全不同於 ACID 模型,犧牲強一致性,獲得基本可用性和柔性可靠性,並要求達到最終一致性。
CAP 和 BASE 理論是 NoSQL 的理論基礎。
個人以為 NoSQL DB 有以下三個缺點:
- 不易轉換
不像 RDBMS 有共通的標準語言 —— SQL,各種 NoSQL 都有自己的 API。所以一旦選定某種 NoSQL 產品,便不易再轉換至其他產品,比方說由 MongoDB 轉換為 Couchbase。 - 不支援 ACID
ACID 可說是「Transaction」的構成要件,也是所有 RDBMS 的主要特性。但大部分的 NoSQL DB 都不保證 ACID,必須使用一些變通技巧來實現(MongoDB 可使用 2 Phase Commits)。 - 不支援 JOIN
因為 NoSQL DB 是 Non-relational 的,所以不支援 JOIN 操作。以 MongoDB 而言,除了一開始就要妥善規劃 Data Model 之外(如使用 embedded document 或 reference),也可搭配 Index 和 Aggregation(含 MapReduce)等技巧來提高查詢效能。
本文對於 NoSQL 就暫時介紹到這裡囉,下面「延伸閱讀」還有許多不錯的資訊,各位也可以參考一下喔!
※ 延伸閱讀:
- [酷壳] 分布式系统的事务处理:
http://coolshell.cn/articles/10910.html - [Toad World] Survey distributed databases
http://www.toadworld.com/products/toad-for-cloud-databases/w/wiki/308.survey-distributed-databases.aspx - [Martin Fowloer] NoSQL
http://martinfowler.com/nosql.html - [myNoSQL] NoSQL Databases and Polyglot Persistence: A Curated Guide
http://nosql.mypopescu.com/
Hello Yorkies From Elvis Yorkshire Terrier - Specializing in Teacup Yorkies
回覆刪除We are small breeders whose goal is to produce healthy, high quality little teacup size Yorkie puppies for sale. In order to have puppies for sale most of the time we have teamed up with a couple of other Yorkie breeders that have the same goals in mine. In fact we have some of their Yorkie breeders and they have some of our breeders.
yorkies for sale, teacup yorkie puppies for sale, Yorkie puppies for sale
yorkie for sale, teacup yorkies for sale
Mmorpg oyunları
回覆刪除instagram takipçi satın al
Tiktok Jeton Hilesi
Tiktok Jeton Hilesi
antalya saç ekimi
Takipci satın al
instagram takipçi satın al
Mt2 Pvp Serverler
Instagram takipçi satın al
ümraniye arçelik klima servisi
回覆刪除üsküdar samsung klima servisi
çekmeköy vestel klima servisi
ataşehir vestel klima servisi
çekmeköy bosch klima servisi
ataşehir bosch klima servisi
kadıköy samsung klima servisi
maltepe mitsubishi klima servisi
kadıköy mitsubishi klima servisi
nft nasıl alınır
回覆刪除yurtdışı kargo
en son çıkan perde modelleri
özel ambulans
en son çıkan perde modelleri
uc satın al
minecraft premium
lisans satın al