Lo to buforowany rozdzielacz, który dzieli przestrzeń klawiszy na duże fragmenty, zwykle oparte na pewnym rozmiarze słowa maszynowego, a nie na znacznych zakresach (np. Uzyskiwanie 200 kluczy jednocześnie), które człowiek mógłby rozsądnie wybrać.
Użycie Hi-Lo powoduje marnowanie dużej liczby kluczy przy ponownym uruchomieniu serwera i generowanie dużych wartości kluczy nieprzyjaznych dla człowieka.
Lepszym niż alokatorem Hi-Lo jest alokator „Linear Chunk”. Korzysta z podobnej zasady opartej na tabeli, ale przydziela małe porcje o dogodnej wielkości i generuje ładne wartości przyjazne dla człowieka.
create table KEY_ALLOC (
SEQ varchar(32) not null,
NEXT bigint not null,
primary key (SEQ)
);
Aby przydzielić kolejne, powiedzmy, 200 kluczy (które są następnie przechowywane na serwerze i używane w razie potrzeby):
select NEXT from KEY_ALLOC where SEQ=?;
update KEY_ALLOC set NEXT=(old value+200) where SEQ=? and NEXT=(old value);
Pod warunkiem, że możesz zatwierdzić tę transakcję (użyj ponownych prób, aby obsłużyć spór), przydzieliłeś 200 kluczy i możesz wydać je w razie potrzeby.
Przy wielkości fragmentu wynoszącej zaledwie 20, ten schemat jest 10 razy szybszy niż przydział z sekwencji Oracle i jest w 100% przenośny we wszystkich bazach danych. Wydajność alokacji jest równoważna z hi-lo.
W przeciwieństwie do pomysłu Amblera, traktuje przestrzeń klawiszy jako ciągłą liniową linię numeryczną.
Pozwala to uniknąć impulsu dla kluczy kompozytowych (które nigdy nie były tak naprawdę dobrym pomysłem) i pozwala uniknąć marnowania całych słów po ponownym uruchomieniu serwera. Generuje „przyjazne” kluczowe wartości na skalę ludzką.
Dla porównania pomysł Amblera przydziela wysokie 16- lub 32-bitowe i generuje duże nieprzyjazne człowiekowi kluczowe wartości jako przyrostowe słowa.
Porównanie przydzielonych kluczy:
Linear_Chunk Hi_Lo
100 65536
101 65537
102 65538
.. server restart
120 131072
121 131073
122 131073
.. server restart
140 196608
Pod względem projektowym jego rozwiązanie jest zasadniczo bardziej złożone na linii liczbowej (klucze złożone, duże produkty hi_word) niż Linear_Chunk, nie osiągając przy tym żadnych korzyści porównawczych.
Projekt Hi-Lo powstał na wczesnym etapie mapowania i trwałości OO. Obecnie systemy utrwalania, takie jak Hibernacja, oferują domyślnie prostsze i lepsze alokatory.