• 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

  • 相关阅读:
    安装好Ruby,使用Windows Powershell不能使用
    关于css注释在sublime中的问题
    腾讯云服务器Centos使用心得
    火狐浏览器打开后出现两个主页,其中一个为hao123
    找兴趣点切入
    canvas绘制饼状图
    关于(function(){})(); 的一些理解
    sublime标签页不能显示的解决方法
    ubuntu下jdk安装与环境配置
    Array和ArrayList的Clone为什么一个不用类型转换,一个要类型转换
  • 原文地址:https://www.cnblogs.com/ilifeilong/p/9061615.html
Copyright © 2020-2023  润新知