Row

http://write.blog.csdn.net/postedit

Row

        在介绍下文的ColumnFamily前,我们先熟悉一下Row。在cassandra里,每个ColumnFamily都存在一个单独的文件里,这个文件以Row为单位存储并排序。因此,我们应尽量将相关的Column放在同一个ColumnFamily里。

        ColumnFamily的组成是一行行的Row,一个Row就是一个key-value对,key决定数据将被存在哪台机器上(笔记二的token部分有解释),value部分就是ColumnsSuperColumns

        4.ColumnFamily

        ColumnFamily是一个可以包含无数个Row的结构,又因为Rowvalue部分是ColumnsSuperColumns,因此ColumnFamily实际是ColumnsSuperColumns的容器。ColumnFamily对应关系型数据库里的“表”。下面给出ColumnFamilyRow的一个简单示例(使用Column):

User={//这是一个ColumnFamily,名字是User
 zhangsan:{//这是一个Row,Row的key是zhangsan
 //下面的value可以有无限制的Columns,这里有两个
     username:"zhangsan",
     email:"
zhangsan@163.com",
 },//这个Row结束了
 lisi:{//这是第二个Row,Row的key是lisi
 //value部分,依然是Columns,lisi有三个
     username:"lisi",
     email:"
lisi@163.com",
     phone:"123456"
 },//Row结束
}

 

又如下图所示:


        在这个层面没有设计模式的要求,Row没有预先定义它们应该包含的Columns列表,就如上面的示例,李四可以随意的多一个phoneColumn。一个Row可能有成千上万个Columns而另一个Row可能只有一个Columncassandra在这一点上有无法比拟的灵活性。

        5.属性为SuperColumnFamily

        上面的示例是一个type为标准的(StandardColumnFamily,另外也有SuperColumnFamily,这取决于我们创建ColumnFamily时的定义。顾名思义,一个类型为SuperColumnFamilyRow存储的不是Columns,而是SuperColumns。在这种情况下,一个Rowvalue部分有若干个SuperColumns,一个SuperColumnsvalue部分又有若干个Columns。如下图所示:

 这里给出一个应用:假设我们提供一种网上地址本的服务,用户可以在这保存他的朋友们的地址,而地址又是由不同的属性如邮编、街道、城市等组成。这时候我们可以采用SuperColumn。对于ColumnFamily,它的key使用的是用户自己的名字,value部分是若干SuperColumns。每个SuperColumnsname部分是用户某个朋友的名字,value部分是若干Columns,存储地址的各个属性。下面是示例:

AddressBook={//这是一个SuperColumnFamily,名字是AddressBook
 
 zhangsan:{//这是一个Row,key是zhangsan,张三的地址本
 //下面是Row的Value部分,可以有任意个SuperColumns
     lisi:{//这是SuperColumn的name
         //下面是Columns,表示地址
         street:"XiTuCheng road",
         zip:"410083",
         city:"BeiJing"
     },
     wangwu:{//另一个SuperColumn
         street:"XiTuCheng road",
         zip:"410083",
         city:"BeiJing"
     },
     zhaoliu:{//SuperColumn
         street:"XiTuCheng road",
         zip:"410083",
         city:"BeiJing"
     },
     .......
 }//end the row of zhangsan
 
 lisi:{//这是另一个Row,key是lisi,李四的地址本
     wangwu:{//SuperColumn
         street:"XiTuCheng road",
         zip:"410083",
         city:"BeiJing"
     },
     zhangsan:{//SuperColumn
         street:"XiTuCheng road",
         zip:"410083",
         city:"BeiJing"
     },
     .......
 }
}

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值