6

Hector と Cassandra のチュートリアルで、DynamicCompositeType.

誰でも違いについて詳しく説明できますか

   create column family Composite with comparator ='DynamicCompositeType
       (t=>TimeUUIDType,s=>UTF8Type)'
       and default_validation_class=UTF8Type and key_validation_class=UTF8Type;

create column family Composite
    with comparator = 'CompositeType(TimeUUIDType,UTF8Type)' 
    and key_validation_class = 'UTF8Type' 
    and default_validation_class = 'UTF8Type'

Cassandraのドキュメントで見つけられませんでした

4

2 に答える 2

6

Cassandraがデータを格納する方法と、実際のコンポジットとは何かを理解するのに役立つ場合があります。

  • 使用するバリデーター/コンパレーターに関係なく、すべてのデータはバイトとして保存されます。バリデーターを指定すると、Cassandraにそれらのバイトが希望どおりにエンコードされていることを確認するように要求するだけです。対照的に、コンパレータは、指定したエンコーディングに固有の自然な順序に基づいて列を並べ替えるだけです。

  • したがって、コンポジットは、特定のエンコーディングを備えた単なるバイト配列です。このエンコードは非常に単純です。各コンポーネントについて、2バイトの長さを格納し、その後にバイトエンコードされたコンポーネントが続き、その後に包括的か排他的かを決定する終了ビットが続きます。何でもバイト配列に格納できるため、異なるコンポーネントタイプを使用できますが、それらが何であるかを理解し、自分でデコード/エンコードする必要があります。

  • 動的コンポジットを実現するために、Hectorは追加の型データをバイト配列に書き込み、バイトを読み戻すときにバイトをデコードする方法を認識します。タイプ情報がないため、静的コンポジットにはこれを行う方法がありません。

于 2012-11-28T14:43:17.183 に答える