10

Cassandra1.2.2を使用しています。私は、Jacksonを使用してオブジェクトをデータベースに保存するためにjsonとjavaにマッピングするのがとても簡単だと感じています。私は実際、すべてのデータに対してこれを実行したいと思っています。私の質問は、これは良い考えですか?これを私のアプリケーションに行うことの欠点は何ですか。私の最初の推測はおそらくより多くの処理オーバーヘッドですが、ジュースは絞る価値がありますか?そして、私が知る必要がある他の不利な点はありますか?

4

1 に答える 1

13

1つの欠点は、元のデータで読み取る必要のあるデータを変更するには、逆シリアル化して変更を加え、オブジェクト全体をシリアル化して書き出すことです。Cassandraでは、書き込みは読み取りよりもはるかに効率的であるため、可能であれば書き込み前の読み取りを避けることが有益です。

別の方法は、JSONのフィールドごとに個別の列を使用することです。多次元データには複合列を使用できます。

したがって、データがある場合:

{
  name: "fred"
  address: "some town"
  age: 42
}

アドレスを変更したい場合、これらを個別のCassandra列として使用する場合は、addressという列を挿入するだけです。JSONをシリアル化した場合は、さらに多くの作業を行う必要があります。データがライトワンスの場合、これは適用されません。

データがライトワンスの場合でも、データから1つのフィールドを読み取りたいだけの場合は、すべてを読み取って逆シリアル化するのではなく、個別に格納されている場合はその列を読み取ることができます。これは、データの一部を読み取りたい場合にのみ適用されます。

結論として、データを更新する必要がある場合、または一度にパーツを読み取るだけの場合は、個別の列を使用することでパフォーマンスが大幅に向上する可能性があります。

于 2013-03-19T17:05:50.087 に答える