Cassandra 基礎知識大補(沒有單點故障,牛 )

Cassandra 概念

NoSQL數據庫系統,良好的可擴展性,一種流行的分佈式結構化數據存儲方案。

  • 可擴展,容錯和一致的。
  • 一個面向列的數據庫。
  • 分佈設計基於Amazon的Dynamo及其在Google的Bigtable上的數據模型。
  • 在Facebook創建。
  • Cassandra實現了一個沒有單點故障的Dynamo風格的複製模型,但增加了一個更強大的“列族”數據模型。
  • Cassandra被一些最大的公司使用,如Facebook,Twitter,Cisco,Rackspace,ebay,Netflix等。

主要特性

  • 分佈式
  • 基於column的結構化
  • 高伸展性

⑴系統功能

  • 不是一個數據庫,是由一堆數據庫節點共同構成的一個分佈式網絡服務。
  • 對Cassandra 的一個寫操作,會被複制到其他節點上去,對Cassandra的讀操作,也會被路由到某個節點上面去讀取。
  • 對於一個Cassandra集群來說,擴展性能是比較簡單,只管在群集裡面添加節點就可以。

⑵模式靈活

使用Cassandra,像文檔存儲,你不必提前解決記錄中的字段。你可以在系統運行時隨意的添加或移除字段。這是一個驚人的效率提升,特別是在大型部署上。

⑶可擴展性

良好的水平擴展。為給集群添加更多容量,可以指向另一臺電腦。你不必重啟任何進程,改變應用查詢,或手動遷移任何數據。

⑷多數據中心

可以調整節點佈局來避免某一個數據中心起火,一個備用的數據中心將至少有每條記錄的完全複製。

⑸範圍查詢

可以設置鍵的範圍來查詢。

⑹列表數據結構

在混合模式可以將超級列添加到5維。

⑺分佈式寫操作

有可以在任何地方任何時間集中讀或寫任何數據。並且不會有任何單點失敗。

寫入優勢

  • Cassandra是完完全全的內存動作。
  • 逐層搜索索引,若這個索引塊不在DATA BUFFER裡,觸發磁盤IO。
  • 通過索引定位數據塊,若數據塊不在DATA BUFFER裡,觸發磁盤IO。
  • 修改索引塊,修改數據塊,如果修改併發量大時,可能產生鎖等。
  • Cassandra記錄和Timestamp概念是分不開的,即無論你寫入多少次,數據庫只會以最新Timestamp的記錄為準。


Cassandra 基礎知識大補(沒有單點故障,牛 )

Cassandra

Cassandra關鍵組件

Cassandra的設計目的是處理跨多個節點的大數據工作負載,而沒有任何單點故障。Cassandra在其節點之間具有對等分佈式系統,並且數據分佈在集群中的所有節點之間。

集群中的所有節點都扮演相同的角色。 每個節點是獨立的,並且同時互連到其他節點。

集群中的每個節點都可以接受讀取和寫入請求,無論數據實際位於集群中的何處。

當節點關閉時,可以從網絡中的其他節點提供讀/寫請求。

  • 節點 - 它是存儲數據的地方。
  • 數據中心 - 它是相關節點的集合。
  • 集群 - 集群是包含一個或多個數據中心的組件。
  • 提交日誌 - 提交日誌是Cassandra中的崩潰恢復機制。每個寫操作都寫入提交日誌。
  • Mem-表 - mem-表是存儲器駐留的數據結構。提交日誌後,數據將被寫入mem表。有時,對於單列族,將有多個mem表。
  • SSTable - 它是一個磁盤文件,當其內容達到閾值時,數據從mem表中刷新。
  • 布隆過濾器 - 這些只是快速,非確定性的算法,用於測試元素是否是集合的成員。它是一種特殊的緩存。 每次查詢後訪問Bloom過濾器。

在Cassandra中,集群中的一個或多個節點充當給定數據片段的副本。

如果檢測到一些節點以過期值響應,Cassandra將向客戶端返回最近的值。

返回最新的值後,Cassandra在後臺執行讀修復以更新失效值。

Cassandra 數據類型


Cassandra 基礎知識大補(沒有單點故障,牛 )

Cassandra 和 RDBMS 的數據模型比對

Cassandra 查詢語言shell

允許用戶與它通信。使用此cqlsh,可以執行Cassandra查詢語言。

還可以定義模式,插入數據,執行查詢。

  • CAPTURE -捕獲命令的輸出並將其添加到文件。
  • CONSISTENCY -顯示當前一致性級別,或設置新的一致性級別。
  • COPY -將數據複製到Cassandra並從Cassandra複製數據。
  • DESCRIBE -描述Cassandra及其對象的當前集群。
  • EXPAND -縱向擴展查詢的輸出。
  • EXIT -使用此命令,可以終止cqlsh。
  • PAGING -啟用或禁用查詢分頁。
  • SHOW -顯示當前cqlsh會話的詳細信息,如Cassandra版本,主機或數據類型假設。
  • SOURCE -執行包含CQL語句的文件。
  • TRACING -啟用或禁用請求跟蹤。

Cassandra 編程環境

相關jar如下:

  • slf4j-api-1.7.5.jar
  • cassandra-driver-core-2.0.2.jar
  • guava-16.0.1.jar
  • metrics-core-3.0.2.jar
  • netty-3.9.0.Final.jar


分享到:


相關文章: