Cassandra 的數據模型是基於列族(Column Family)的四維或五維模型。它借鑑了 Amazon 的 Dynamo 和 Google’s BigTable 的數據結構和功能特點,採用 Memtable 和 SSTable 的方式進行存儲。在 Cassandra 寫入數據之前,需要先記錄日誌 ( CommitLog ),然後數據開始寫入到 Column Family 對應的 Memtable 中,Memtable 是一種按照 key 排序數據的內存結構,在滿足一定條件時,再把 Memtable 的數據批量的刷新到磁盤上,存儲爲 SSTable 。
圖 1. Cassandra 的數據模型圖:
Cassandra 的數據模型的基本概念:
1. Cluster : Cassandra 的節點實例,它可以包含多個 Keyspace
2. Keyspace : 用於存放 ColumnFamily 的容器,相當於關係數據庫中的 Schema 或 database
3. ColumnFamily : 用於存放 Column 的容器,類似關係數據庫中的 table 的概念
4. SuperColumn :它是一個特列殊的 Column, 它的 Value 值可以包函多個 Column5. Columns:Cassandra 的最基本單位。由 name , value , timestamp 組成
下面是關於數據模型實例分析 :