Последовательный Guid в Java - PullRequest
11 голосов
/ 04 февраля 2010

Учитывая пост, который я сделал о производительности последовательного guid на платформе Microsoft.NET (см. Каковы улучшения производительности Sequential Guid по сравнению со стандартным Guid? ), есть ли у кого-то правильный, уверенный, быстрый и хорошо ли работает Java-реализация того же алгоритма, реализованного в DLL-библиотеках Windows?

С уважением Massimo

Ответы [ 4 ]

5 голосов
/ 08 февраля 2010

См. Эту статью: http://www.informit.com/articles/article.aspx?p=25862&seqNum=7 (ссылка на страницу 7).

Содержит алгоритм для того, что автор называет «COMB» Guids; Я воспроизвожу его код (SQL) ниже:

SET @aGuid = CAST(CAST(NEWID() AS BINARY(10)) 
+ CAST(GETDATE() AS BINARY(6)) AS UNIQUEIDENTIFIER)

Тривиально, чтобы преобразовать это в Java, или ваш желаемый язык. Очевидный основной принцип состоит в том, чтобы сделать дату составной частью Guid. Вся статья хорошо читается, так как он делает хороший анализ эффективности различных подходов.

3 голосов
/ 27 мая 2011

Для последовательных UUID вы ищете UUID версии 1. Java UUID Generator * Проект 1002 *, кажется, работает довольно хорошо и довольно прост в использовании:

Generators.timeBasedGenerator().generate().toString()
2 голосов
/ 11 ноября 2010

Эта страница ссылается на пару реализаций UUID версии 1 (последовательных) в Java: http://johannburkard.de/blog/programming/java/Java-UUID-generators-compared.html

0 голосов
/ 05 февраля 2010

Я использую это для генерации UUID (универсальных уникальных идентификаторов) для моих DTO, которые действуют как суррогатные ключи для переходных коллекций. Не знаю, если это то же самое, но это может указать вам правильное направление.

import java.util.UUID;
...
    private String uuid=null;
...
    protected String getUuid() {
        synchronized (this) {
          if (null ==uuid) {
            uuid = UUID.randomUUID().toString();
          }
          return uuid;
        }
      }
...