short-uuid
ksuid
short-uuid | ksuid | |
---|---|---|
2 | 38 | |
430 | 4,718 | |
- | 1.5% | |
4.9 | 3.1 | |
16 days ago | 8 months ago | |
JavaScript | Go | |
MIT License | 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.
short-uuid
-
Moving Away from UUIDs
> The dash-separated hexadecimal format takes 36 characters to represent 16 bytes of data.
You can use a different formatting. I would suggest looking at https://github.com/oculus42/short-uuid Of course if you just want a random ID, then you might not need a UUID. But UUIDs have the advantage that there are different versions and you can distinguish them; e.g. you might want a unique ID that gives you some debugging information (where/when was it created), so you use v1 and later you can decide to switch to v4 if decide you want the IDs to carry no information.
Indepedent of how you generate the ID, I think the base-57 encoding that shortUUIDs use is quite good when the IDs are user facing. Not using O,0,l,1,I in the alphabet makes IDs more readable.
-
Understanding UUIDs in Node.js
Some popular npm packages for generating UUIDs in JavaScript are the uuid and short-uuid packages.
ksuid
- What happens after 100 years?
-
Zero Downtime Postgres Upgrades
OP here - we avoid sequences in all but one part of our application due to a dependency. We use [KSUIDs][1] and UUID v4 in various places. This one "gotcha" applies to any sequence, so it's worth calling out as general advice when running a migration like this.
[1]: https://segment.com/blog/a-brief-history-of-the-uuid/
-
Bye Sequence, Hello UUIDv7
UUID v4 isn't large enough to prevent collisions, that is why segment.io created https://github.com/segmentio/ksuid which is 160bit vs the 128bit of a UUIDv4.
- You Don't Need UUID
- A Brief History of the UUID
-
Type-safe, K-sortable, globally unique identifier inspired by Stripe IDs
Assuming you don't need to use UUIDv7 (or any UUID's) then https://github.com/segmentio/ksuid provides a much bigger keyspace. You could just append a string prefix if you wanted to namespace, but the chance of collisions of a KSUID is many times smaller than a UUID of any version.
-
Unexpected downsides of UUID keys in PostgreSQL
KSUID's are have temporal-lexicographical order plus 128 bits of entropy, which is more than UUIDv4.
https://github.com/segmentio/ksuid
-
UUIDs are so much better than autoincrementing ids and it's not even close
That's why you use ksuid (https://segment.com/blog/a-brief-history-of-the-uuid/) or, if you're willing to go with a draft spec you could go with the new UUID formats https://www.ietf.org/archive/id/draft-ietf-uuidrev-rfc4122bi...
-
What Happened to UUIDv2?
Interesting in more history of UUIDs? Twilio Segment's blog has an amazing history lesson about how they came to be.
-
Which UUID package do you use? and why?
I use the ksuid from segment. https://github.com/segmentio/ksuid
What are some alternatives?
nanoid - A tiny (124 bytes), secure, URL-friendly, unique string ID generator for JavaScript
ulid - Universally Unique Lexicographically Sortable Identifier (ULID) in Python 3
uuid - Generate RFC-compliant UUIDs in JavaScript
pg-ulid - ULID Functions for PostgreSQL
spec - The canonical spec for ulid
webpack - A bundler for javascript and friends. Packs many modules into a few bundled assets. Code Splitting allows for loading parts of the application on demand. Through "loaders", modules can be CommonJs, AMD, ES6 modules, CSS, Images, JSON, Coffeescript, LESS, ... and your custom stuff.
ulid-mssql - Implementation of ULID generator For Microsoft SQL Server
expo - An open-source framework for making universal native apps with React. Expo runs on Android, iOS, and the web.
python-ksuid - A pure-Python KSUID implementation
uuid7 - UUID version 7, which are time-sortable (following the Peabody RFC4122 draft)
cuid - Collision-resistant ids optimized for horizontal scaling and performance.