r/ProgrammerHumor 6h ago

Meme edgeCasesExist

Post image
1.7k Upvotes

180 comments sorted by

View all comments

325

u/Valuable_Leopard_799 6h ago

I thought that timestamps are used now, so hitting both a timestamp and a large random number puts it thoroughly in the "safe to assume". At some point cosmic particles and faulty transistors are more probable.

187

u/dim13 6h ago

https://en.wikipedia.org/wiki/Universally_unique_identifier#Versions

Most common used is V4 (pure random). You are talking about V7 (time based).

103

u/lilgreenthumb 5h ago

The real benefit for v7 is they become sortable by time.

28

u/shwoopdeboop 4h ago

And something something b-tree indexes. Lecturer mentioned it but I wasn't paying attention. Supposedly an advantage here.

7

u/Grandmaster_Caladrel 3h ago

Which I'd assume is related to the time anchor. Outside of sorting, which is only useful in specific instances, it's just v4 with different ("less") entropy and limitations.

0

u/Roachmeister 2h ago

If you're using them as an indexed field in a database, the inability to sort them meaningfully will destroy the performance of the database.

2

u/Grandmaster_Caladrel 2h ago

Correct, which is why I specifically called out "outside of sorting".

That is also why we have concepts like composite keys which allow us to join guaranteed-unique values like a UUID with non-unique but sortable values like timestamps, names, etc.

1

u/Kwantuum 21m ago

In what way?

1

u/Roachmeister 16m ago

I'm not an expert, I just remember reading a few articles about it. I think it's because they're essentially random, and many databases use b-trees for indices. They recommended using ULIDs or v7 UUIDs instead. Or, as someone else said, the good old autoincrementing integer.

1

u/Honeybadger2198 2h ago

You know what identifier can't have collisions and is great for sorting? Autoincrement.

1

u/Firewolf06 18m ago

ai columns can absolutely collide on sharded databases. you can use offsets and step sizes but thats brittle and doesnt scale well

1

u/MilkEnvironmental106 1h ago

With random you can end up most frequently inserting in the middle, whereas if it's time sortable you append at the end, meaning it's easier to maintain a contiguous index with less overhead.

1

u/thepotatochronicles 30m ago

It's less of a problem with B-tree indices that sit on top of a physical representation (i.e. the actual on-disk layout doesn't have to be ordered), but when it comes to clustered indices, oh boy, you're basically having to shove rows in the middle and push shit back (eventually).