Cassandra数据模型

Cassandra数据模型定义

  • 列族(column faimily),作为存储和组织数据的一种方法

物理模型

  • Cluster
    • Data center(s)
      • Rack(s)
        • Server(s)
          • Node (more accurately, a vnode)

Cluster

Cassandra运行在多台主机上,这些主机可以跨域距离的限制,并构成了Cassandra最外层的容器-集群,每个cassandra节点都包含一个或多个数据副本节点,当cassandra节点故障后,数据副本节点会接替故障节点持续性工作。Cassandra以环形方式将节点分配在集群中,并为其分配数据。每台Cassandra节点都必须指定同一个Cluster名称。

DataCenter

当所有cassandra节点都分布一个中心机房时,我们称为一个数据中心,数据中心永远是集群的一个子集。

Rack

机柜信息存储在每个节点的配置文件里,一般同一个数据中心的节点会有一个相同的Rack名称。

Servers

一台服务器默认拥有256个vnodes

Node

确切来说指的vnode,存储数据的单元,一台服务器设置的vnode数目越大,这台机器上存储的数据就会越多。

逻辑模型

Cassandra和RDBMS术语对比

Cassandra的数据模型以列为中心。也就是说,不需要像关系型数据库那样事先定义一个表的所有列,每一行甚至可以包含不同名称的列。Cassandra的数据模型由keyspaces (类似关系型数据库里的database),column families(类似关系型数据库里的table),主键(keys)和列(columns)组成。对于每一个column family,不要想象成关系型数据库的表,而要想像成一个多层嵌套的排序散列表(Nested sorted map)。这样能更好地理解和设计Cassandra的数据模型。

散列表能提供高效的键值查询,而排序的键值能提供高效率的范围查询能力。在Cassandra里,我们可以使用row key和column key做高效的键值查询和范围查询。每一行的列的数量最多允许多达20亿,换句话说,可以拥有所谓的宽行。

列的名称可以直接包含数据,换句话说,有的列可以只有列名没有列值。

列族(column family)

 

思考一个这样的问题,我们需要实时统计门户网站下的生活类,科普类,教育类的栏目的session信息,将实时连接访问数据记录在cassandra数据库里,以便后期做数据分析使用。 我们可以设计如下column family

KeySpace SessionCollection 

Coumn Family ShenghuoCollection

row key UserID

Timestamp1 VisitID VisitReffer VisitRefferType VisitRefferKeywords VisitURL VisitURLTitle VisitTimeIn VisitTimeOut VistIP VistProvince VisitCity VisitBrowserType VisitOS
                         
Timestamp2 VisitID VisitReffer VisitRefferType VisitRefferKeywords VisitURL VisitURLTitle VisitTimeIn VisitTimeOut VistIP VistProvince VisitCity VisitBrowserType VisitOS
                         
Timestamp3 VisitID VisitReffer VisitRefferType VisitRefferKeywords VisitURL VisitURLTitle VisitTimeIn VisitTimeOut VistIP VistProvince VisitCity VisitBrowserType VisitOS
                         

Coumn Family TechCollection

row key UserID

Timestamp1  VisitID VisitReffer VisitRefferType VisitRefferKeywords VisitURL VisitURLTitle VisitTimeIn VisitTimeOut VistIP VistProvince VisitCity VisitBrowserType VisitOS
                         
Timestamp2  VisitID VisitReffer VisitRefferType VisitRefferKeywords VisitURL VisitURLTitle VisitTimeIn VisitTimeOut VistIP VistProvince VisitCity VisitBrowserType VisitOS
                         
Timestamp3 VisitID VisitReffer VisitRefferType VisitRefferKeywords VisitURL VisitURLTitle VisitTimeIn VisitTimeOut VistIP VistProvince VisitCity VisitBrowserType VisitOS
                         

Coumn Family EduCollection

row key UserID

Timestamp1  VisitID VisitReffer VisitRefferType VisitRefferKeywords VisitURL VisitURLTitle VisitTimeIn VisitTimeOut VistIP VistProvince VisitCity VisitBrowserType VisitOS
                         
Timestamp2  VisitID VisitReffer VisitRefferType VisitRefferKeywords VisitURL VisitURLTitle VisitTimeIn VisitTimeOut VistIP VistProvince VisitCity VisitBrowserType VisitOS
                         
Timestamp3 VisitID VisitReffer VisitRefferType VisitRefferKeywords VisitURL VisitURLTitle VisitTimeIn VisitTimeOut VistIP VistProvince VisitCity VisitBrowserType VisitOS
                         

https://pandaforme.gitbooks.io/introduction-to-cassandra/content/understand_the_cassandra_data_model.html

原文地址:https://www.cnblogs.com/ilifeilong/p/9061615.html