Teradata-hashing-algorithm

提供:Dev Guides
移動先:案内検索

Teradata-ハッシュアルゴリズム

行は、プライマリインデックス値に基づいて特定のAMPに割り当てられます。 Teradataはハッシュアルゴリズムを使用して、行を取得するAMPを決定します。

以下は、ハッシュアルゴリズムの高レベルの図です。

ハッシュアルゴリズム

以下は、データを挿入する手順です。

  • クライアントはクエリを送信します。
  • パーサーはクエリを受信し、レコードのPI値をハッシュアルゴリズムに渡します。
  • ハッシュアルゴリズムはプライマリインデックス値をハッシュし、Row Hashと呼ばれる32ビットの数値を返します。
  • 行ハッシュの上位ビット(最初の16ビット)は、ハッシュマップエントリを識別するために使用されます。 ハッシュマップには1つのAMP#が含まれます。 ハッシュマップは、特定のAMP#を含むバケットの配列です。
  • BYNETは、識別されたAMPにデータを送信します。
  • AMPは32ビットの行ハッシュを使用して、ディスク内の行を特定します。
  • 同じ行ハッシュを持つレコードがある場合、32ビットの数値である一意性IDを増やします。 新しい行ハッシュの場合、一意性IDは1として割り当てられ、同じ行ハッシュを持つレコードが挿入されるたびに増分されます。
  • 行ハッシュと一意性IDの組み合わせは、行IDと呼ばれます。
  • 行IDは、ディスク内の各レコードの前に付けられます。
  • AMPの各テーブル行は、行IDによって論理的にソートされます。

テーブルの保存方法

テーブルは、行ID(行ハッシュと一意性ID)で並べ替えられ、AMP内に保存されます。 行IDは各データ行とともに保存されます。

Row Hash Uniqueness ID EmployeeNo FirstName LastName
2A01 2611 0000 0001 101 Mike James
2A01 2612 0000 0001 104 Alex Stuart
2A01 2613 0000 0001 102 Robert Williams
2A01 2614 0000 0001 105 Robert James
2A01 2615 0000 0001 103 Peter Paul