卡桑德拉:柱族VS超级柱族(Cassandra: Column Family vs Super Co

2019-07-30 02:35发布

我有,我需要我的数据库来存储以下数据的要求:

- For each build, store the results of 3 performance runs. The result includes tps and latency. 

对Cassandra的数据模型读了起来,这直接映射到一个超级家族列格式如下:

BenchmarkSuperColumnFamily= {

build_1: {
   Run1: {1000K, 0.5ms}
   Run2: {1000K, 0.5ms}
   Run3: {1000K, 0.5ms}
}

build_2: {
   Run1: {1000K, 0.5ms}
   Run2: {1000K, 0.5ms}
   Run3: {1000K, 0.5ms}
}
...

}

但是,我在下面看的答案是,使用超级列家族的气馁。 我想知道是否有创建我的需求模型的更好的方法。

PS,我借了JSONish符号从下面的文章

Answer 1:

你链接到StackOverflow的答案是正确的。 你不应该使用新的应用SuperColumns。 他们向后兼容存在但是。

一般情况下,复合材料的列可被用于模拟由超级列提供的任何模型。 基本上,他们让你列名分成多个部分。 所以,如果你指定的比较“的CompositeType(UTF8Type,UTF8Type)”,你的数据模型的伤口最终看起来是这样的:

BenchmarkColumnFamily= {

   build_1: {
       (Run1, TPS) : 1000K
       (Run1, Latency) : 0.5ms
       (Run2, TPS) : 1000K
       (Run2, Latency) : 0.5ms
       (Run3, TPS) : 1000K
       (Run3, Latency) : 0.5ms
    }

    build_2: {
       ...
    }
...

}

通过以上的模型,你可以使用一个单一查询得到一个数据点单次运行,单次运行的所有数据点,或所有数据点多次运行。

复合列更多信息: http://www.datastax.com/dev/blog/introduction-to-composite-columns-part-1



文章来源: Cassandra: Column Family vs Super Column Family