1. 程式人生 > >Cassandra學習筆記之資料模型

Cassandra學習筆記之資料模型

Column

Column是Cassandra中最小的資料單元,它是一個三元的資料型別,包含name,value,timestamp.


Column必須有一個名稱,類似於JAVA中的字串,應用建立後可以動態地設定,Column可以在name上建索引。不要求每個name都有對應的value,value可以為空。還有一列是時間戳,標識column最新更新的時間。時間戳是由客戶端應用程式提供的,請求到來時總是希望返回時間戳最新的資料,如果多個客戶端同時更新相同的列,列值與最近的更新相同。

SuperColumn

ColumnFamily可以是一個常規Column,也可以是一個SuperColumn.可以將SuperColumn想象成Column的陣列,它包含一個name以及一系列Column.


注意:SuperColumn本身不包含timestamp屬性。使用SuperColumn有一個限制,要讀取其中一個子列的值,必須把所有子列都反序列化,且不能在子列中建索引。因此SuperColumn的應用場合是子列數相對較小的情況。

ColumnFamily

相比關係型資料庫,Cassandra中的ColumnFamily相當於資料庫中的表,它是一個包含了許多行的結構,每一行由Key和這個Key所關聯的Column組成。與關係資料庫不同的是,每行不要求有相同數目的列。有兩種不同的列族設計:靜態和動態。

靜態ColumnFamily:使用一組不變的列名,這點更像關係型資料庫。如下圖:


動態ColumnFamily:每一行的列名不相同,是在執行過程中動態計算和設定的。如下圖:


ColumnFamily每一行可以是一系列Column,也可以是一系列SuperColumn。

Keyspace

每個Keyspace包含多個ColumnFamily,並且可以指定資料備份策略和備份數。一般一個Cassandra一個Keyspace。

下節學習:Cassandra叢集通訊協議-Gossip.

參考資料: