UPID – a unique ID with built-in prefix
UPID – a unique ID with built-in prefix
The discussion about what to use for database keys has come up a few times on HN. Integers or UUID, or maybe ULID/UUIDv7 with a time component. One that also comes up is prefixes (as used by Stripe, most famously). The biggest downside (imo) of the Stripe approach is that you either have to store them as strings, which isn't great, or strip/prepend in your API layer. So I made a new thing called UPID. It's most similar to ULID, as it includes a time-component (but with lower precision) and also encodes to a base32 alphabet. But it also includes a 20-bit prefix (allowing four characters). So it can be stored as a UUID or anywhere a 128-bit blob goes, and it always knows what its prefix is because it's baked in. I've made implementations for Python, Rust and TypeScript, as well as a Postgres extension (with a upid datatype). Mentioned it a few weeks ago in a HN discussion and people seemed pretty interested so thought I'd post it as a submission. In Rust it looks like this: use upid::Upid; Upid::new("post"); // post_2acqyme2ygscyguveuhj5a There are more examples in the repositories. Repo (Python, Rust, Postgres): https://github.com/carderne/upid TypeScript: https://github.com/carderne/upid-ts Demo site: https://upid.rdrn.me/
Share cardActual performance
Launch Intel predictions
Analyze your own launch →Incorrect prediction on native model
Similar products
K-ordered unique id in decentralised manner for Go
XID – Dependency-Free Unique ID Generator in One C File
Sonyflake – distributed unique ID generator implemented in Rust
FlocBloc: Obfuscate Your FLoC ID
FlocBloc: Obfuscate Your FLoC ID
FlocBloc – Obfuscate/Spoof your FLoC cohort id
FlocBloc – Obfuscate/Spoof your FLoC cohort id
Petition against national id in U.K
Prrrotect yourrr brrrand. No more fakesss or impersonatorrs!