Microsoft.NET フレームワークでのシーケンシャル GUID のパフォーマンスについて私が作成した投稿を考慮すると (標準 Guid に対する Sequential Guid のパフォーマンスの向上は何ですか? を参照してください)、誰かが同じアルゴリズムの適切で、確実で、高速で、うまく機能する Java 実装を持っていますか? Windows DLL に実装されていますか?
よろしくマッシモ
Microsoft.NET フレームワークでのシーケンシャル GUID のパフォーマンスについて私が作成した投稿を考慮すると (標準 Guid に対する Sequential Guid のパフォーマンスの向上は何ですか? を参照してください)、誰かが同じアルゴリズムの適切で、確実で、高速で、うまく機能する Java 実装を持っていますか? Windows DLL に実装されていますか?
よろしくマッシモ
この記事を参照してください: 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 Generatorプロジェクトは非常にうまく機能しているようで、非常に使いやすいです。
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;
}
}