Pergunta

Considerando o post que fiz sobre o desempenho guid sequencial no quadro Microsoft.NET (veja o que são a melhoria do desempenho de Sequential Guid sobre Guid padrão? ) faz alguém ter uma implementação Java adequada, com certeza, rápido e bem trabalhando do mesmo algoritmo implementado no Windows DLLs?

Saudações Massimo

Foi útil?

Solução

Veja este artigo: http://www.informit.com/ artigos / article.aspx? p = 25862 & seqnum = 7 (ligada ao Page 7).

Ele contém um algoritmo para o que o autor chama de "pente" Guids; Reproduzo seu código (SQL) abaixo:

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

Trivial para converter isso em Java, ou o idioma desejado. O princípio subjacente óbvia é a de tornar a data um componente do Guid. O artigo inteiro é uma boa leitura, como ele faz uma análise interessante do desempenho das várias abordagens.

Outras dicas

Para UUIDs seqüenciais, você está olhando para uma versão 1 UUID. projeto Generator UUID Java parece funcionar muito bem e é muito fácil de usar:

Generators.timeBasedGenerator().generate().toString()

Esta página links para um par de versão 1 (sequenciais) implementações UUID em Java: http://johannburkard.de/blog/programming/java/Java -UUID-geradores-compared.html

Eu uso isso para gerar UUIDs (Universally Unique IDs) para os meus DTOs que atuam como chaves substitutas para coleções transitórios. Não sei se é a mesma coisa, mas pode apontar na direção certa.

import java.util.UUID;
...
    private String uuid=null;
...
    protected String getUuid() {
        synchronized (this) {
          if (null ==uuid) {
            uuid = UUID.randomUUID().toString();
          }
          return uuid;
        }
      }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top