J'ai eu un peu de mal avec le HiLoIdGenerator fourni avec NoRM (http://normproject.org/); Je veux l'utiliser pour générer un identifiant unique que je peux utiliser comme SLUG pour mes articles de blog. Actuellement, j'utilise l'ObjectId pour identifier de manière unique un document dans MongoDB, mais comme c'est GUID-like et ça ne semble pas très bien dans une URL, je préférerais avoir quelque chose comme www.myblog.com/posts/1243 et c'est pourquoi j'ai décidé d'utiliser le HiLoIdGenerator.L'utilisation du HiLoIdGenerator dans NoRM pour MongoDB pour créer un identifiant unique
Je voudrais générer mes HiLo id du côté client et j'ai lu le nouveau générateur HiLo ID blog de stuart harris http://red-badger.com/Blog/post/A-simple-IRepository3cT3e-implementation-for-MongoDB-and-NoRM.aspx que NORM permet également cette situation en allouant une gamme d'entiers à la session du client qui peut être utilisé avec impunité (d'autres clients utiliseront une plage différente) mais quand j'ai ouvert le HiLoIdGenerator il a dit que la classe HiLoIdGenerator qui génère une nouvelle valeur d'identité en utilisant l'algorithme HILO. Une seule instance de cette classe doit être utilisée dans votre projet.
J'ai vraiment trois questions:
1) si j'avais plusieurs instances du HiLoIdGenerator dans ma demande (que j'ai eu un exemple dans ma classe de service qui a appelé GenerateId pour chaque nouveau document) que je pourrais garantir effectivement que tous mes identifiants seraient uniques, étant donné que le code de la classe HiLoIdGenerator indique qu'il ne devrait y avoir qu'une seule instance de cette classe dans une application? 2) le constructeur HiLoIdGenerator prend un argument de capacité, et je voudrais savoir ce qu'il fait, j'ai passé 0 et tous les ID générés étaient les mêmes, je suis ensuite passé dans 1 nouveau HiLoIdGenerator (1) l'ID a commencé à 1 et ont été incrémentés de 1; Je ne comprends pas vraiment ce que cela fait, mais je présume que cela a quelque chose à voir avec un éventail de valeurs potentielles que le générateur peut générer, mais je ne suis pas sûr, et j'aimerais le faire. Quelqu'un pourrait-il expliquer cet argument? 3) Je pense comprendre le but de l'algorithme HiLo comme expliqué ici What's the Hi/Lo algorithm? mais ce que je ne comprends pas, c'est si je peux avoir deux instances de MongoDB avec deux applications différentes regardant chacune une instance différente d'un MongoDB mais les deux contenant les mêmes types de collection, que les ID générés soient globalement uniques, c'est-à-dire que je puisse les utiliser comme GUID, ou sont-ils simplement uniques dans une instance donnée de MongoDB, empêchant ainsi une fusion des deux collections dans une seule instance de MongoDB à une date ultérieure?
grâce
Je pense en ce qui concerne ma deuxième question que la capacité est simplement une gamme de valeurs qui représente un Hi et chaque nombre dans cette gamme pourrait être assigné comme al o avant qu'un nouveau salut ne soit demandé; si je n'attribuais qu'un identifiant unique, est-ce que cela aurait du sens de mettre la capacité à 1? – nickbw