5

次のデータを格納するためにデータベースが必要な要件があります。

- 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表記は以下の記事から拝借しました

4

1 に答える 1

6

リンクした 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: {
       ...
    }
...

}

上記のモデルでは、1 回の実行で 1 つのデータ ポイント、1 回の実行ですべてのデータ ポイント、または複数回の実行ですべてのデータ ポイントを取得するために、1 つのクエリを使用できます。

複合列の詳細: http://www.datastax.com/dev/blog/introduction-to-composite-columns-part-1

于 2012-06-26T04:12:25.323 に答える