Database design Cassandra:柱族与超级柱族

Database design Cassandra:柱族与超级柱族,database-design,nosql,cassandra,Database Design,Nosql,Cassandra,我需要数据库存储以下数据: - 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

我需要数据库存储以下数据:

- 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}
}
...

}
但是,我在下面读到,不鼓励使用超级列族。我想知道是否有更好的方法为我的需求创建模型


另外,我借用了下面的JSONish符号,您链接到的StackOverflow答案是正确的。您不应该在新的应用程序中使用超级列。然而,它们的存在是为了向后兼容

通常,组合柱可用于模拟超级柱提供的任何模型。基本上,它们允许您将列名分成多个部分。因此,如果要指定“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: {
       ...
    }
...

}
使用上述模型,您可以使用单个查询获取单个运行的单个数据点、单个运行的所有数据点或多个运行的所有数据点

有关复合柱的详细信息:

有没有办法通过cassandra cli创建这样的列?很遗憾,没有。您可以使用众多客户端库中的一个通过api来创建。您还可以使用较新的CQL接口和cqlsh命令行工具来完成。CQLv3实际上将抽象出一个事实,即您正在使用复合列。而且CQLv3仍然是测试版。更多信息: