Cassandra的數據模型的理解


        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的例子:


(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 中的第一個列,如果想要用多個列就可以把這的多個列用小括號括起來。
     http://docs.datastax.com/en/cql/3.1/cql/cql_reference/refCompositePk.html 這里有一個例子,說的很清楚。  


參考資料:
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/  


免責聲明!

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



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