1. ホーム
  2. database

[解決済み] Hi/Loアルゴリズムとは?

2022-03-21 02:29:38

質問

Hi/Loアルゴリズムって何?

で見つけたんだけど NHibernate ドキュメント (ユニークキーを生成する方法のひとつで、セクション 5.1.4.2) に記載されていますが、その仕組みについてきちんとした説明がありません。

Nhibernateが処理しているのは知っているし、内部を知る必要はないのだが、ちょっと気になる。

どのように解決するのですか?

基本的な考え方は、主キーを構成する2つの数値、すなわち、quot;high" と "low" があるということです。クライアントは基本的に"high"シーケンスをインクリメントすることで、前の"high"値の全範囲と様々な"low"値から安全にキーを生成できることが分かっているのです。

例えば、現在の値が35のquot;high"シーケンスがあって、quot;low"の数値が0~1023の範囲にあるとします。この場合、クライアントはシーケンスを36まで増やし(35を使用している間、 他のクライアントが鍵を生成できるようにするため)、35/0、35/1、35/2、35/3...といった鍵を知ることができる。35/1023はすべて使用可能である。

主キーなしで値を挿入し、それをクライアントに取り込むのではなく、クライアント側で主キーを設定できるのは、(特にORMの場合)非常に便利です。他のことはさておき、これは親子関係を簡単に作れるということで、キーをすべて設定してから 任意の を挿入し、バッチ処理をより簡単にすることができます。