Cassandra屬於NoSQL數據庫,NoSQL和傳統關系型數據庫不同,NOSQL偏好數據冗余,因為NoSQL一般無法做表關聯查詢。
(1) keySpace
基本上可以將Keyspace 理解成MySQL 之中的Database. 只不過Cassandra的”database” 包含了更多的內容:
- Replication Factor : 復制因數。 表示一份數據在一個DC 之中包含幾份。常用奇數~ 比如我們項目組設置的replication_factor=3
- Replica placement strategy : 復制策略。 默認的是SimpleStrategy. 如果是單機架、單數據中心的模式,保持使用SimpleStrtegy即可。
下面是一個簡單的通過CQL 語句創建一個新的keyspace的例子:
1
2
|
CREATE
KEYSPACE
Keyspace
name
WITH
replication
=
{
'class':
'SimpleStrategy',
'replication_factor'
:
3};
|
(2) Column Family/Column
可以理解Column Family為MySQL的Table, 將Column 理解為MySQL之中的一條記錄。
所謂Column就是: A tuple with name, value and timestamp。之所以稱之為Column Family, 是因為Cassandra 是一種
列式數據庫
,因此將一組Column稱為Column Family。.
比較有意思的是,Column 包含了Timestamp。 其作用主要是當有新數據覆蓋的時候,不是直接將老數據從存儲介質上刪除,而是直接寫入新的數據。 當需要查詢的時候,通過key或者某種方式找到的所有Column,並去找Timestamp 最新的Column。 老數據會在一段時間之后自行刪除。
可以使用下面的一句話概括:
首先Map結構,通過key來進行查詢速度會非常快。 再加上內嵌的SortedMap, 可以進行順序查找,速度也很快。 當然,如何快速的生成Key等就是另外一個topic
Cassandra 整體數據可以理解成一個巨大的嵌套的Map。只能按順序一層一層的深入,不能跳過中間某一層~

(3)Super Column
已經被淘汰,可以不用關注
(4)Primary key
Primary key = Partition Key + [Clustering Key]
(5)Partition Key
其實就是指在Primary key 中的第一個列,如果想要用多個列就可以把這的多個列用小括號括起來。
參考資料:
1)Data Modeling Concepts,http://docs.datastax.com/en/cql/3.1/cql/ddl/dataModelingApproach.html
2)Data modeling in 30 seconds http://docs.datastax.com/en/landing_page/doc/landing_page/dataModeling.html
3)[Cassandra教程] (四)使用Key的正確姿勢,http://www.flyml.net/2016/09/05/cassandra-tutorial-right-way-to-use-key/