1. 程式人生 > >關係型與非關係型資料庫之間的區別

關係型與非關係型資料庫之間的區別

一、關係型資料庫     關係型資料庫,是指採用了關係模型來組織資料的資料庫。     簡單來說,關係模型指的就是二維表格模型,而一個關係型資料庫就是由二維表及其之間的聯絡所組成的一個數據組織。關係型資料庫,是建立在關係模型基礎上的資料庫,藉助於集合代數等數學概念和方法來處理資料庫中的資料。 關係模型中常用的概念:     關係:可以理解為一張二維表,每個關係都具有一個關係名,就是通常說的表名     元組:可以理解為二維表中的一行,在資料庫中經常被稱為記錄     屬性:可以理解為二維表中的一列,在資料庫中經常被稱為欄位     域:屬性的取值範圍,也就是資料庫中某一列的取值限制     關鍵字:一組可以唯一標識元組的屬性,資料庫中常稱為主鍵,由一個或多個列組成     關係模式:指對關係的描述。其格式為:關係名(屬性1,屬性2, ... ... ,屬性N),在資料庫中成為表結構。

二、NoSQL(非關係型資料庫)

NoSQL,指的是非關係型的資料庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同於傳統的關係型資料庫的資料庫管理系統的統稱。NoSQL用於超大規模資料的儲存。(例如谷歌或Facebook每天為他們的使用者收集萬億位元的資料)。這些型別的資料儲存不需要固定的模式,無需多餘操作就可以橫向擴充套件。非關係型資料庫的實質就是通過減少用不到或很少用的功能,來大幅度提高產品效能。

三、兩者各有優勢

非關係型資料庫的優勢: 1. 效能 NOSQL是基於鍵值對的,可以想象成表中的主鍵和值的對應關係,而且不需要經過SQL層的解析,所以效能非常高。 2. 可擴充套件性 同樣也是因為基於鍵值對,資料之間沒有耦合性,所以非常容易水平擴充套件。

關係型資料庫的優勢: 1. 複雜查詢 可以用SQL語句方便的在一個表以及多個表之間做非常複雜的資料查詢。 2. 事務支援 使得對於安全效能很高的資料訪問要求得以實現。

對於這兩類資料庫,對方的優勢就是自己的弱勢,反之亦然。

四、SQL  vs  NoSQL(區別)

資料表VS.資料集

關係型和非關係型資料庫的主要差異是資料儲存的方式。關係型資料天然就是表格式的,因此儲存在資料表的行和列中。資料表可以彼此關聯協作儲存,也很容易提取資料。與其相反,非關係型資料不適合儲存在資料表的行和列中,而是大塊組合在一起。非關係型資料通常儲存在資料集中,就像文件、鍵值對或者圖結構。你的資料及其特性是選擇資料儲存和提取方式的首要影響因素。

預定義結構VS.動態結構

關係型資料通常對應於結構化資料,因為資料表都有預定義好的結構(列的定義),結構描述了資料的形式和內容。這一點對資料建模至關重要,你必須“第一時間先把結構定義好”。雖然預定義結構帶來了可靠性和穩定性,但是已經存入資料的表結構要修改就非常痛苦了。另一方面,非關係型資料基於動態結構,通常適用於非結構化資料。非關係型資料可以很容易適應資料型別和結構的變化,因為動態結構本身就支援這一點。

儲存規範化VS儲存代價

關係型資料庫的資料儲存是為了更高的規範性,把資料分隔成最小的邏輯表(關係表)以避免重複,獲得最精簡的空間利用。雖然資料規範性會使資料管理更清晰,但它通常也會帶來一點點複雜性,尤其是單個操作可能涉及多個關係表的時候,資料管理就有點麻煩。另外,更精簡的空間利用通常可以節約寶貴的資料儲存,但是在當今世界我們基本可以認為儲存的代價(磁碟空間)是微不足道的。而非關係型資料儲存在平面資料集中,資料經常可能存在重複。單個數據庫很少被分隔開,而是儲存成一個整體,這樣是為了整塊資料更容易讀寫。

結構化查詢VS非結構化查詢

關係型資料庫通過所謂結構化查詢語言(也就是我們常說的SQL)來操作資料。SQL支援資料庫CRUD(增加,查詢,更新,刪除)操作的功能非常強大,是業界標準用法。非關係型資料庫以塊(像文件一樣)為單元操縱資料,使用所謂的非結構化查詢語言(UnQL),它是沒有標準的,因資料庫提供商的不同而不同。關係型表中主鍵的概念對應非關係儲存中的文件Id。SQL資料庫使用預定義優化方式(比如列索引定義)幫助加速查詢操作,而NoSQL資料庫採用更簡單而精確的資料訪問模式。