天天在講的 NoSQL 數據庫到底是個什麼鬼?

NoSQL 大數據 雲計算 軟件 Google 程序員界的彭于晏 2018-12-13
天天在講的 NoSQL 數據庫到底是個什麼鬼?

NoSQL 簡介

NoSQL(NoSQL = Not Only SQL ),意即"不僅僅是SQL"。

在現代的計算系統上每天網絡上都會產生龐大的數據量。

這些數據有很大一部分是由關係數據庫管理系統(RDBMS)來處理。 1970年 E.F.Codd's提出的關係模型的論文 "A relational model of data for large shared data banks",這使得數據建模和應用程序編程更加簡單。

通過應用實踐證明,關係模型是非常適合於客戶服務器編程,遠遠超出預期的利益,今天它是結構化數據存儲在網絡和商務應用的主導技術。

NoSQL 是一項全新的數據庫革命性運動,早期就有人提出,發展至2009年趨勢越發高漲。NoSQL的擁護者們提倡運用非關係型的數據存儲,相對於鋪天蓋地的關係型數據庫運用,這一概念無疑是一種全新的思維的注入。

關係型數據庫遵循ACID規則

事務在英文中是transaction,和現實世界中的交易很類似,它有如下四個特性:

1、A (Atomicity) 原子性

原子性很容易理解,也就是說事務裡的所有操作要麼全部做完,要麼都不做,事務成功的條件是事務裡的所有操作都成功,只要有一個操作失敗,整個事務就失敗,需要回滾。

比如銀行轉賬,從A賬戶轉100元至B賬戶,分為兩個步驟:1)從A賬戶取100元;2)存入100元至B賬戶。這兩步要麼一起完成,要麼一起不完成,如果只完成第一步,第二步失敗,錢會莫名其妙少了100元。

2、C (Consistency) 一致性

一致性也比較容易理解,也就是說數據庫要一直處於一致的狀態,事務的運行不會改變數據庫原本的一致性約束。

例如現有完整性約束a+b=10,如果一個事務改變了a,那麼必須得改變b,使得事務結束後依然滿足a+b=10,否則事務失敗。

3、I (Isolation) 獨立性

所謂的獨立性是指併發的事務之間不會互相影響,如果一個事務要訪問的數據正在被另外一個事務修改,只要另外一個事務未提交,它所訪問的數據就不受未提交事務的影響。

比如現在有個交易是從A賬戶轉100元至B賬戶,在這個交易還未完成的情況下,如果此時B查詢自己的賬戶,是看不到新增加的100元的。

4、D (Durability) 持久性

持久性是指一旦事務提交後,它所做的修改將會永久的保存在數據庫上,即使出現宕機也不會丟失。

分佈式系統

分佈式系統(distributed system)由多臺計算機和通信的軟件組件通過計算機網絡連接(本地網絡或廣域網)組成。

分佈式系統是建立在網絡之上的軟件系統。正是因為軟件的特性,所以分佈式系統具有高度的內聚性和透明性。

因此,網絡和分佈式系統之間的區別更多的在於高層軟件(特別是操作系統),而不是硬件。

分佈式系統可以應用在不同的平臺上如:Pc、工作站、局域網和廣域網上等。

分佈式計算的優點

可靠性(容錯) :

分佈式計算系統中的一個重要的優點是可靠性。一臺服務器的系統崩潰並不影響到其餘的服務器。

可擴展性:

在分佈式計算系統可以根據需要增加更多的機器。

資源共享:

共享數據是必不可少的應用,如銀行,預訂系統。

靈活性:

由於該系統是非常靈活的,它很容易安裝,實施和調試新的服務。

更快的速度:

分佈式計算系統可以有多臺計算機的計算能力,使得它比其他系統有更快的處理速度。

開放系統:

由於它是開放的系統,本地或者遠程都可以訪問到該服務。

更高的性能:

相較於集中式計算機網絡集群可以提供更高的性能(及更好的性價比)。

分佈式計算的缺點

故障排除:

故障排除和診斷問題。

軟件:

更少的軟件支持是分佈式計算系統的主要缺點。

網絡:

網絡基礎設施的問題,包括:傳輸問題,高負載,信息丟失等。

安全性:

開放系統的特性讓分佈式計算系統存在著數據的安全性和共享的風險等問題。

什麼是NoSQL?

NoSQL,指的是非關係型的數據庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同於傳統的關係型數據庫的數據庫管理系統的統稱。

NoSQL用於超大規模數據的存儲。(例如谷歌或Facebook每天為他們的用戶收集萬億比特的數據)。這些類型的數據存儲不需要固定的模式,無需多餘操作就可以橫向擴展。

為什麼使用NoSQL ?

今天我們可以通過第三方平臺(如:Google,Facebook等)可以很容易的訪問和抓取數據。用戶的個人信息,社交網絡,地理位置,用戶生成的數據和用戶操作日誌已經成倍的增加。我們如果要對這些用戶數據進行挖掘,那SQL數據庫已經不適合這些應用了, NoSQL數據庫的發展也卻能很好的處理這些大的數據。

相關推薦

推薦中...