UUIDv7 Method 3 implementation #10862
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
It seems, our UUIDv7 generation system is not suitable for high frequency generation (thousand UUIDs per millisecond) - for this purpose implementation does not fully comply with RFC 9562. Namely, in such cases they insist that instead of a completely random number, monotonic counter or monotonic clock should be used: 6.2. Monotonicity and Counters
Here is my implementation of "Method 3" from RFC 9562.
"Method 3" is pretty cool idea here that time divides the data into +/- identical 1/4 microsecond buckets with random 60-bits tails. This should divide into unique all UUIDs in the world that were generated in that 1/4 microsecond moment.
For accurate time stamps I used
StopWatch
, which internally usesMonoTime
. Is it okay to keepMonoTime
running for a very long time? Won't it break after six months of continuous running or something like?