uuid6-ietf-draft
ulid-mssql
Our great sponsors
uuid6-ietf-draft | ulid-mssql | |
---|---|---|
7 | 1 | |
182 | 39 | |
1.6% | - | |
5.7 | 4.2 | |
6 months ago | 4 months ago | |
HTML | TSQL | |
- | Apache License 2.0 |
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.
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-...
ulid-mssql
-
New UUID Formats – IETF Draft
Yeah, it's a small world.
I actually took the opposite path and explored several of the micro-optimized ULID libraries in C# before settling down with NUlid which I decided had the cleanest API and documentation (and reasonably good response times to GitHub issues). The implementation of Cysharp's lib has a lot of Unsafe code, which I understand why they took that path (given the focus on Unity code), but I'm hesitant about it and I liked a lot better (conceptually) how much more Span code mcb2001's CSharp.Ulid library had and if I were to micro-optimize a library that's much more the path that I would take. (But so far micro-optimizations of that sort haven't been a priority in my real world usage and I'll take the well tested library with the nice API.) I created a couple simple extension methods to do the specific "ToSqlGuid()" and "ToUlidFromSql()" that I desired for the SQL Server sort order. (Which is just shuffling the first six bytes of a ULID byte array to the end of the GUID byte array and vice versa.)
I actually trust that I can at least generate ULIDs in SQL Server, again because the part I care to be sorted/needs to be correct (the timestamp) fits into the non-endian-issue portion of a GUID in SQL Server. I've been using just the generator function from ulid-mssql [1] (I used it mostly just for DB migrations and it was nice to have for that). It was debugging the endian issues and Base-32 encoding issues of the "ULID GUID to string" functions where I gave up and decided I didn't trust doing that in database.
[1] https://github.com/rmalayter/ulid-mssql
What are some alternatives?
uuid7 - UUID version 7, which are time-sortable (following the Peabody RFC4122 draft)
ksuid - K-Sortable Globally Unique IDs
Ulid - Fast .NET C# Implementation of ULID for .NET and Unity.
uulid.go - ULID-UUID compatibility library for generating and parsing ULIDs.
spec - The canonical spec for ulid
lexid - fast lexicographically orderable/sortable ID generator
shortuuid.rb - Convert UUIDs & numbers into space efficient and URL-safe Base62 strings, or any other alphabet.
shortuuid - A generator library for concise, unambiguous and URL-safe UUIDs.