Sequential Guid em Java
-
18-09-2019 - |
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
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;
}
}