1. 程式人生 > >關係型資料庫與非關係型資料庫詳細比較

關係型資料庫與非關係型資料庫詳細比較

關係型資料庫與非關係型資料庫詳細比較

 
 
  1. 1.關係型資料庫通過外來鍵關聯來建立表與表之間的關係,
  2. 2.非關係型資料庫通常指資料以物件的形式儲存在資料庫中,而物件之間的關係通過每個物件自身的屬性來決定。
  3. 3.非關係型資料庫中,我們查詢一條資料,結果出來一個數組,關係型資料庫中,查詢一條資料結果是一個物件。

區別

關係型資料庫

非關係型資料庫(Nosql)

儲存方式

表格式儲存。

儲存在表的行和列中。他們之間很容易關聯協作儲存,提取資料很方便

而Nosql資料庫則與其相反,他是大塊的組合在一起。

通常儲存在資料集中,就像文件、鍵值對或者圖結構。

儲存結構

結構化資料。

資料表都預先定義了結構(列的定義),結構描述了資料的形式和內容。這一點對資料建模至關重要,雖然預定義結構帶來了可靠性和穩定性(優點),但是修改這些資料比較困難(缺點)。

而Nosql資料庫基於動態結構,使用與非結構化資料。因為Nosql資料庫是動態結構,可以很容易適應資料型別和結構的變化。

儲存規範

資料儲存為了更高的規範性,把資料分割為最小的關係表以避免重複,獲得精簡的空間利用。雖然管理起來很清晰,但是單個操作設計到多張表的時候,資料管理就顯得有點麻煩

而Nosql資料儲存在平面資料集中,資料經常可能會重複。單個數據庫很少被分隔開,而是儲存成了一個整體,這樣整塊資料更加便於讀寫

儲存擴充套件

系型資料庫是縱向擴充套件,也就是說想要提高處理能力,要使用速度更快的計算機。因為資料儲存在關係表中,操作的效能瓶頸可能涉及到多個表,需要通過提升計算機效能來克服。雖然有很大的擴充套件空間,但是最終會達到縱向擴充套件的上限

而Nosql資料庫是橫向擴充套件的,它的儲存天然就是分散式的,可以通過給資源池新增更多的普通資料庫伺服器來分擔負載。

查詢方式

結構化查詢語言來操作資料庫(就是我們通常說的SQL)

 

關係型資料庫表中主鍵

關係型資料庫使用預定義優化方式(比如索引)來加快查詢操作

以塊為單元操作資料,使用的是非結構化查詢語言(UnQl),它是沒有標準的

Nosql中儲存文件的ID

更簡單更精確的資料訪問模式

事務

遵循ACID規則(原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、永續性(Durability))

支援對事務原子性細粒度控制,並且易於回滾事務。

遵循BASE原則(基本可用(Basically Availble)、軟/柔性事務(Soft-state )、最終一致性(Eventual Consistency))

Nosql資料庫是在CAP(一致性、可用性、分割槽容忍度)中任選兩項,因為基於節點的分散式系統中,很難全部滿足,所以對事務的支援不是很好,雖然也可以使用事務,但是並不是Nosql的閃光點。

效能

為了維護資料的一致性付出了巨大的代價,讀寫效能比較差。在面對高併發讀寫效能非常差,面對海量資料的時候效率非常低。

Nosql儲存的格式都是key-value型別的,並且儲存在記憶體中,非常容易儲存,而且對於資料的 一致性是 弱要求。Nosql無需sql的解析,提高了讀寫效能。

 

授權方式

關係型資料庫通常有SQL Server,Mysql,Oracle。大多數的關係型資料庫都是付費的並且價格昂貴,成本較大。

主流的Nosql資料庫有redis,memcache,MongoDb。

而Nosql資料庫通常都是開源的。

關係型資料庫與非關係型資料庫優缺點對比

資料庫
型別
特性 優點 缺點
關係型資料庫
SQLite、Oracle、mysql
1、關係型資料庫,是指採用了關係模型來組織
資料的資料庫;
2、關係型資料庫的最大特點就是事務的一致性;
3、簡單來說,關係模型指的就是二維表格模型,
而一個關係型資料庫就是由二維表及其之間的聯絡所組成的一個數據組織。
1、容易理解:二維表結構是非常貼近邏輯世界一個概念,關係模型相對網狀、層次等其他模型來說更容易理解;
2、使用方便:通用的SQL語言使得操作關係型資料庫非常方便;
3、易於維護:豐富的完整性(實體完整性、參照完整性和使用者定義的完整性)大大減低了資料冗餘和資料不一致的概率;
4、支援SQL,可用於複雜的查詢。
1、為了維護一致性所付出的巨大代價就是其讀寫效能比較差;
2、固定的表結構;
3、高併發讀寫需求;
4、海量資料的高效率讀寫;
非關係型資料庫
MongoDb、redis、HBase
1、使用鍵值對儲存資料;
2、分散式;
3、一般不支援ACID特性;
4、非關係型資料庫嚴格上不是一種資料庫,應該是一種資料結構化儲存方法的集合。
1、無需經過sql層的解析,讀寫效能很高;
2、基於鍵值對,資料沒有耦合性,容易擴充套件;
3、儲存資料的格式:nosql的儲存格式是key,value形式、文件形式、圖片形式等等,文件形式、圖片形式等等,而關係型資料庫則只支援基礎型別。
1、不提供sql支援,學習和使用成本較高;
2、無事務處理,附加功能bi和報表等支援也不好;

 

關於Nosql

1.Nosql

非關係型資料庫,Not only sql。

2.Nosql特點:

(1)易擴充套件,資料之間沒有關係的。

(2)大資料量,高效能。高效能讀寫非常靈活的。

(3)靈活的資料模型。不需要事先對儲存資料建立欄位。

(4)高可用。

簡單概括:用於高併發讀寫、海量資料的高效率儲存和訪問、高可擴充套件性和高可用性。

3.Nosql主要主流產品

Redis(廣泛應用),CouchDB,mongoDB,Cassandra等。Nosql中比較火的三個資料庫Redis、Memchache、MongoDb。

4.Nosql資料庫四大分類:

(1)鍵值對儲存(key-value):Redis鍵值對儲存,優勢:快速查詢,缺點:儲存資料缺少結構化。

(2)列儲存:Hbase,優勢:快速查詢,擴充套件性強。缺點:功能相對於侷限。

(3)文件資料庫儲存:MongoDB,早起應用多。優勢:要求不特別的嚴格。缺點:查詢性不高,缺少統一查詢語法。

(4)圖形資料庫儲存:應用於社交網路,優勢:利用圖結構相關演算法。缺點:需要整個圖計算才得出結果,不容易做分散式叢集方案。