現時点では、クライアント側で long 型の一意の識別子を生成しようとしています。親が既に識別子として UUID を持っている親子関係があります。long 型の Child-Id を計算するための Parent-UUID を検討したいと思います。
私は現時点でこの実装を持っています:
public static void main(String[] args) {
/** Funnel. */
final Funnel<UUID> UUID_FUNNEL = new Funnel<UUID>() {
@Override
public void funnel(UUID parentUUID, PrimitiveSink into) {
final UUID tmpId = UUID.randomUUID();
into
// consider parent uuid
.putLong(parentUUID.getMostSignificantBits())
.putLong(parentUUID.getLeastSignificantBits())
// consider tmp uuid
.putLong(tmpId.getMostSignificantBits())
.putLong(tmpId.getLeastSignificantBits());
}
};
final UUID parentUUID = UUID.randomUUID();
System.out.println(parentUUID.toString());
for (int i = 0; i < 1000; i++) {
final long childId = Hashing.murmur3_128().newHasher()
.putObject(parentUUID, UUID_FUNNEL)
.hash().asLong();
System.out.println(childId);
}
}
このアイデアについてどう思いますか?どんな提案でも大歓迎です。
私はすでにこの質問を読みました: UUID を使用して一意の Long を生成する方法