Lo adalah pengalokasi yang di-cache yang membagi ruang-ruang kunci menjadi potongan-potongan besar, biasanya didasarkan pada beberapa ukuran kata mesin, daripada rentang ukuran yang bermakna (misalnya mendapatkan 200 kunci sekaligus) yang mungkin bisa dipilih manusia dengan bijaksana.
Penggunaan Hi-Lo cenderung membuang sejumlah besar kunci pada restart server, dan menghasilkan nilai kunci besar yang tidak ramah manusia.
Lebih baik daripada pengalokasi Hi-Lo, adalah pengalokasi "Linear Chunk". Ini menggunakan prinsip berbasis tabel yang serupa tetapi mengalokasikan potongan kecil, berukuran nyaman & menghasilkan nilai ramah manusia yang bagus.
create table KEY_ALLOC (
SEQ varchar(32) not null,
NEXT bigint not null,
primary key (SEQ)
);
Untuk mengalokasikan berikutnya, katakanlah, 200 kunci (yang kemudian disimpan sebagai rentang di server & digunakan sesuai kebutuhan):
select NEXT from KEY_ALLOC where SEQ=?;
update KEY_ALLOC set NEXT=(old value+200) where SEQ=? and NEXT=(old value);
Asalkan Anda dapat melakukan transaksi ini (gunakan coba lagi untuk menangani pertikaian), Anda telah mengalokasikan 200 kunci & dapat mengeluarkannya sesuai kebutuhan.
Dengan ukuran chunk hanya 20, skema ini 10x lebih cepat daripada mengalokasikan dari urutan Oracle, dan 100% portabel di antara semua database. Kinerja alokasi setara dengan hi-lo.
Tidak seperti ide Ambler, ini memperlakukan ruang kunci sebagai garis angka linier yang berdekatan.
Ini menghindari dorongan untuk kunci komposit (yang tidak pernah benar-benar ide yang baik) dan menghindari pemborosan seluruh kata-kata ketika server restart. Ini menghasilkan nilai-nilai kunci "ramah" skala manusia.
Gagasan Mr Ambler, sebagai perbandingan, mengalokasikan bit 16- atau 32-bit yang tinggi, dan menghasilkan nilai-nilai kunci besar yang tidak ramah manusia sebagai kenaikan hi-words.
Perbandingan kunci yang dialokasikan:
Linear_Chunk Hi_Lo
100 65536
101 65537
102 65538
.. server restart
120 131072
121 131073
122 131073
.. server restart
140 196608
Dari segi desain, solusinya secara mendasar lebih kompleks pada garis bilangan (kunci komposit, produk hi_word besar) daripada Linear_Chunk tanpa mencapai manfaat komparatif.
Desain Hi-Lo muncul lebih awal dalam pemetaan OO dan kegigihan. Saat ini kerangka kerja ketekunan seperti Hibernate menawarkan pengalokasi yang lebih sederhana dan lebih baik sebagai default.