Sequenziale Guid in Java
-
18-09-2019 - |
Domanda
Considerando il post che ho fatto circa la performance guid sequenziale sul quadro Microsoft.NET (vedi Quali sono il miglioramento delle prestazioni di Sequential Guid su standard di Guid? ) qualcuno ha un'implementazione adeguata, sicura, veloce e ben funzionante Java dello stesso algoritmo implementato nelle DLL di Windows?
Saluti Massimo
Soluzione
Si veda questo articolo: http://www.informit.com/ articoli / article.aspx? p = 25862 & seqNum = 7 (legato alla pagina 7).
Esso contiene un algoritmo per ciò che l'autore chiama "a pettine" GUID; Riporto il suo codice (SQL) di seguito:
SET @aGuid = CAST(CAST(NEWID() AS BINARY(10))
+ CAST(GETDATE() AS BINARY(6)) AS UNIQUEIDENTIFIER)
Trivial per convertire questo a Java, o la lingua desiderata. Il principio di base ovvio è quello di rendere la data un componente del GUID. L'intero articolo è una buona lettura, come fa una bella analisi delle prestazioni dei vari approcci.
Altri suggerimenti
Per UUID sequenziali, siete alla ricerca di una versione 1 UUID. progetto Java UUID Generator sembra funzionare abbastanza bene ed è abbastanza facile da usare:
Generators.timeBasedGenerator().generate().toString()
In questa pagina i link a un paio di versione 1 implementazioni (sequenziale) UUID in Java: http://johannburkard.de/blog/programming/java/Java -UUID-generatori-compared.html
Io lo uso per generare UUID (Universally ID univoci) per il mio DTOs che agiscono come chiavi surrogate per collezioni transitori. Non so se è la stessa cosa, ma può puntare nella giusta direzione.
import java.util.UUID;
...
private String uuid=null;
...
protected String getUuid() {
synchronized (this) {
if (null ==uuid) {
uuid = UUID.randomUUID().toString();
}
return uuid;
}
}