Home | Notifications | New Note | Local | Federated | Search | Logout
Note Detail
🦉@aaa (2025-12-28 20:29:16)
(timestamp_ms << n) | random_bits
だけでtimestamp(63 - n bit)、random(n bit)の64bit idを得られる。
19bitをランダムに使うと、秒間100万生成しても衝突確立が0.1%ぐらいだ。
これは大いに時系列だからprimary keyに使えるし、なにより短く、int64に収まる。
短いと人間にも優しいし、データベースも小さく、速くなる。
---Reply---
🦉@aaa (2026-01-31 01:25:12)
10回インクリメントして再試行で、0.1%^10 = 10^-30
これでUUIDぐらいの衝突耐性を稼げるから安心だろうか
Reply
---Replies---
🦉@aaa (2026-01-31 02:04:58)
そもそも再試行がなければ2^9.5回で50%衝突してしまうな
再試行があればそれまでのuniqueは保証されているから、n回目uniqueを侵害する確率がn / 2^19?
n = 2^10, 再試行10なら衝突確率は2^-90というのでいいだろうか、アレー