CMU 15-445 Hash Tablesのメモ

  • ここ最近のRDBはhashに次のものを使っている
    • murmurhash
    • cityhash
    • farmhash
    • clhash
  • static hashing
    • linear probe hashing
    • robin hood hashing
      • 自分が入りたかったところからいくつ追い出されたかの値を持っておく
      • コリジョンしたら上記の値を見比べて小さい値のものを追い出す
      • もともと入りたかった場所からできるだけ離れないようにしている感じ
      • ブランチミスとかデータコピーとかがあって linear probe hashing のほうがうまく行くらしい
    • cuckoo hashing
      • 複数のハッシュを使う
      • 片方でコリジョンしたら別のハッシュを試す
      • ぶつかりまくると無限ループになるので、テーブルサイズを増やす
  • dynamic hash table
    • static だと要素があふれると全部作り直しなのでできるだけさける
    • extendible hashing
      • あるバケットが溢れたら、そのバケットをsplitする
      • どのバケットを使うかを指し示すグローバルなスロットを用意する
        • このスロット数はsplitが起こるたびには先頭ビットの数が増えるので、倍々ゲームで増える
    • linear hashing

linear hashing の挙動の理解が怪しいがモチベーションはわかった。