TwitterのIDが64bitになったのは知ってるけどぶっちゃけどう対応すりゃえーのん?
てことで必要にせまられて調べてみますた。
まず知っとかないといけないことは The Twitter Engineering Blog: Announcing Snowflake と README.mkd at master from twitter’s snowflake – GitHub にほとんど書かれています。英語読むの面倒な人のために重要なところだけ超訳します。
- Twitter の ID は 64bit です。64bit の内訳は、41bit のミリ秒/10bit のマシンID/12bitのマシン毎の連番(と明示されてないけど符号に1bit)です。
- ID は大雑把(ミリ秒単位で同一時刻に投稿されたツイートの順序は不定)にソートされています。ソート順序は不変です。
プログラミング視点ですと、64bit 整数(一応符号付きで良いっぽい、詳しくはここ参照)で、ソートキーとして使えるってあたりが必要な情報ですた。
ということなんで MySQL なら BIGINT UNSIGNED にしときゃいいっぽいです。(MySQL は MySQL で BIGINT の扱いに微妙な点があるので UNSIGNED にする意味はあんま無いっぽいですが一応付けといた方が無難かと。)
一応整数値らしいので、文字列で保持するとかは止めといた方が良いと思いまつ。2001年9月9日問題みたいな感じになるかもしれません。
NFzgFPeobTbaQMhVeA 9575