剛開始使用cassandra的時候,不太清楚為什么要使用cassandra。在想用mysql或redis等不是可以替代cassandra嗎? 為什么要花時間去了解使用它呢?
下面簡單講一下,我們為什么要使用cassandra。
cassandra的特點好處
- 方便擴展存儲
- 有彈性的模式定義
- 高寫入性能。
具體解釋
- 方便擴展存儲
Cassandra是分布式系統,只需要增加節點就可以擴充存儲空間;眾所周知,mysql的單表數據量是有瓶頸的,當數據量到達一定級別,就需要考慮分庫分表或者分區等等。並且mysql不是一個分布式的數據庫(雖然有主從,這不是真正意義上的分布式)。
使用cassandra,則不需要考慮該問題,當數據量增加,只需要增加cassandra的機器即可(運維層面擴展),對於開發來講,幾乎沒有影響。
- 有彈性的模式定義
cassandra的設計機制決定了,它的數據模式(列的增減)的改動的成本是非常低的。在mysql中,對一張大數據的表進行schema改動(列的增刪改)的成本是非常非常高的,一不小心就會導致鎖表,導致業務異常。而==有的業務數據量很大又由於需求的不穩定性會經常要求改動數據的模式定義==,這時就可以考慮cassandra,Cassandra很適合做這樣的事;
- 高寫入性能
Cassandra寫入性能是非常高的,Netflix曾經在一次測試中達到每秒超過100萬次的寫入;非常適合高寫入的應用,如廣告點擊記錄,用戶瀏覽記錄等等
- 較高(不低)的讀取性能
有的業務在選擇使用cassandra的時候會因為從某些資料里面得知,cassandra的讀取性能很低,而不敢使用。這點其實是誤解,在cassandra的早期版本確實是這樣。但是隨着cassandra的發展,該問題已經得到了顯著解決。具體可以參考DataStax公司的CTO兼聯合創始人的這篇文章關於cassandra的錯誤觀點。
但是當你的業務對讀取有較高的要求時,建議選擇正確的cassandra版本並進行合理的測試
適用場景
-
快速開發應用程序:Schema Free的特點,讓Cassandra可以快速適應你的初期變更;如果你使用關系型數據庫,那么就不得不從數據表、DAO層、Logic/Service層到UI層進行層層變更,哪怕只是一個小小的列名或字段類型變化;
-
大量寫入、統計和分析:Cassandra的列族設計是囊括數據關聯和排序的,並且可以不存儲不需要的數據,這極大減省了表聯接和冗余字段帶來的性能開銷,后者恰恰是高並發寫入操作、統計分析時關系型數據庫的瓶頸;
-
需要擴展的部署結構:Cassandra是面向分布式的設計,這讓它可以靈活地水平擴展,以在運維階段滿足你的需求,而不必考慮“將數據遷往更高性能的服務器”這樣的問題。
使用實例
- Yelp的廣告分析系統
- Spotify的所有用戶信息存儲