Si vous n'êtes pas trop strict sur le séquentiel, vous pouvez "shard" votre incrementer. Cela pourrait être pensé comme un "finalement séquentielle" comptoir.
Fondamentalement, vous avez une entité qui est le "maître" qui comptent. Ensuite, vous avez un certain nombre d'entités (en fonction de la charge que vous devez gérer) qui ont leurs propres compteurs. Ces éclats de réserve des morceaux de id à partir de le maître et le servir hors de leur portée, jusqu'à épuisement de valeurs.
Algorithme rapide:
- Vous devez obtenir un numéro d'identification.
- Choisir un éclat au hasard.
- Si le fragment de départ est inférieure à sa fin, prendre du démarrage et de l'incrémenter.
- Si le fragment de départ est égal à (ou plus oh-oh) à sa fin, allez à la le maître, de prendre de la valeur et d'ajouter un montant
n
pour elle. Définir les éclats de commencer à la valeur récupérée plus un et à la fin de l'extrait, plus n
.
Cela peut évoluer assez bien, cependant, le montant que vous pouvez être par le nombre de tessons multiplié par votre n
de la valeur. Si vous voulez que vos enregistrements semble aller ce sera sans doute, mais si vous voulez avoir eux représentent le temps il ne sera pas exacte. Il est également important de noter que les valeurs les plus récentes peuvent avoir des trous, donc, si vous utilisez que pour scanner, pour quelque raison, vous avez à l'esprit les lacunes.
Modifier
J'ai besoin pour mon application (c'est pourquoi j'étais à la recherche à la question :P ) j'ai donc mis en œuvre ma solution. Elle peut saisir unique Id ainsi que de saisir efficacement les lots. Je l'ai testé dans un environnement contrôlé (sur appengine) et il s'est très bien comportée. Vous pouvez trouver le code sur github.