Mieux que le Hi-Lo allocateur, est le "Linéaire Morceau" l'allocateur. Il utilise une table similaire à base de principe, mais alloue de petites, idéalement gros morceaux de taille et génère homme nice-amicale des valeurs.
create table KEY_ALLOC (
SEQ varchar(32) not null,
NEXT bigint not null,
primary key (SEQ)
);
Pour allouer de la côté de, disons, 20 clés (qui sont alors considéré comme une plage dans le serveur et utilisé selon les besoins):
select NEXT from KEY_ALLOC where SEQ=?;
update KEY_ALLOC set NEXT=(old value+20) where SEQ=? and NEXT=(old value);
Fournir vous pouvez valider cette transaction (l'utilisation de nouvelles tentatives pour gérer le conflit), vous avez alloué 20 clés et peut s'en passer.
Avec un morceau de taille de 20, ce schéma est 10x plus rapide que l'attribution d'un Oracle de la séquence, et est 100% portable parmi toutes les bases de données. Répartition de la performance est équivalente à la hi-lo.
Contrairement à Ambler idée, il considère l'espace comme un contiguë linéaire numberline.
Cela évite l'impulsion pour les clés composites (qui n'ont jamais été vraiment une bonne idée) et évite de gaspiller l'ensemble de la lo-dire lorsque le serveur redémarre. Il génère des "amis", à taille humaine, des valeurs clés.
M. Ambler l'idée, par comparaison, alloue le haut de 16 ou 32 bits, et génère un grand homme hostile valeurs de clé comme la hi-mots de l'incrément.
Comparaison de l'allocation de touches:
Linear_Chunk Hi_Lo
100 65536
101 65537
102 65538
.. server restart
120 131072
121 131073
122 131073
.. server restart
140 196608
J'ai fait correspondu avec M. Ambler retour dans les années 90 pour suggérer l'amélioration de ce régime à lui, mais il était trop coincé et obstiné de reconnaître les avantages et claire de la simplicité de l'utilisation d'un linéaire de numéro de ligne.
Conception-sage, sa solution est fondamentalement plus complexe sur le nombre de ligne (clés composites, grand hi_word produits) que Linear_Chunk tout en réalisant pas d'avantages comparatifs. Sa conception est donc mathématiquement prouvé déficientes.