cassandra權威指南讀書筆記一爲什麼選擇非關係型數據庫

            首先說一下關係型數據庫的優點,關係型數據庫,關係型數據庫這個概念和它的應用已經演化了40多年了,毫無疑問,它是軟件應用歷史上最成功的一個。它既可以在個人小公司裏通過微軟Access數據庫來使用,也可以在大型跨國公司的上百臺經過調優的服務器上使用,構成存儲數據TB數據的數據倉庫。關係數據庫存儲了賬單、用戶記錄、產品目錄、賬戶明細、用戶鑑權、信息等,可以說關係型數據庫裏面差不多存儲了整個世界。可以說關係型數據庫差不多存儲了整個數據庫。

          當基於關係型數據庫的應用取得成功的時候,訪問量大幅度增加的時候,我們就會遇到可擴展性問題。所有最基本功能的關係型數據庫都會支持join操作,不過join可能會很慢。由於數據庫通常依靠事物來保持一致性,而事物需要鎖住數據庫的一部分,使之不能夠被其他用戶訪問。因爲鎖本身意味着競爭同一數據的用戶會被放入隊列,等待獲得讀寫權限,這在高負載的情況下可能會造成系統的死穴。

           通常我們會用如下的方法解決這些問題,很多時候是下面這個順序。

            1 提升硬件能力來解決問題,如增加內存、用更快的處理器以及升級硬盤,稱之爲垂直擴展。

            2  當問題再度出現時,解決方法很類似:既然一臺機器已經不堪重負了,我們就增加新的計算機,構成數據庫集羣。不過,這樣你就會在正常的使用及出故障的時候遇到數據複製與一致性的問題了。

           3   現在我們需要更新數據庫管理系統的配置。

           4   在數據庫系統上投入了足夠的精力之後,我們開始轉過來審視自己的應用。我們開始優化索引、優化查詢。不過,當我們的應用達到這個規模的時候,恐怕不太會完全沒做過索引和查詢優化,可能已經優化過不少了。那麼,重新審視所有數據庫訪問代碼,想發現零星的可以調優的機會,這是一件相當頭痛的事。

           5   我們增加了一個緩存層。對於大型系統可能會引入分佈式緩存,如memcached、EHCache、Oracle Coherence或其他類似產品。這樣,又面臨更新緩存和更新數據庫一致性的問題了,對於集羣來說,問題更加嚴重。

         當遇到這些問題時,顯然關係型數據庫顯然就侷限了,解決不了這樣的問題。cassandra就是爲了解決這樣的問題而生的,apache cassandra是一個開源的、分佈式、無中心、無彈性可擴展、高可用、容錯、一致性可調、面向列的數據庫,基於Amazon Dynamo的分佈式設計和Google BigTable的數據模型,由Facebook創建,已經在一些最流行的網站中取得了應用。下面介紹下他是如何解決菲關係型數據庫解決不了的問題的。

         1  分佈式與無中心

          cassandra是分佈式的,這意味着它可以運行在多臺機器上,並呈現給用戶一個一致的整體。事實上,在一個節點上運行cassandra毫無意義。需要運行多個節點才能幫助你瞭解他的工作機制。對於很多存儲系統,一旦你開始擴展它,就需要把某些節點設爲主節點,其他則作爲從節點。但cassandra是無數據中心的,每個節點都是一樣的,沒有節點會承擔特殊的管理任務。無中心這一事實意味着cassandra不會單節點失效。

        2   彈性可擴展性

        可擴展性是指系統架構可以讓系統提供更多的服務而不降低使用性能的特性。僅僅通過給現有的機器增加硬件的容量、內存進行垂直擴展,是最簡單的達到可擴展性的手段。彈性可擴展性是指水平可擴展性,意即你的集羣可以不間斷地擴展或縮減規模。要做到這點,集羣必須能夠在不大幅修改或者重新配置的情況下,接受那些新加入、獲得全部或者部分數據的節點,讓它們開始提供服務。你不需要重新啓動進程,不必修改應用的查詢,也無需自己手工重新均衡數據分佈。

      3     高可用與容錯

      cassandra就是高可用的。你可以在不中斷系統的情況下替換故障節點,還可以把數據分佈到多個數據中心,從而提供更好的本地訪問性能,並且在某一個數據中心發生火災、洪水等不可抗災難的時候防止系統徹底癱瘓。

     4    可調節的一致性

     一致性的含義是讀操作一定會返回最新寫入的結果。cassandra只支持最終一致性,並不支持嚴格的一致性。但是這是在節點可用性和分區耐受性之前做的折中。cassandra希望了一定的一致性來換來了完全的可用性。

    由於 cassandra具有以上的特點,解決了關係型數據庫解決不了的一些問題。後面,我將寫如何應用cassandra來解決實際的問題。

          

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章