要約すると、キーごとに個別の列を使用する傾向があります。
1) 明らかに、クライアントが別の依存関係である Avro/Thrift を使用することを課しています。この依存関係は、変換せずにデータ内の値を見つけることを期待する BI ツールなど、特定のツールの可能性を排除できることを意味します。
2) avro/thrift スキームの下では、ネットワークを介してすべての価値を提供することをかなり強制されます。行内のデータの量によっては、これは問題にならない場合があります。ただし、'city' フィールド/column-qualifier のみに関心がある場合でも、'payments' や 'credit-card-info' などを取得する必要があります。これはセキュリティ上の問題を引き起こす可能性もあります。
3) 更新が必要な場合、Avro/Thrift ではより困難になります。例: 「hasIphone6」キーを追加するとします。Avro/Thrift: 行を削除し、フィールドを追加して新しい行を作成する必要があります。列スキームの下に、新しい列のみを含む新しいエントリが追加されます。1行の場合、大きくはありませんが、これを10億行にすると、大きな圧縮操作が必要になります。
4) 構成されている場合、HBase で圧縮を使用できます。これは、単一のレコードだけでなく、列ファミリー全体で圧縮できるため、avro/thrift シリアル化を超える可能性があります。
5) HBase のような BigTable の実装は、非常に広く疎なテーブルで非常にうまく機能するため、予想されるようなパフォーマンスの低下はありません。