Lo là một bộ cấp phát được lưu trong bộ nhớ cache, phân chia không gian khóa thành nhiều phần lớn, thường dựa trên một số kích thước từ của máy, thay vì các phạm vi có kích thước có ý nghĩa (ví dụ: lấy 200 phím cùng lúc) mà con người có thể chọn một cách hợp lý.
Việc sử dụng Hi-Lo có xu hướng lãng phí số lượng lớn các khóa khi khởi động lại máy chủ và tạo ra các giá trị khóa không thân thiện với con người.
Tốt hơn so với công cụ cấp phát Hi-Lo, là công cụ phân bổ "Tuyến tính". Điều này sử dụng một nguyên tắc dựa trên bảng tương tự nhưng phân bổ các khối nhỏ, có kích thước thuận tiện và tạo ra các giá trị thân thiện với con người.
create table KEY_ALLOC (
SEQ varchar(32) not null,
NEXT bigint not null,
primary key (SEQ)
);
Để phân bổ tiếp theo, giả sử, 200 khóa (sau đó được giữ dưới dạng một phạm vi trong máy chủ và được sử dụng khi cần thiết):
select NEXT from KEY_ALLOC where SEQ=?;
update KEY_ALLOC set NEXT=(old value+200) where SEQ=? and NEXT=(old value);
Cung cấp cho bạn có thể cam kết giao dịch này (sử dụng thử lại để xử lý sự tranh chấp), bạn đã phân bổ 200 khóa và có thể phân phối chúng khi cần.
Với kích thước chunk chỉ 20, sơ đồ này nhanh hơn gấp 10 lần so với phân bổ từ chuỗi Oracle và có khả năng di động 100% trong số tất cả các cơ sở dữ liệu. Hiệu suất phân bổ tương đương với hi-lo.
Không giống như ý tưởng của Ambler, nó coi không gian phím là một số tuyến tính liền kề.
Điều này tránh sự thúc đẩy cho các khóa tổng hợp (điều này không bao giờ thực sự là một ý tưởng tốt) và tránh lãng phí toàn bộ từ ngữ khi máy chủ khởi động lại. Nó tạo ra các giá trị chính "thân thiện", quy mô của con người.
Bằng cách so sánh, ý tưởng của ông Ambler sẽ phân bổ 16 hoặc 32 bit cao và tạo ra các giá trị khóa không thân thiện với con người khi gia tăng các từ hi.
So sánh các khóa được phân bổ:
Linear_Chunk Hi_Lo
100 65536
101 65537
102 65538
.. server restart
120 131072
121 131073
122 131073
.. server restart
140 196608
Về mặt thiết kế, giải pháp của ông về cơ bản phức tạp hơn trên dòng số (khóa tổng hợp, sản phẩm hi_word lớn) so với linear_Chunk trong khi không đạt được lợi ích so sánh.
Thiết kế Hi-Lo nảy sinh sớm trong việc lập bản đồ và kiên trì OO. Ngày nay, các khung kiên trì như Hibernate cung cấp các bộ cấp phát đơn giản hơn và tốt hơn làm mặc định.