~

UUID or else

There are many use cases where we need to use a unique ID. In my experience, I only encounter 2 cases:

In my Go universe, there are some libs to help us with this:

First use case is trace ID, or context aware ID

The ID is used only for trace and log. If same ID is generated twice (because maybe the possibility is too small but not 0), honestly I don't care. When I use that ID to search log , if it pops more than things I care for, it is still no harm to me.

My choice for this use case is rs/xid. Because it is small (not span too much on log line) and copy friendly.

Second use case is primary key, also hard choice

Why I don't use auto increment key for primary key? The answer is simple, I don't want to write database specific SQL. SQLite has some different syntax from MySQL, and PostgreSQL and so on. Every logic I can move to application layer from database layer, I will.

The ID must be sortable (because index) and unique.

I have 3 choices:

What else?

I think about adding prefix to ID to identify which resource that ID represents.

For example: user:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.

Thanks

Feel free to ask me via email or Mastodon.
Source code is available on GitHub Codeberg sourcehut Treehouse GitLab