2011-06-11 74 views
2

http://wiki.apache.org/cassandra/CassandraLimitations卡桑德拉:什么是子列

报价: 卡桑德拉有指标两个层次:键列。但是在超级柱家族中有第三层次的子栏目;这些都没有索引,并且任何子列的请求反序列化全部超级列中的子列。所以你想避免需要大量子列的数据模型。

=>什么是子列?有趣的是,搜索词的搜索结果并不真实。我知道supercolumn的概念,但它并不十分清楚“subcolumn”这个术语究竟是指什么(它是如何定义的):

什么概念是正确的?

第一:

ROW-KEY 
    SubCol  SubCol  
    col col col val 
    val val col val 

OR

二:

ROW-KEY 
    Column   Column 
    SubCol SubCol SubCol SubCol 
    val val  val val 

此外,什么的定义是什么:

comparator = UTF8Type and 
subcomparator = UTF8Type and 

它的唯一定义的问题。

感谢 马库斯

回答

7

标准列的父母是其行。子列的父级是其超级列。除此之外,它们是相同的 - 只是有一个额外的嵌套层次,尽管如上所述,这对索引和检索有影响。

http://wiki.apache.org/cassandra/DataModel

更多信息和http://arin.me/blog/wtf-is-a-supercolumn-cassandra-data-model

普通列族:

row 
    col col col ... 
    val val val ... 

超级列族:

row 
     supercol      supercol      ... 
      (sub)col (sub)col ...  (sub)col (sub)col ... 
      val  val  ...  val  val  ... 
+0

谢谢!我读过的第一个链接已经在这里问了,但是你的图表在描述这些术语时要好几倍! (在cassandra网站上,yonley有这些例子),但你的定义非常清楚。如果您来自cassandra团队,您可以将其更新到该网站。谢谢。 – Markus 2011-06-11 11:25:56

+2

“WTF是超级柱子”应该摆脱它的苦难。我建议使用http://www.datastax.com/docs/0.8/data_model/index或Max在数据建模上的帖子(链接在http://wiki.apache.org/cassandra/ArticlesAndPresentations顶部)。 – jbellis 2011-06-16 15:55:23

0

comparator值表示列将如何进行排序时,他们是r在查询中找到了你。相同的概念适用于subcomparator,但适用于超级列。

UTF8Type指的是字符的Unicode标准。

  • 来源:“Cassandra权威指南”。