Hi/Loアルゴリズムとは何ですか? 質問する

Hi/Loアルゴリズムとは何ですか? 質問する

Hi/Lo アルゴリズムとは何ですか?

私はこれを見つけましたハイバネートドキュメント (一意のキーを生成する 1 つの方法、セクション 5.1.4.2) がありますが、それがどのように機能するかについての適切な説明は見つかりませんでした。

Nhibernate が処理することは知っていますし、内部を知る必要もありませんが、ただ興味があります。

ベストアンサー1

基本的な考え方は、主キーを構成する 2 つの数値 (「高」数値と「低」数値) があるというものです。クライアントは基本的に「高」シーケンスを増分することで、以前の「高」値の全範囲からさまざまな「低」値を使用してキーを安全に生成できることを認識できます。

たとえば、現在の値が 35 の「高」シーケンスがあり、「低」番号が 0 ~ 1023 の範囲にあるとします。この場合、クライアントはシーケンスを 36 に増分し (35 を使用している間に他のクライアントがキーを生成できるようにするため)、キー 35/0、35/1、35/2、35/3... 35/1023 がすべて使用可能であることがわかります。

主キーのない値を挿入してクライアントに取り戻すのではなく、クライアント側で主キーを設定できると非常に便利です (特に ORM の場合)。他の点とは別に、挿入を行う前に親子関係を簡単に作成し、キーをすべて配置できるため、バッチ処理が簡単になります。

おすすめ記事