Apache Cassandra
儲存數據的系統
ApacheCassandra是一套開源分散式Key-Value存儲系統。它最初由Facebook開發,用於儲存特別大的數據。Facebook目前在使用此系統。
主要特性:
分散式
基於column的結構化
高伸展性
Cassandra的主要特點就是它不是一個資料庫,而是由一堆資料庫節點共同構成的一個分散式網路服務,對Cassandra的一個寫操作,會被複制到其他節點上去,對Cassandra的讀操作,也會被路由到某個節點上面去讀取。對於一個Cassandra群集來說,擴展性能是比較簡單的事情,只管在群集裡面添加節點就可以了。
Cassandra是一個混合型的非關係的資料庫,類似於Google的BigTable。其主要功能比Dynomite(分散式的Key-Value存儲系統)更豐富,但支持度卻不如文檔存儲MongoDB(介於關係資料庫和非關係資料庫之間的開源產品,是非關係資料庫當中功能最豐富,最像關係資料庫的。支持的數據結構非常鬆散,是類似json的bjson格式,因此可以存儲比較複雜的數據類型。)Cassandra最初由Facebook開發,後轉變成了開源項目。它是一個網路社交雲計算方面理想的資料庫。以Amazon專有的完全分散式的Dynamo為基礎,結合了GoogleBigTable基於列族(ColumnFamily)的數據模型。P2P去中心化的存儲。很多方面都可以稱之為Dynamo2.0
和其他資料庫比較,有幾個突出特點:
模式靈活:使用Cassandra,像文檔存儲,你不必提前解決記錄中的欄位。你可以在系統運行時隨意的添加或移除欄位。這是一個驚人的效率提升,特別是在大型部署上。
真正的可擴展性:Cassandra是純粹意義上的水平擴展。為給集群添加更多容量,可以指向另一台電腦。你不必重啟任何進程,改變應用查詢,或手動遷移任何數據。
多數據中心識別:你可以調整你的節點布局來避免某一個數據中心起火,一個備用的數據中心將至少有每條記錄的完全複製。
一些使Cassandra提高競爭力的其他功能:
範圍查詢:如果你不喜歡全部的鍵值查詢,則可以設置鍵的範圍來查詢。
列表數據結構:在混合模式可以將超級列添加到5維。對於每個用戶的索引,這是非常方便的。
分散式寫操作:有可以在任何地方任何時間集中讀或寫任何數據。並且不會有任何單點失敗。