忘備録: snowflake/shakeflakeについて
遅まきながらしったがこれは便利そうである。あとでちゃんと読む。
Unique identifierのgenerationは、
生成コスト+冗長性 <=> Idのdata size
のトレードオフなわけで
- 生成コスト+冗長性に倒したのが、UUIDであり(128bit)
- Data sizeに倒したのが RDBSのシーケンステーブルだったり、Auto Incrementだったりする
これはその中間を目指してる模様。おおよそUUIDのように使用できて、UUIDと違ってMySQLのbigintに収まるとすると使いどころは多そう。
ちゃんとよんでないが、Generator(machineId)だけ中央集権的に管理をし、あとは生成器でネットワークを介さずにidをgenerateできるということっぽい。
しかし、machineIdの管理をどうしてるのかは少し気になるところ。異なるホストで使ったりすると時間のずれによる影響のコントロールが難しそうだったりするし、一方で使いまわししないとmachineIdが枯渇したりしそう。
一回破棄したmachineIdは一定時間使用不可能にして別のmachineでも使えるようにするなどすれば問題はでないだろうけど、多少の工夫は必要そうではある