• 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了。  

  • 相关阅读:
    ti processor sdk linux am335x evm setup.sh hacking
    ti processor sdk linux am335x evm Makefile hacking
    导出Excel数据
    使用dom4j解析XML例子
    java解析xml文件并输出
    java解析xml文件
    java解析XML获取城市代码
    drop.delete.trauncat的区别
    hibernate 中id生成策略
    如何使java中double类型不以科学计数法表示
  • 原文地址:https://www.cnblogs.com/senlinyang/p/8046683.html
Copyright © 2020-2023  润新知