什麼是NoSQL和關係型數據庫

什麼是NoSQL和關係型數據庫?

1. 非關係型的數據庫(NoSQL)

例如:

MongDB、 Redis、Memcache

非關係型的數據庫,區別於關係數據庫,它們不保證關係數據的ACID特性。

並且數據之間無關係,這樣就非常容易擴展。

在大數據量,高性能的情況,NoSQL數據庫都具有非常高的讀寫性能,尤其在大數據量下,同樣表現優秀。

什麼是NoSQL和關係型數據庫

​2.關係數據庫管理系統(RDBMS)

例如:

Oracle DB(Oracle Corporation), SQL Server(微軟) ,MySQL

RDBMS強調relationship between tables. 即表與表之間是要有關係的。

當大量的數據需要保存和維護的時候就需要用到RDBMS。一個關係數據模型是需要包含indexes,PK,FK,table和table間的關係。

3.NoSQL和RDBMS的區別是什麼?

3.1RDBMS的特點:

組織化結構化數據

比如Mysql是分字段的,且每個字段還有類型,做查詢的時候都是針對字段的。

結構化查詢語言(SQL)

解釋:也就是SQL語句是有結構的查詢語,類似於:

SELECT 字段 FROM 表 WHERE 條件

UPDATE 表 SET 字段名=字段值 WHERE 篩選條件

DELETE FROM 表 WHERE 篩選條件

數據和關係都存儲在單獨的表中。

這就好理解了,比如一對一,一對多,和表中的數據所存在的關係。

ACID

分別為:

A (Atomicity) 原子性

C (Consistency) 一致性

___I (Isolation) 獨立性 ___

D (Durability) 持久性

什麼是NoSQL和關係型數據庫

​3.1.1所謂RDBMS遵循的ACID是?

(Atomicity) 原子性:

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

比如銀行轉賬,從A賬戶轉100元至B賬戶,需要將A賬戶的錢減少100,B賬戶裡面的錢增加100。如果A賬戶的錢減少了100,此時,出現死機狀態,那麼事務將會回滾,A賬戶的錢變為原來的。

(Consistency) 一致性:

可以理解為在任意時刻,所有節點中的數據是一樣的。同一時間點,你在節點A中獲取到key1的值與在節點B中獲取到key1的值應該都是一樣的。

(Isolation) 獨立性:

指的是在併發環境中,當不同的事務同時操縱相同的數據時,只要另外一個事務未提交,它所訪問的數據就不受未提交事務的影響。

(Durability) 持久性:

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

什麼是NoSQL和關係型數據庫

​3.2 NoSQL的特點:

鍵 - 值對存儲,列存儲,文檔存儲,圖形數據庫

高性能,高可用性和可伸縮性

數據之間無關係,這樣就非常容易擴展.

非關係型的數據庫,區別於關係數據庫.

對比一下語句:

Redis的語句:

從這裡也可以看出來 鍵-值對存儲

什麼是NoSQL和關係型數據庫

​Sql Server的語句

什麼是NoSQL和關係型數據庫

​不保證關係數據的ACID特性。

CAP定理(Consistency(一致性),Availability(可用性),Partition tolerance(分區容錯性) )

3.2.1 CAP定理?

Consistency(一致性):

_數據一致更新,所有數據變動都是同步的。拿Redis來說,當進行修改或者保存、刪除之後,redis中的數據也應該進行相應變化。否則再次讀取,那麼讀取的就是髒數據。

什麼是NoSQL和關係型數據庫

​Availability(可用性):

可以理解為系統在提供服務必須一直處於可用的狀態,對於操作請求總是能夠在有限的時間內返回結果。

就像你去店裡面買一杯奶茶,服務員必須要給你做一杯奶茶出來。

而不是你要了一杯奶茶,人家不管你。

Partition tolerance(分區容錯性):

指的是分佈式系統在遇到任何網絡分區故障的時候,仍然能夠正常運行,只是影響了機器的性能;並且保證可用性,和一致性。除非是整個網絡環境都發生了故障。

就像汽車少一個輪胎也可以慢慢的開,但是發動機壞了,就癱瘓了。

山東掌趣網絡科技有限公司,專業軟件開發。

如果有不正確的地方,請及時指出來,以便即使進行修改。


分享到:


相關文章: