1. 程式人生 > >關係資料庫和非關係資料庫

關係資料庫和非關係資料庫

關係型資料庫的最大特點就是事務的一致性:傳統的關係型資料庫讀寫操作都是事務的,具有ACID的特點,這個特性使得關係型資料庫可以用於幾乎所有對一致性有要求的系統中,如典型的銀行系統。

但是,在網頁應用中,尤其是SNS應用中,一致性卻不是顯得那麼重要,使用者A看到的內容和使用者B看到同一使用者C內容更新不一致是可以容忍的,或者說,兩個人看到同一好友的資料更新的時間差那麼幾秒是可以容忍的,因此,關係型資料庫的最大特點在這裡已經無用武之地,起碼不是那麼重要了。

相反地,關係型資料庫為了維護一致性所付出的巨大代價就是其讀寫效能比較差,而像微博、facebook這類SNS的應用,對併發讀寫能力要求極高,關係型資料庫已經無法應付(在讀方面,傳統上為了克服關係型資料庫缺陷,提高效能,都是增加一級memcache來靜態化網頁,而在SNS中,變化太快,memchache已經無能為力了),因此,必須用新的一種資料結構儲存來代替關係資料庫。

關係資料庫的另一個特點就是其具有固定的表結構,因此,其擴充套件性極差,而在SNS中,系統的升級,功能的增加,往往意味著資料結構巨大變動,這一點關係型資料庫也難以應付,需要新的結構化資料儲存。

於是,非關係型資料庫應運而生,由於不可能用一種資料結構化儲存應付所有的新的需求,因此,非關係型資料庫嚴格上不是一種資料庫,應該是一種資料結構化儲存方法的集合。

必須強調的是,資料的持久儲存,尤其是海量資料的持久儲存,還是需要一種關係資料庫這員老將。

關係型資料庫的優勢:

1. 複雜查詢可以用SQL語句方便的在一個表以及多個表之間做非常複雜的資料查詢。

2. 事務支援使得對於安全效能很高的資料訪問要求得以實現。對於這兩類資料庫,對方的優勢就是自己的弱勢,反之亦然。

非關係型資料庫的優勢:

1. 效能NOSQL是基於鍵值對的,可以想象成表中的主鍵和值的對應關係,而且不需要經過SQL層的解析,所以效能非常高。

2. 可擴充套件性同樣也是因為基於鍵值對,資料之間沒有耦合性,所以非常容易水平擴充套件。