質問
Microsoft.NET Framework でのシーケンシャル GUID のパフォーマンスに関する投稿を考慮してください (「 Sequential Guid は標準 Guid と比べてどのようなパフォーマンスの向上がありますか?) Windows DLL に実装されているのと同じアルゴリズムの、適切で、確実で、高速で適切に機能する Java 実装を誰かが持っていますか?
Massimoについて
解決
この記事を参照してください。 http://www.informit.com/articles/article.aspx?p=25862&seqNum=7 (7 ページにリンク)。
これには、著者が「COMB」Guid と呼ぶもののアルゴリズムが含まれています。彼のコード (SQL) を以下に再現します。
SET @aGuid = CAST(CAST(NEWID() AS BINARY(10))
+ CAST(GETDATE() AS BINARY(6)) AS UNIQUEIDENTIFIER)
これを Java または希望の言語に変換するのは簡単です。明らかに基本的な原則は、日付を Guid のコンポーネントにすることです。彼はさまざまなアプローチのパフォーマンスについて優れた分析を行っているため、記事全体が読み応えがあります。
他のヒント
連続した UUID の場合は、バージョン 1 の UUID を探します。 Java UUID ジェネレーター プロジェクトは非常にうまく機能しているようで、非常に使いやすいです。
Generators.timeBasedGenerator().generate().toString()
このページは、Java のいくつかのバージョン 1 (順次) UUID 実装にリンクしています。http://johannburkard.de/blog/programming/java/Java-UUID-generators-compared.html
これを使用して、一時的なコレクションの代理キーとして機能する DTO の UUID (Universally Unique ID) を生成します。それが同じかどうかはわかりませんが、正しい方向を示すかもしれません。
import java.util.UUID;
...
private String uuid=null;
...
protected String getUuid() {
synchronized (this) {
if (null ==uuid) {
uuid = UUID.randomUUID().toString();
}
return uuid;
}
}