加畑さんインタビュー:衝突しない文字列を作るお話 JAWS DAYS 2013 Araki room
2兆個、だいたい英数8桁の衝突しない文字列をつくるお話。
素数は3793、3797、3803、3821、3823、3833、3847。。というあたりで存在しています。ここから4つ(p1,p2,p3,p4)選んだ積は2兆くらいになる。そこで3800×4個のファイルをS3につくっておく。それぞれのファイルは2桁の文字(Ad, s6, xJとか。。)を入れた1.txtとかのファイル。
あとはシーケンシャルに作った数Nを N mod p1, N mod p2, N mod p3, N mod p4のファイルから取り出すとぶつかることがない8桁の文字列がコスト低く取り出せる、という話でした。ユニークなIDを連番でなく使いたいときに使えます。実際5000req/secをt1.microで作れているそうです。Nを作るためにMySQLを使っている。