zoukankan      html  css  js  c++  java
  • Cassandra的数据模型的理解

           Cassandra属于NoSQL数据库,NoSQL和传统关系型数据库不同,NOSQL偏好数据冗余,因为NoSQL一般无法做表关联查询。

    (1) keySpace

    基本上可以将Keyspace 理解成MySQL 之中的Database. 只不过Cassandra的”database” 包含了更多的内容:

    • Replication Factor : 复制因数。 表示一份数据在一个DC 之中包含几份。常用奇数~ 比如我们项目组设置的replication_factor=3
    • Replica placement strategy : 复制策略。 默认的是SimpleStrategy. 如果是单机架、单数据中心的模式,保持使用SimpleStrtegy即可。

    下面是一个简单的通过CQL 语句创建一个新的keyspace的例子:


    (2) Column Family/Column
             可以理解Column Family为MySQL的Table, 将Column 理解为MySQL之中的一条记录。所谓Column就是: A tuple with name, value and timestamp。之所以称之为Column Family, 是因为Cassandra 是一种列式数据库,因此将一组Column称为Column Family。.
          比较有意思的是,Column 包含了Timestamp。 其作用主要是当有新数据覆盖的时候,不是直接将老数据从存储介质上删除,而是直接写入新的数据。 当需要查询的时候,通过key或者某种方式找到的所有Column,并去找Timestamp 最新的Column。 老数据会在一段时间之后自行删除。

    可以使用下面的一句话概括:

    首先Map结构,通过key来进行查询速度会非常快。 再加上内嵌的SortedMap, 可以进行顺序查找,速度也很快。 当然,如何快速的生成Key等就是另外一个topic

    Cassandra 整体数据可以理解成一个巨大的嵌套的Map。只能按顺序一层一层的深入,不能跳过中间某一层~


     

     

    (3)Super Column
       已经被淘汰,可以不用关注

    (4)Primary key
           Primary key = Partition Key  + [Clustering Key] 

    (5)Partition Key
       其实就是指在Primary key 中的第一个列,如果想要用多个列就可以把这的多个列用小括号括起来。
        http://docs.datastax.com/en/cql/3.1/cql/cql_reference/refCompositePk.html 这里有一个例子,说的很清楚。 


    参考资料:
    1)Data Modeling Concepts,http://docs.datastax.com/en/cql/3.1/cql/ddl/dataModelingApproach.html  
    2)Data modeling in 30 seconds  http://docs.datastax.com/en/landing_page/doc/landing_page/dataModeling.html  
    3)[Cassandra教程] (四)使用Key的正确姿势,http://www.flyml.net/2016/09/05/cassandra-tutorial-right-way-to-use-key/  
  • 相关阅读:
    vue-cli3 中跨域解决方案
    自定义超链接动画---transition
    Vue 单选框与单选框组 组件
    js 控制随机数生成概率
    Vue slot插槽
    vue 组件通信
    vue中computed计算属性与methods对象中的this指针
    C#提取html中的汉字
    MVC几种找不到资源的解决方式
    使用Windows服务定时去执行一个方法的三种方式
  • 原文地址:https://www.cnblogs.com/strinkbug/p/6639421.html
Copyright © 2011-2022 走看看