Cassandra的數據存儲結構——cassandra總結(一)


  Cassandra 的數據模型是基於列族(Column Family)的四維或五維模型。它借鑒了 Amazon 的 Dynamo 和 Google's Big Table 的數據結構和功能特點,采用Memtable的方式進行存儲。在 Cassandra 寫入數據之前,需要先記錄日志 Commitlog),然后數據開始寫入到 Column Family 對應的 Memtable 中,Memtable 是一種按照 key 排序數據的內存結構,在滿足一定條件時,再把 Memtable 的數據批量的刷新到磁盤上,存儲為 SSTable 

1. Cassandra 的數據模型圖:

 

 

2.Cassandra 的數據模型的基本概念:

  Cluster:Cassandra 的節點實例,它可以包含多個Keyspace
  Keyspace::用於存放 ColumnFamily 的容器,相當於關系數據庫中的 Schema 或 database

  ColumnFamily::用於存放 Column 的容器,類似關系數據庫中的 table 的概念 

  SuperColumn::它是一個特列殊的 Column, 它的 Value 值可以包函多個Column

  Column::Cassandra 的最基本單位。由name , value , timestamp組成

 

3.Cassandra中數據存放規則

  data:存儲真正的數據文件,既后面的SStable文件,可以指定多個目錄。

  commitlog:存儲未寫入SSTable中的數據(在每次寫入之前先放入日志文件)。

  cache:存儲系統中的緩存數據(在服務重啟的時候從這個目錄中加載緩存數據)。

 

4.Cassandra的特點如下:

  1.靈活的schema:不需要象數據庫一樣預先設計schema,增加或者刪除字段非常方便(on the fly)。

  2.支持range查詢:可以對Key進行范圍查詢。

  3.高可用,可擴展:單點故障不影響集群服務,可線性擴展。

 

5.Cassandra內部數據的排序

  有一點需要明確,我們使用Cassandra的時候,數據在寫入的時候就已經排好順序了。在某一個Key內的所有Column都是按照它的Name來排序的。我們可以在storage-conf.xml文件中指定排序的類型。目前Cassandra提供的排序類型有:BytesType, UTF8TypeLexicalUUIDType, TimeUUIDType, AsciiType,和LongTypeCassandra的排序功能是允許我們自己實現的,只要你繼承org.apache.cassandra.db.marshal.IType就可以了。

 

本文參考:http://www.ibm.com/developerworks/cn/opensource/os-cn-cassandra/

     http://www.cnblogs.com/ggzwtj/archive/2011/07/21/2113350.html

     http://database.51cto.com/art/201005/202153.htm

感謝以上文章作者的奉獻和分享。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM