| ▲ | jasonwatkinspdx 3 days ago | |
Right, but the point is there's no reason to accept this limitation. Likewise why hardcode millisecond scale timestamps in a world where billions of inserts per second are practical on a single server? Or if what you want is monotonic distributed timestamps, again, HLC is how you do that properly. So you're embracing this weird limitations for no real benefit. And as you can see in the rest of this comment thread, a lot of people simply do not even know this behavior and are assuming the 80 bit portion is always random. Which is my whole point about having a not really an invariant invariant just being a bad way to go fundamentally. Edit: just to reply to the below since I can't do so directly, I understand the arithmetic here. What I'm saying is there's zero reason to choose this weird scheme vs something that's just the full birthday bound and you never think about it again. As another comment points out: just consider neighbor guessing attacks. This 80 bit random but not random field is a foot gun to anyone that just assumes they can treat it as truly random. | ||
| ▲ | listenallyall 3 days ago | parent | next [-] | |
It's not a "limitation", he's saying there is much, much, much less chance of having any collisions with ULIDs - one in a million vs one in a trillion | ||
| ▲ | Dylan16807 3 days ago | parent | prev [-] | |
> why hardcode millisecond scale timestamps in a world where billions of inserts per second are practical on a single server? > Or if what you want is monotonic distributed timestamps, again, HLC is how you do that properly. Why not just 64 bit timestamps stapled to a random number? You can be collision proof and monotonic without doing anything fancy. > this weird scheme vs something that's just the full birthday bound and you never think about it again But the weird scheme gives you better odds than the birthday bound. | ||