4 ms·
My only wish is that UUIDs were sortable and still contained their timestamp. When bug hunting, sometimes things become a little more obvious when there is an e
by hn_user2 4y ago
My only wish is that UUIDs were sortable and still contained their timestamp. When bug hunting, sometimes things become a little more obvious when there is an exact start and end to ids with issues.
- myvoiceismypass 4y agoThere are KSUIDs that aim to satisfy this A go ref impl: https://github.com/segmentio/ksuid https://github.com/segmentio/ksuid
- scrollaway 4y agoAlso, UUIDv6, v7 and v8. Still a draft. https://datatracker.ietf.org/doc/html/draft-peabody-dispatch-new-uuid-format#page-8 https://datatracker.ietf.org/doc/html/draft-peabody-dispatch...
- dexwiz 4y agoDepends on the version used. Some of them do encode time. But since people don’t like to leak information they use the random version (4).
- andreareina 4y agoThey're little endian so not sortable
- sgtnoodle 4y agoWhat does that have to do with anything?
- andreareina 4y ago>>>> My only wish is that UUIDs were sortable and still contained their timestamp. When bug hunting, sometimes things become a little more obvious when there is an exact start and end to ids with issues. >>> Depends on the version used. Some of them do encode time. Encoding time isn't enough, it has to be big endian (unless you write a special sorting function for uuids). Timestamped uuids store the timestamp as [timestamp_low, timestamp_mid, version(!), timestamp_high][1] which doesn't sort right. [1] https://en.m.wikipedia.org/wiki/Universally_unique_identifier https://en.m.wikipedia.org/wiki/Universally_unique_identifie...
- pmontra 4y agoAccording to that Wikipedia page the binary representation of UUID 1 is big endian. It's the date-time and MAC address version.
- andreareina 4y agoThe whole 128-bit value is encoded in big endian. But the fields decompose into something that's not. If you search the page for "UUID record layout" you'll find the timestamp as I've described it.
- sgtnoodle 4y agoLast week I replaced an old broken window. I took a fragment of glass to the local glass company, and asked whether they cut custom glass. The receptionist said, "No, we do not." After some back-and-forth, I realized she thought I wanted to provide my own glass. I clarified, "I am just trying to replace a broken window." She handed me a form, and the next day I had a correctly shaped glass pane. If UUIDs contain time information, then they can be sorted by time. The details of the encoding, while important for actually implementing the sorting algorithm correctly, don't really seem relevant when reasoning at a high level?
- ilikehurdles 4y agoUUIDv7 is sortable by time but I’m not sure if it’s possible to derive the time stamp from the UUID somehow.
- jayknight 4y agoThe first 48 bits of uuidv7 is the number of microseconds since the epoch.
- vbezhenar 4y agoI implemented it myself. Was a little bit tricky, but not rocket science.
- Too 4y agoMongodbs ObjectId has this property.
- kube-system 4y agoI’ve always liked the pattern of putting timestamps on any objects in my DBs.
- mirzap 4y agoYou can use ULID and store it as UUID since they are the same size. You can check this article for the details: https://blog.daveallie.com/ulid-primary-keys https://blog.daveallie.com/ulid-primary-keys