zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    MapReduce编程
    Xcode7 真机调试
    【学习笔记】【OC语言】NSString
    【学习笔记】【OC语言】多态
    【学习笔记】【OC语言】继承
    【学习笔记】【OC语言】self关键字
    【学习笔记】【OC语言】类方法
    【学习笔记】【OC语言】set方法和get方法
    【学习笔记】【OC语言】创建对象
    【学习笔记】【OC语言】面向对象思想
  • 原文地址:https://www.cnblogs.com/ilifeilong/p/9061615.html
Copyright © 2011-2022 走看看