SQL到NOSQL的思維轉變
NOSQL系統一般都會宣傳一個特性,那就是性能好,然后為什么呢?關系型數據庫發展了這么多年,各種優化工作已經做得很深了,NOSQL系統一般都是吸收關系型數據庫的技術,那么,到底是什么因素束縛了關系型數據庫的性能呢?我們從系統設計的角度看這個問題。
NOSQL系統一般都會宣傳一個特性,那就是性能好,然后為什么呢?關系型數據庫發展了這么多年,各種優化工作已經做得很深了,NOSQL系統一般都是吸收關系型數據庫的技術,那么,到底是什么因素束縛了關系型數據庫的性能呢?我們從系統設計的角度看這個問題。
在NoSQL的許多產品中,我們通過benchmark可以看到的都是寫性能極度提升,而讀性能并沒有太大的漲幅甚至相對傳統RDBMS還有下降。比如Cassandra,MongoDB這兩個NoSQL的杰出代表。究其原因,我們可能會想到是因為當前UGC模式已經發展到白熱化,用戶產生內容導致讀寫比已經接近或者說小于1:1。
前面《為什么要使用NoSQL》和《關系數據庫還是NoSQL數據庫》兩篇從大體上介紹了為什么要用NoSQL,何時該用NoSQL。經常有朋友遇到困惑,看到NoSQL的介紹,覺得很好,但是卻不知道如何正式用到自己的項目中。很大的原因就是思維固定在MySQL中了,他們問得最多的問題就是用了NoSQL,我如何做關系查詢。那么接下來,我們看下怎么樣在我們的系統中使用NoSQL。
Twitter在其7.9一篇官方技術博客Cassandra at Twitter Today提到暫停使用Cassandra來代替MySQL存儲feed的計劃,這是Twitter一個重要的架構策略調整,因為之前Twitter一直是業界Cassandra方向的領頭羊。
我是從《MySQL Admin Cookbook》一書中看到這個問題的,有一定的隱蔽性,遂記之。友情提示:本文測試所用的MySQL版本是5.1.44-community,其它版本未測試,結果可能有差異。
在沒有OMF(托管文件)之前,數據庫管理員在創建數據文件的時候,需要關心兩個問題。一是該為這個數據文件取一個什么樣的名字,二是需要考慮新創建的數據文件會不會與已經存在的數據文件重復。當企業的數據庫比較大,有數百個數據文件時,這項工作就會變得非常的困難。為此需要采用一種機制,對數據文件進行自動管理。在Oracle數據庫中就提供了OMF托管文件這種機制。