Ulid
uuid6-ietf-draft
Ulid | uuid6-ietf-draft | |
---|---|---|
2 | 7 | |
842 | 183 | |
4.3% | 1.6% | |
5.9 | 5.7 | |
13 days ago | 6 months ago | |
C# | HTML | |
MIT License | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Ulid
-
How to use performant Guid as primary keys in databases. UUID Version 7 to the rescue!
Side note, an interesting thing to add to your benchmarks would be ULID https://github.com/Cysharp/Ulid
-
New UUID Formats – IETF Draft
I’m using Postgres so I actually have it a little easier with its native sort order. I switched from NUlid that I was using from years back to this one [0], and the default .ToGuid() gets the desired sort order when used with Npgsql. Likewise though, no db-side generation of uuid - then again, isn’t that the benefit of using globally unique identifiers in the first place, to avoid needing to rely on the db to generate conflict-free identifiers, skipping HiLo or sequences, etc.
Anyway, nice to meet another .NET Ulid user in the wild!
0: https://github.com/Cysharp/Ulid
uuid6-ietf-draft
-
The UX of UUIDs
https://github.com/uuid6/uuid6-ietf-draft/issues/27
-
This is very cool! I love this solution for ID’s what do you all think?
Why not UUIDv7?
-
UUIDs Are Bad for Database Index Performance, enter UUID7!
What if a new UUID version could be designed that would take the randomness of UUID4 and combine it with a timestamp prefix? This would make the UUID increase overall, but not locally – due to the random postfix. The random part ensures uniqueness when a high generation rate is necessary and also makes the UUIDs hard to predict – it’s not possible to guess the previous, or next UUID. It’s fairly simple to devise a custom UUID scheme, but fortunately, there is a new Internet-Draft (at the time of writing) defining new pseudo-sequential UUID versions that aim to solve exactly this issue: draft-peabody-dispatch-new-uuid-format-04. The current state and progress can be viewed at IETF Datatracker.
-
Understanding UUIDs, ULIDs and String Representations
Brad Peabody did the original -00 draft, which was discussed as an FYI at an IEFT meeting in March 2020. See [1], around 50 lines from the bottom.
Kyzer Davis has since submitted two further revisions -01 and -02 in April and October 2021. See history in [2].
The current -02 draft is due to expire in April 2022. Presumably Kyzer Davis will try to get it discussed before then.
The GitHub repo tracking these drafts is https://github.com/uuid6/uuid6-ietf-draft/.
[1] https://datatracker.ietf.org/meeting/107/materials/minutes-1...
[2] https://datatracker.ietf.org/doc/draft-peabody-dispatch-new-...
- UUID version 7. It's binary sortable and has many other advantages. Created specifically for modern distributed systems. IETF draft is published, they mid tweaking before publishing v3 draft.
-
New UUID Formats – IETF Draft
At the moment anyway, that XML link won't render per an XML parsing error. For anyone who wants a quick look at what these XML docs look like here's one for UUID6 [0].
[0] https://github.com/uuid6/uuid6-ietf-draft/blob/master/draft-...
What are some alternatives?
ksuid - K-Sortable Globally Unique IDs
uuid7 - UUID version 7, which are time-sortable (following the Peabody RFC4122 draft)
ulid-mssql - Implementation of ULID generator For Microsoft SQL Server
spec - The canonical spec for ulid
uulid.go - ULID-UUID compatibility library for generating and parsing ULIDs.
Entity Framework - EF Core is a modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrations.
shortuuid.rb - Convert UUIDs & numbers into space efficient and URL-safe Base62 strings, or any other alphabet.
shortuuid.go - Encode large numbers and UUIDs into space efficient strings