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

    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节点按照环形排列在一起,分配好数据,每个节点包含一个副本,如果发生故障,副本接替原节点工作,这种组合叫做Cluster

    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
      只保存需要的数据,不必拘泥于之前定义的表结构
  • 相关阅读:
    协方差与协方差矩阵
    boost.python笔记
    2014年8月3日
    工作记录
    工作记录
    工作记录
    sed教程
    Visual studio C++ 之空控制台工程添加文件并解决头文件包含问题
    Visual studio C++ MFC之列表控件CListCtrl Control
    Visual studio C++ MFC之点击按钮(菜单栏)生成新窗口
  • 原文地址:https://www.cnblogs.com/---wunian/p/10756523.html
Copyright © 2011-2022 走看看