2009-11-26 2 views
1

Désolé d'avance que cette question est similaire (mais pas la même!) À d'autres.Génération de clés de substitution à distance

De toute façon, je dois être capable de générer des clés de substitution dans plus d'un emplacement pour être synchronisé plus tard. J'envisageais d'utiliser des GUID, cependant ces clés pourraient devoir apparaître dans les paramètres d'une URL et les GUID seraient vraiment compliqués et moche. Je considérais un schéma qui me permettrait d'utiliser des entiers, en fournissant de meilleures performances dans la base de données, mais évidemment je ne peux pas simplement utiliser des nombres automatiques. L'idée est d'utiliser une clé avec deux significations - la stratégie High-Low comme je crois qu'elle s'appelle. La clé consisterait en la source (où elle a été générée, généralement 1 sur 2 emplacements dans cette analyse de rentabilisation) et la valeur auto incrémentée. Par exemple:

1-000000567, 1-000000568, 1-000000569, 1-000000570, ...

Et pour une autre source:

2-000000567, 2- Cela signifierait aussi que je pourrais les stocker dans la base de données sous forme d'entiers (ie "2-000000567" deviendrait l'entier "2000000567").

Quelqu'un peut-il voir des problèmes avec cela? Tels que indexant ou fragmentations qui peuvent se produire? Ou peut-être même une meilleure façon de le faire?

Juste pour confirmer, il n'y a pas de signification commerciale dans cette clé, l'utilisateur ne la verra jamais (sauf peut-être dans les paramètres d'une URL) et ne l'utilisera pas.

J'attends avec impatience vos opinions et apprécier votre temps, Merci un million :)

Répondre

1

Ceci explique l'algorithme hilo que vous faites référence à: What's the Hi/Lo algorithm?

Il est la solution souvent utilisée pour des problèmes « separer » comme le vôtre. Par exemple, si vous utilisez Hibernate/nHibernate, c'est l'une des options de clé primaire recommandée.

+0

Merci pour votre réponse :) –

Questions connexes