Ло - це кешований розподільник, який розбиває простір клавіш на великі шматки, як правило, виходячи з певного розміру машинного слова, а не за значущим розміром (наприклад, отримання 200 клавіш за один раз), які людина може розумно вибрати.
Використання Hi-Lo має тенденцію витрачати велику кількість клавіш при перезапуску сервера та генерувати великі непривітні для людини ключові значення.
Кращий, ніж алокатор Hi-Lo, - це лінійний розподільник. При цьому використовується аналогічний принцип на основі таблиці, але виділяються невеликі шматки зручного розміру та створюються приємні для людини цінності.
create table KEY_ALLOC (
SEQ varchar(32) not null,
NEXT bigint not null,
primary key (SEQ)
);
Щоб виділити наступну, скажімо, 200 клавіш (які потім утримуються як діапазон на сервері та використовуються за потребою):
select NEXT from KEY_ALLOC where SEQ=?;
update KEY_ALLOC set NEXT=(old value+200) where SEQ=? and NEXT=(old value);
За умови, що ви можете здійснити цю транзакцію (використовуйте повтори для обробки суперечок), ви виділили 200 ключів і можете видавати їх за потребою.
З розміром шматка всього 20, ця схема в 10 разів швидша, ніж виділення з послідовності Oracle, і є 100% портативною серед усіх баз даних. Ефективність розподілу рівнозначна привіт-ло.
На відміну від ідеї Амблера, він розглядає простір клавіш як суміжну лінійну числову лінію.
Це дозволяє уникнути поштовху для складених ключів (які ніколи насправді не були гарною ідеєю) і уникає витрачати цілі lo-слова при перезапуску сервера. Це породжує "дружні", людські ключові цінності.
Ідея містера Амблера, для порівняння, виділяє високі 16- або 32-бітові і генерує великі непривітні для людини ключові значення як приріст слів.
Порівняння виділених ключів:
Linear_Chunk Hi_Lo
100 65536
101 65537
102 65538
.. server restart
120 131072
121 131073
122 131073
.. server restart
140 196608
За дизайном, його рішення є принципово складнішим у рядку чисел (складені клавіші, великі вироби hi_word), ніж Linear_Chunk, не досягаючи порівняльної вигоди.
Дизайн Hi-Lo виникла на початку картографування та стійкості ОО. У ці дні стійкі рамки, такі як сплячий режим, пропонують простіші та кращі розподільники за замовчуванням.