Я немного боролся с HiLoIdGenerator, который поставляется с NoRM (http://normproject.org/);. Я хочу использовать его для генерации уникального идентификатора, который я могу использовать в качестве SLUG для своих сообщений в блоге. В настоящее время я использую ObjectId для уникальной идентификации документа в MongoDB, но так как он похож на GUID и не очень хорошо выглядит в URL, я бы предпочел иметь что-то вроде www.myblog.com/posts/1243 и поэтому я решили использовать HiLoIdGenerator.
Я хотел бы создать свои идентификаторы HiLo на стороне клиента, и я читаю в блоге Стюарта Харриса http://red -badger.com / Блог / post / A-simple-IRepository3cT3e-реализация-for-MongoDB -and-NoRM.aspx , что Новый генератор HiLo Id NoRM также позволяет это, выделяя диапазон целых чисел для сеанса клиента, который можно использовать безнаказанно (другие клиенты будут использовать другой диапазон) но когда я открыл HiLoIdGenerator, он сказал, что HiLoIdGenerator Класс, который генерирует новое значение идентичности, используя алгоритм HILO. В вашем проекте должен использоваться только один экземпляр этого класса .
У меня действительно есть три вопроса:
1) если бы в моем приложении было несколько экземпляров HiLoIdGenerator (скажем, в моем классе обслуживания был экземпляр, который вызывал GenerateId для каждого нового документа), мог бы я на самом деле гарантировать, что все мои идентификаторы будут уникальными, учитывая, что код для класса HiLoIdGenerator говорит, что в приложении должен быть только один экземпляр этого класса?
2) конструктор HiLoIdGenerator принимает аргумент емкости, и я хотел бы знать, что он делает, я передал 0 и все сгенерированные идентификаторы были одинаковыми, затем я передал 1 новый HiLoIdGenerator (1), с которого начался идентификатор 1 и были увеличены на 1; Я не очень понимаю, что он делает, но я предполагаю, что это как-то связано с диапазоном потенциальных значений, которые может генерировать генератор, но я не уверен, и я бы хотел быть. Может ли кто-нибудь объяснить этот аргумент?
3) Мне кажется, я понимаю цель алгоритма HiLo, как описано здесь Что такое алгоритм Hi / Lo? но я не понимаю, могу ли я иметь два экземпляра MongoDB с двумя разными каждое из приложений смотрит на отдельный экземпляр MongoDB, но оба содержат одинаковые типы коллекций, независимо от того, являются ли сгенерированные идентификаторы глобально уникальными, т. е. могу ли я использовать их так же, как GUID, или они просто уникальны в данном экземпляре MongoDB, следовательно, не допустить слияния обеих коллекций в один экземпляр MongoDB на более позднем этапе?
спасибо