トップQs
タイムライン
チャット
視点
Snowflake ID
さまざまなプラットフォームで使われている固有識別子 ウィキペディアから
Remove ads
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つのパートの区切りを表す)。
Remove ads
利用
このフォーマットはTwitterによって2010年6月に初めて公開された[1]。実装上の課題を解決するため、彼らは更新版を公開するのを同年後半まで待つことになった[6] 。
- Twitter(現X)ではツイート、ダイレクトメッセージ、ユーザ、リスト、その他API経由で取得可能なすべてのオブジェクトにSnowflake IDを用いている[7]。
- DiscordもSnowflake IDを用いているが、彼らの基準時刻は2015年1月1日0時0分0秒に設定されている[3]。
- InstagramはSnowflake IDの改訂版を用いている。41ビットがタイムスタンプであり、13ビットがシャードID、10ビットがシーケンス番号という構成になっている[8]。
- マストドンの改訂版フォーマットでは、Unixエポックを基準時刻として用いるため、ミリ秒単位でのタイムスタンプに48ビットを割いている。残りの16ビットはシーケンス番号である。[9]。
Remove ads
関連項目
脚注
外部リンク
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads