在發布YunTable0.1版之後,我將這個好訊息和我一個在中國移動工作的同濟同學分享了,他首先向我表示祝賀,但是他不理解像YunTable這樣的分散式資料庫和Oracle這樣的關係型資料庫有什麼區別?當接到這個問題的時候,我並沒有立即回答,因為我感到這個疑問不僅是他一個人會有,而且估計有很多同學也有類似的疑問,這就是本文的由來。但在介入分散式資料庫之前,讓我們剖析一下關係型資料庫有哪些不足。
關係型資料庫的不足之處
- 擴充困難:由於類似“join”等語句的存在,使得一個關係型資料庫很難擴充,即使能擴充,也比較常用“垂直擴充”這類比較昂貴的解決方案。
- 並發讀寫慢:由於關係型資料庫內部存在很多鎖,導致在並發讀寫方面有一定的不足,當訪問量上去的時候,有可能會出現效能大幅降低的情況。
- 成本高:除了上面提到的昂貴的解決方案外,普通的商務資料庫的購置成本也是非常高的。
- 有限的支撐容量:由於類似Oracle和IBM這樣的公司在設計資料庫的時候,並不是以Google這樣的互連網企業為勘探,使得它們的產品雖然能滿足大型企業的需求,但是面對類似Google這樣的海量需求而言,是難以為繼的。
分散式資料庫的優勢
- 簡單的擴充:只要通過簡單幾個步驟就能給一個機群添加一個新的節點來支撐新的流量和資料,總體規模能達到P以上的層級,在這方面HBase已經有成功的範例了。
- 自動的備份:分散式資料庫的產品基本都會附帶自動備份功能來保護資料的安全。
- 快速的讀寫:因為在記憶體利用,壓縮和Column儲存等方面分散式資料庫都有很多的支援,所以在讀寫方面,速度會有優勢,這方面的例子有Cassandra。
- 低廉的成本:由於開源的特性,所有其購置成本是很低的。
雖說關係型資料庫有很多不足之處,但是其還有很多優點,比如:對工業標準的SQL語言有良好的支援,事務的支援和較低的學習成本,也就是說,分散式資料庫要替代關係型資料庫,還有很多路要走,所以現在分散式資料庫還屬於小眾。
最後,通知一下,YunTable馬上將發布其0.11和0.2版,0.11將會是一個fixpack,主要修複YunTable0.1版中存在的記憶體流失問題,而0.2版將會是以feature為主的版本,目標是完整實現其分布式模型,並能夠正常的工作,但不要求其能在Production的環境下運作,到時將會在Google Code上進行開源,希望大家有時間的話,可以一起參與,畢竟這是一個非常不錯的相互學習的機會。
參考資料:
- NoSQL資料庫探討之一 - 為什麼要用非關聯式資料庫?
- Cassandra technical overview