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

posted @ 2017-12-18 11:47  木易森林  阅读(883)  评论(0编辑  收藏  举报