4 ms·
I haven’t been able to find a case for this because ids either need to be unique or they’re not going to be large. If they’re unique, I’m using uuid or ulid (uu
by ComputerGuru 3y ago
I haven’t been able to find a case for this because ids either need to be unique or they’re not going to be large. If they’re unique, I’m using uuid or ulid (uuidv7 of tomorrow) as the sortable primary key type to avoid conflicts without using the db to generate and maintain sequences.
Where do you have unique ids that aren’t the primary key? I would be more interested in a retrospectively unique truncated encoding for extant ulid/uuid; ie given that we’ve passed timestamp foo, we know that (where no external data is merged) we only need a bucketed time granularity of x for the random component of the id to remain unique (for when sortability is no longer needed).
Or just more generally a way to convert a ulid/uuidv7 to a shorter sequence if we are using it for external hash table lookups only and can do without the timestamp component.
- hot_gril 3y ago> Where do you have unique ids that aren’t the primary key? For things that need public IDs, I always generate and store uuid4s* to avoid leaking database state or anything like that. Even uuid7 leaks creation timestamps. It's cheap and easy to map public IDs to/from PKs at the API boundaries. * possibly encoded as something nicer like base64 for APIs or URLs
- Bytewave81 3y agoThe idea is that you encode and decode database IDs with this. You wouldn't save them separately unless you were using it for a purpose other than shareable "identifiers" which don't leak significant amounts of database state. Imagine something like a link shortener where you want to provide a short link to users, but don't want it to just be a number.
- hot_gril 3y agoThese leak the state just as much. They're reversible back to integers.
- ComputerGuru 3y agoMy point was that this only encodes numbers and you wouldn’t use numbers as primary keys for the reasons outlined.
- swyx 3y agowhy is ulid the uuidv7 of tomorrow?
- ComputerGuru 3y agoUuidv7 is inspired by ulid.
- canadiantim 3y agoI’m currently using sqids as slugs to have a shorter url than just using my uuid primary key
- ComputerGuru 3y agoWhy would the number the sqid converts to not be your primary key, though? Why do you need the uuid at all?