正文
最近了解了一點非關系型數據庫,剛剛接觸,覺得這是一個很好的方向,對于大數據 方面的處理,非關系型數據庫能起到至關重要的地位。這里我主要是整理了一些前輩的經驗,僅供參考。
回到頂部
關系型數據庫的特點
1.關系型數據庫
關系型數據庫,是指采用了關系模型來組織數據的數據庫。 簡單來說,關系模型指的就是二維表格模型,而一個關系型數據庫就是由二維表及其之間的聯(lián)系所組成的一個數據組織。常見 的關系型數據庫有Oracle、Mysql、sql server等等。
2. 關系型數據庫瓶頸
高并發(fā)讀寫需求
網站的用戶并發(fā)性非常高,往往達到每秒上萬次讀寫請求,對于傳統(tǒng)關系型數據庫來說,硬盤I/O是一個很大的瓶頸
海量數據的高效率讀寫 網站每天產生的數據量是巨大的,對于關系型數據庫來說,在一張包含海量數據的表中查詢,效率是非常低的
高擴展性和可用性
在基于web的結構當中,數據庫是最難進行橫向擴展的,當一個應用系統(tǒng)的用戶量和訪問量與日俱增的時候,數據庫卻沒有辦法像web server和app server那樣簡單的通過添加更多的硬件和服務節(jié)點來擴展性能和負載能力。對于很多需要提供24小時不間斷服務的網站來說,對數據庫系統(tǒng)進行升級和擴展是非常痛苦的事情,往往需要停機維護和數據遷移。
對網站來說,關系型數據庫的很多特性不再需要了:
事務一致性
關系型數據庫在對事物一致性的維護中有很大的開銷,而現在很多web2.0系統(tǒng)對事物的讀寫一致性都不高
讀寫實時性
對關系數據庫來說,插入一條數據之后立刻查詢,是肯定可以讀出這條數據的,但是對于很多web應用來說,并不要求這么高的實時性,比如發(fā)一條消息之后,過幾秒乃至十幾秒之后才看到這條動態(tài)是完全可以接受的
復雜SQL,特別是多表關聯(lián)查詢
任何大數據量的web系統(tǒng),都非常忌諱多個大表的關聯(lián)查詢,以及復雜的數據分析類型的復雜SQL報表查詢,特別是SNS類型的網站,從需求以及產品階級角度,就避免了這種情況的產生。往往更多的只是單表的主鍵查詢,以及單表的簡單條件分頁查詢,SQL的功能極大的弱化了
在關系型數據庫中,導致性能欠佳的最主要原因是多表的關聯(lián)查詢,以及復雜的數據分析類型的復雜SQL報表查詢。為了保證數據庫的ACID特性,我們必須盡量按照其要求的范式進行設計,關系型數據庫中的表都是存儲一個格式化的數據結構。每個元組字段的組成都是一樣,即使不是每個元組都需要所有的字段,但數據庫會為