2003年 4月 1日 | ハッシュ・キー | >> 目次 (作成日順) |
(1) セット・アット・ア・タイム 法 (set-at-a-time)
セット・アット・ア・タイム 法は (直積集合を使った) 「column 単位 (view 単位)」 の アクセス 法である。
複数の ページ (page)を束ねた 1つの単位を 「バケット (bucket)」 という。 h (n) = v mod n (v を n で割った余りの値)
ただし、v は キー 値、n は バケット の数とする。 今回は、ハッシュ の 「からくり」 を示すために、単純な以下の前提を使う。
(1) キー の桁数は 2桁とする (たとえば、01, 02, ・・・)
したがって、キー 値が 01 であれば、1番目の ページ に収められ、キー 値が 02 であれば、2番目の ページ に収められ、キー 値が 09 であれば、9番目の ページ に収められる。 |
バケット | ||||||||
ページ | ページ | ページ | ページ | ページ | ページ | ページ | ページ | ページ |
01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 |
さらに、たとえば、キー の桁数を 5桁くらいにしてみれば、100 や 1000 や 10000 も 1番目の ページ に収められることになる。そして、たとえば、1つの ページ のなかに データ を収める領域が足らなくなれば、「オーバーフロー 域 (overflow)」 を用意して、オーバーフロー 域のなかに データ を収めて、ページ と オーバーフロー 域を チェーン を使って結んで (chained) アクセス・パス (path) を生成することになる。
1つの ページ のなかに 1つの データ を収めれば、レコード・アット・ア・タイム 法の indexing (パス を 「たぐる」 構造) に比べて、高 パフォーマンス を実現する。ただし、メモリー などの資源を多大に費消することになる。 |
<< もどる | HOME | すすむ >> | |
ベーシックス |