Cassandra數據模型

Ⅰ、數據模型

1.1 Column

一組包含Name/Value Pair的數據叫Row,其中每一組Name/Value Pair叫Column數據庫

Column是Cassandra最基本的數據結構,它是一個三元數據類型,包含name,value,timestamp(記錄最後一次變動時間)。此處name和value都是byte[]類型,name最大長度爲64k,value最大爲2G(非流式數據讀取,即將整個value加載到heap內存中,這很危險,咱們通常確保value在幾M大小以防內存溢出)設計模式

Cassandra中Column的name不被限制爲字符串類型數據結構

1.2 Super Column

Column的value值不是單純的數值,而是被分割成多個子Column,則這個大的Column叫作SpuerColumn,SuperColumn不包含timestamp編碼

1.3 Column Family

多個Column組成Column Familyspa

Column Family是Column的容器,將同類的數據聯繫在一塊兒,這時候相似於關係數據庫中的table設計

根據Column的類型能夠將Column Family分爲standard column family和super column family排序

1.4 Keyspaces

Column Family的上一級容器叫作Keyspaces,能夠理解爲關係型數據庫的Database索引

1.5 Composite Keys

用key1:key2這種結構存儲一對值做爲一個key,這個冒號也能夠換成其餘符號內存

1.6 Cluster

一個Cassandra節點能夠包含多個keyspaces,而多個Cassandra節點按照環形排列在一塊兒,分配好數據,每一個節點包含一個副本,若是發生故障,副本接替原節點工做,這種組合叫作Clusterci

1.7 Cassandra數據模型的排序規則

定義Column Family時,能夠包含一個名爲CompareWith的元素,讓它決定Column Family的排序規則。Cassandra的排序支持字符、字節、數字、日期時間:

BytesType:默認排序方法,直接比較字節,不檢查字節是否符合某種編碼

LongType:按8字節的長整型數值排序,默認從小到大

UTF8Type:按照Column第一個字符進行排序

AsciiType、LexicalUUIDType、Integer Type、TimeUUIDType:

Ⅱ、Cassandra與傳統數據庫對比

Relation Model CassandraModel
Database Keyspace
Table Column Family(CF)
Primary Key Row Key
Column name Column name/key
Column value Column value

Ⅲ、Cassandra數據設計模式

  • Row-Oriented
    能夠使用一個惟一識別號訪問行,因此Cassandra是一個帶索引的面向行的存儲
  • Schema Free 只保存須要的數據,沒必要拘泥於以前定義的表結構
相關文章
相關標籤/搜索