Snowflake ID
Snowflake ID(すのーふれーくあいでぃー)は分散コンピューティングで用いられる一意な識別子の一種であり、単にスノーフレークとも呼ばれる。Snowflake IDのフォーマットはTwitter(現X)によって、ツイートに割り当てるIDとして開発された[1]。名称は、全ての雪片(snowflake)が固有の構造を持っていると広く信じられていることに由来する。このフォーマットはDiscordやInstagramなど、他の企業でも採用されている。マストドンソーシャルネットワークでは、Snowflake IDの改訂版が用いられている。 フォーマットSnowflake IDは64ビットのバイナリ形式であり、符号付き整数の形式に合わせるために63ビットが用いられる。先頭の41ビットはタイムスタンプで、ある特定の基準時刻からの経過秒数をミリ秒単位で表現したものである。続く10ビットは衝突を回避するためのマシンIDである。最後の12ビットは各マシンで生成されるシーケンス番号で、これによって同じミリ秒時刻で複数のSnowflake IDを生成することができる。この方法で生成されたSnowflake IDは、一般に十進表記を用いて直列化される[2]。 Snowflake IDは生成時刻を含むため、時間順でのソートが可能である[2]。さらに生成された時刻を抽出することも可能である。この性質を用いて、特定の時刻以前あるいは以降に生成されたSnowflake ID(とそれに関連付けられたオブジェクト)を取得することができる[3]。
例@Wikipedia によって2022年6月に作成されたツイート[4]は、1541815603606036480というSnowflake IDを有している。このIDは二進表記で00 0001 0101 0110 0101 1010 0001 0001 1111 0110 0010 00|01 0111 1010|0000 0000 0000と変換することが可能である(バーティカルバーはIDの3つのパートの区切りを表す)。
利用このフォーマットはTwitterによって2010年6月に初めて公開された[1]。実装上の課題を解決するため、彼らは更新版を公開するのを同年後半まで待つことになった[6] 。
関連項目脚注
外部リンク |