2012-02-29 19 views
1

Cassandraに完全直列化オブジェクトを格納すると、プリミティブ型のみをオブジェクトとして列に格納する利点と欠点は何ですか?Cassandraのプリミティブ型とオブジェクト型の保存

オブジェクト全体を1つの列に格納すると、柔軟性は失われますが、単純さが増します。完全なオブジェクトが格納されていて、そのメンバーの1人にインデックスを作成したい場合は、列にネイティブのカサンドラセカンダリインデックスを使用することは不可能ではないでしょうか? (ただし、ここでは、そのメンバー値を行キーとして使用して列ファミリを追加して独自のインデックスを作成すると仮定します)

ありがとうございます。私はまだこのタイプのフォーマットでスキーマ設定の周りに私の脳をラッピングしています。完全なオブジェクトのシリアル化の

答えて

2

どちらも長所と短所がかなり明白に見える:

  • よりコンパクトな表現ディスク上や、倹約やいるProtobuf
  • として、スキーマの進化をサポートするツールを、使用する
  • データを転送する能力の両方

と欠点:

  • Cassandrネイティブ索引はここでは使用できません(カスケードラネイティブ索引はデータとともにパーティション化されているため、別の列ファミリーではシミュレートできません)
  • CLIのような共通ツールを使用してオブジェクトの個々のフィールドを問い合せることはできません
  • オブジェクトの個々のフィールドを変更するにはフルレコードをロードして保存する必要があります
  • スキーマを変更するには、完全なデータセットのロードと処理が必要です(たとえば、列を削除することはできません)。

たとえば、ページビューイベントを保存するときに完全なオブジェクトの直列化を使用することをお勧めします。コンパクトさは大量のディスクスペースを節約し、これらのイベントは書き込み後に変更されません。スキーマが変更された場合(つまり新しいフィールドが追加された場合)には、古いデータに触れる必要はなく、新しいイベントを新しいフォーマットで書き込んでProtoBufを使用して古いレコードと新しいレコードを正しく読み込む必要があります。

一方、「キャプションとタグを持つ画像」のようなオブジェクトを格納するときには、大きなバイナリデータと小さな変更可能なフィールドを持つオブジェクトを使用することをお勧めします。

関連する問題