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

      Cassandra的数据模型可以理解为嵌套的Map,在Cassandra中数据类型主要有四种:Column,SuperColumn,ColumnFamily,Keyspace。下面分别介绍这几种类型。

    Column

      Column是Cassandra中最小的数据单元,它是一个三元的数据类型,包括:name,value,timestamp。将一个Column使用JSON的形式表现出来,如下所示:

    {
        //this is a Column
        name:"ysl",
        value:"ysl@test.com"
        timestamp:4654646546
    }

       在这里,name和value的类型都是Java中的byte[]。

    SuperColumn

      SuperColumn可以看做是由Column组成的数组,它包含一个name以及一些列相应的Column,我们将SuperColumn使用JSON的形式表现出来如下:

    {
        //this is a SuperColumn
        name:"emails",
        value:{
            {
                name:"ysl",
                value:"ysl@test.com"
                timestamp:4654646546
            },
            {
                name:"ddd",
                value:"ddd@test.com"
                timestamp:4654646546
            }
        }
    }

      值得注意的是SuperColumn没有timestamp属性

    ColumnFamily

      ColumnFamily是一个包含许多Row的结构,可以将它想象为关系型数据库中的表。Row是由key以及key关联的Column组成的。下面的实例代表了一个ColumnFamily。

    //this is a ColumnFamily
    users = {
        ysl:{//this is a key
            {
                name:"username",
                value:"ysl",
                timestamp:4342423
            },
            {
                name:"email",
                value:"ysl@test.com",
                timestamp:4545645
            },
            {
                name:"phone",
                value:"1236564545",
                timestamp:4342443
            }
        },
        ketty:{//this is a key
            {
                name:"username",
                value:"ketty",
                timestamp:4342423
            },
            {
                name:"email",
                value:"ketty@test.com",
                timestamp:4545645
            },
            {
                name:"phone",
                value:"13655556666",
                timestamp:4342443
            }
        }
    }

    Keyspace

      每一个Keyspace包含多个ColumnFamily,并且可以制定Keyspace的数据备份策略和数据的备份数。

      一般来说,每一个Cassandra集群中有一个Keyspace就可以了,但是当集群足够庞大,并且业务足够的复杂的时候,就需要拆分为多个Keyspace了,比如说两个系统使用同一个Cassandra集群,一个数据的备份数要求是3,而另外一个数据备份数要求是5,这样就需要为每个系统单独创建一个Keyspace了。  

  • 相关阅读:
    查准率(precision)和查全率(recall)
    数据集大全:25个深度学习的开放数据集
    利用贝叶斯算法实现手写体识别(Python)
    KNN算法识别手写数字
    判断点在直线的左右哪一侧
    多节点bigchaindb集群部署
    java 多线程 3 synchronized 同步
    java 多线程 1 “常用的实现多线程的2种方式”:Thread 和 Runnable
    java 字符串
    java 关键字static
  • 原文地址:https://www.cnblogs.com/senlinyang/p/8046683.html
Copyright © 2011-2022 走看看