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 只保存须要的数据,没必要拘泥于以前定义的表结构
相关文章
相关标签/搜索