SlideShare a Scribd company logo
1 of 37
Download to read offline
Twitterのsnowflakeに
ついて
DSIRNLP #4
@just_do_neet
DSIRNLP #4 / Twitterのsnowflakeについて
今日話す内容
•snowflake
•Twitter社がOSSとして提供しているID生成器
•なぜこのようなツールが必要なのか
•仕組みについて
•etc,etc...
2
DSIRNLP #4 / Twitterのsnowflakeについて
ID生成は結構大事(小並感)
•たいていの処理の際にIDの生成は必要になる
•例1:クローリングした各Webサイト群それぞ
れにIDを割り振る
•例2:n-gramで分かち書きをした各ワード群
それぞれにIDを割り振る
•etc, etc...
3
DSIRNLP #4 / Twitterのsnowflakeについて
ID生成の性能も結構大事
•例:1つのID生成に1msかかるとした場合、ID生
成処理にどれくらい時間がかかる?
•Webサイト10億ページ
the number of individual web pages out there is growing by several billion pages per day.
(at 2008. via http://googleblog.blogspot.jp/2008/07/we-knew-web-was-big.html)
→約11日
•Webサイト240万ページ
日本語wikipediaの総項目数. via http://ja.wikipedia.org/wiki/Wikipedia:
%E5%85%A8%E8%A8%80%E8%AA%9E%E7%89%88%E3%81%AE
%E7%B5%B1%E8%A8%88
→約40分
4
DSIRNLP #4 / Twitterのsnowflakeについて
どんな風にIDを生成する?
•数値のカウントアップ
•各RDBMSの number increment 機能を使って
•例:Oracle の sequence
•例:MySQL のauto increment
•Pros : 実装が簡単
•Cons : ID生成処理が1台のRDBMSに集中し
分散できない。スケールしない。
5
DSIRNLP #4 / Twitterのsnowflakeについて
どんな風にIDを生成する?
•数値のカウントアップ
•順序の保証、一意性の保証を何かしらの手段で
行う必要がある。
•ナイーブには「IDを発行する人は1人だけ」
という形で保証。
•仕組み上、処理性能がスケールしにくい
6
DSIRNLP #4 / Twitterのsnowflakeについて
どんな風にIDを生成する?
•RFC 4122 “A Universally Unique IDentifier(UUID)”
•http://www.ietf.org/rfc/rfc4122.txt
• “UUIDは、分散システム上でどこかが統制を取らずとも、一意に特定可
能な識別子の作成を目的としており...” (wikipedia)
•128bitのデータでIDを表現。
例:550e8400-e29b-41d4-a716-446655440000
7
DSIRNLP #4 / Twitterのsnowflakeについて
どんな風にIDを生成する?
•RFC 4122 “A Universally Unique IDentifier(UUID)”
8
ver. description
1 The time-based version specified in this document.
2 DCE Security version, with embedded POSIX UIDs.
3
The name-based version specified in this document that uses
MD5 hashing.
4
The randomly or pseudo-randomly generated version specified
in this document.
5
The name-based version specified in this document that uses
SHA-1 hashing.
DSIRNLP #4 / Twitterのsnowflakeについて
どんな風にIDを生成する?
•RFC 4122 “A Universally Unique IDentifier(UUID)”
•version 1 (time-based)
9
DSIRNLP #4 / Twitterのsnowflakeについて
どんな風にIDを生成する?
•RFC 4122 “A Universally Unique IDentifier(UUID)”
•Pros : 複数のマシンで並列動作させても一意な
IDを生成させる事ができる。
•Cons : しかし128bitはIDのサイズとしては大きい気
がする...
10
DSIRNLP #4 / Twitterのsnowflakeについて
どんな風にIDを生成する?
•ID生成器に求められるもの
•並列に一意なIDの生成が行える。
•できる限り小さいサイズでIDの生成が行える。
11
DSIRNLP #4 / Twitterのsnowflakeについて
snowflake
12
DSIRNLP #4 / Twitterのsnowflakeについて
snowflake
•
•TwitterがOSSとして公開しているID生成器
https://github.com/twitter/snowflake/
•Time-basedなID(timestampを基に生成)
•64bitでIDを表現
•複数台のマシンを用いて並列に一意なIDの生成
が行える
13
DSIRNLP #4 / Twitterのsnowflakeについて
snowflake
14
DSIRNLP #4 / Twitterのsnowflakeについて
参考:New Tweets per second record, and how!
15
•https://blog.twitter.com/2013/new-tweets-per-
second-record-and-how
DSIRNLP #4 / Twitterのsnowflakeについて
参考:New Tweets per second record, and how!
16
•https://blog.twitter.com/2013/new-tweets-per-
second-record-and-how
DSIRNLP #4 / Twitterのsnowflakeについて
snowflake
•64bitのlong値でIDを表現 (※先頭1bitは0)
•3つの要素で構成
•timestamp (41 bit) :
現在のunixtime(ms)から、ある時点のunixtimeを引いた値
•machine id (10 bit):
生成器に割り当てられたID。datacenter id + worker id。
•sequence (12 bit):
生成器ごとに採番するsequence番号
17
DSIRNLP #4 / Twitterのsnowflakeについて
snowflake
•Q: timestampは41 bitで大丈夫?
•A: WebサービスのIDとして用いる分には大丈夫
では
•snowflakeでは
「現在のunixtime - 採番開始時のunixtime」
をtimestamp値として使用
•timestampがオーバーフローするのは、採番
開始からおおよそ69年後
18
DSIRNLP #4 / Twitterのsnowflakeについて
snowflake
19
•ID生成部のソース
https://github.com/twitter/snowflake/blob/master/src/main/scala/com/twitter/service/snowflake/IdWorker.scala
DSIRNLP #4 / Twitterのsnowflakeについて
•ID生成部のソース
https://github.com/twitter/snowflake/blob/master/src/main/scala/com/twitter/service/snowflake/IdWorker.scala
snowflake
20
現在のunixtimeを取得
DSIRNLP #4 / Twitterのsnowflakeについて
snowflake
21
1回前に取得したunixtimeより今の
unixtimeが古い場合はthrow exception
(OSの時刻ズレが起きた可能性)
•ID生成部のソース
https://github.com/twitter/snowflake/blob/master/src/main/scala/com/twitter/service/snowflake/IdWorker.scala
DSIRNLP #4 / Twitterのsnowflakeについて
snowflake
22
sequence番号のカウントアップ
同じtimestamp値の中で12bit分
(0-4095)まで採番できる
•ID生成部のソース
https://github.com/twitter/snowflake/blob/master/src/main/scala/com/twitter/service/snowflake/IdWorker.scala
DSIRNLP #4 / Twitterのsnowflakeについて
•ID生成部のソース
https://github.com/twitter/snowflake/blob/master/src/main/scala/com/twitter/service/snowflake/IdWorker.scala
snowflake
23
万が一sequence番号が枯渇した場合
は、unixtimeが新しくなる( 1ms経過
する)まで待つ
DSIRNLP #4 / Twitterのsnowflakeについて
snowflake
24
今回使用したunixtimeを保存
•ID生成部のソース
https://github.com/twitter/snowflake/blob/master/src/main/scala/com/twitter/service/snowflake/IdWorker.scala
DSIRNLP #4 / Twitterのsnowflakeについて
snowflake
25
ID生成
(timestamp << 22 + datacenterId <<
17 + workerId << 12 + sequence)
•ID生成部のソース
https://github.com/twitter/snowflake/blob/master/src/main/scala/com/twitter/service/snowflake/IdWorker.scala
DSIRNLP #4 / Twitterのsnowflakeについて
•ID生成部のソース
https://github.com/twitter/snowflake/blob/master/src/main/scala/com/twitter/service/snowflake/IdWorker.scala
snowflake
26
twepoch が採番開始時のunixtime
1288834974657 = 2010/11/04 10:42:54
DSIRNLP #4 / Twitterのsnowflakeについて
snowflake
•利点
•IDソート ≒ 時系列ソート
ID情報だけでID生成時のtimestamp値に基づい
た時系列ソートが可能
•ID値からID生成時のtimestamp値が復元可能
27
timestamp = (id >> 22) + twepoch
DSIRNLP #4 / Twitterのsnowflakeについて
snowflake
28
(369070365764354048 >> 22 + 1288834974657)
= 1376828206851 (2013/8/18 21:16:46)
DSIRNLP #4 / Twitterのsnowflakeについて
snowflake
•利点
•整数列圧縮を用いた効率的な情報圧縮が容易
(Variable Byte Code , PFor Delta , Simple9,
etc...)
29
DSIRNLP #4 / Twitterのsnowflakeについて
snowflake
•弱点
•OSの時刻ズレに弱い
•運用面で工夫が多少必要
30
https://github.com/twitter/snowflake/#system-clock-dependency
DSIRNLP #4 / Twitterのsnowflakeについて
snowflake
•弱点?
•ID採番時にsnowflakeサーバーにthrift 経由で接
続するようになっている。
•小∼中規模で運用するには若干重厚な気が
31
DSIRNLP #4 / Twitterのsnowflakeについて
shakeflake(仮称)
•snowflakeを模して社内で作成した軽量なID生成器
•redis 2.6 + lua scripting版
•JavaVM版
32
DSIRNLP #4 / Twitterのsnowflakeについて
shakeflake(仮称)
•参考:
http://developer.smartnews.be/blog/2013/07/31/
shakeflake-is-a-tool-for-generating-unique-id-
numbers/
33
DSIRNLP #4 / Twitterのsnowflakeについて
shakeflake(仮称)
•参考:
http://developer.smartnews.be/blog/2013/07/31/
shakeflake-is-a-tool-for-generating-unique-id-
numbers/
34
まとめ
DSIRNLP #4 / Twitterのsnowflakeについて
•Twitter社がOSSとして提供しているID生成器
”snowflake”のご紹介
•こういうツールが必要とされる背景
•仕組み
•etc, etc...
•何かのご参考になれば幸いです。
まとめ
36
Thanks for your listening :)

More Related Content

What's hot

シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかAtsushi Nakada
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計sairoutine
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計Yoshinori Matsunobu
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けモノビット エンジン
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)mosa siru
 
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術Takuto Wada
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことgree_tech
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ増田 亨
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)Takuto Wada
 
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話Yoshitaka Kawashima
 
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いマイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いota42y
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話Koichiro Matsuoka
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫Yuta Imai
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)Yoshitaka Kawashima
 
クラウド環境下におけるAPIリトライ設計
クラウド環境下におけるAPIリトライ設計クラウド環境下におけるAPIリトライ設計
クラウド環境下におけるAPIリトライ設計Kouji YAMADA
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編infinite_loop
 
こわくない Git
こわくない Gitこわくない Git
こわくない GitKota Saito
 
CRDT in 15 minutes
CRDT in 15 minutesCRDT in 15 minutes
CRDT in 15 minutesShingo Omura
 

What's hot (20)

シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
 
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いマイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
 
クラウド環境下におけるAPIリトライ設計
クラウド環境下におけるAPIリトライ設計クラウド環境下におけるAPIリトライ設計
クラウド環境下におけるAPIリトライ設計
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
CRDT in 15 minutes
CRDT in 15 minutesCRDT in 15 minutes
CRDT in 15 minutes
 

Similar to Twitterのsnowflakeについて

Generating unique id numbers in Azure
Generating unique id numbers in AzureGenerating unique id numbers in Azure
Generating unique id numbers in AzureTakekazu Omi
 
クラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccampクラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccampMasahiro NAKAYAMA
 
ユーザーを待たせないためにできること
ユーザーを待たせないためにできることユーザーを待たせないためにできること
ユーザーを待たせないためにできることTomoaki Imai
 
WordPressで行う継続的インテグレーション入門編
WordPressで行う継続的インテグレーション入門編WordPressで行う継続的インテグレーション入門編
WordPressで行う継続的インテグレーション入門編Hiroshi Urabe
 
connpass特徴と開発の流れ
connpass特徴と開発の流れconnpass特徴と開発の流れ
connpass特徴と開発の流れIkeda Yosuke
 
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015Masahiro Nagano
 
仙台 iOS開発者勉強会 2011/11/03 - TwitterAPIについて
仙台 iOS開発者勉強会 2011/11/03 - TwitterAPIについて仙台 iOS開発者勉強会 2011/11/03 - TwitterAPIについて
仙台 iOS開発者勉強会 2011/11/03 - TwitterAPIについてtototti
 
iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術vaccho
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについてMasahito Zembutsu
 
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hackyut148atgmaildotcom
 
第2.1回Twitter API勉強会 - 検索API
第2.1回Twitter API勉強会 - 検索API第2.1回Twitter API勉強会 - 検索API
第2.1回Twitter API勉強会 - 検索APIYusuke Yamamoto
 
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)TIS Inc.
 
DataEngConf NYC’18 セッションサマリー #1
DataEngConf NYC’18 セッションサマリー #1DataEngConf NYC’18 セッションサマリー #1
DataEngConf NYC’18 セッションサマリー #1gree_tech
 
[Gree] DataEngConf NYC’18 セッションサマリー #1
[Gree] DataEngConf NYC’18 セッションサマリー #1[Gree] DataEngConf NYC’18 セッションサマリー #1
[Gree] DataEngConf NYC’18 セッションサマリー #1Takashi Suzuki
 
WebAppDev勉強会 #4
WebAppDev勉強会 #4WebAppDev勉強会 #4
WebAppDev勉強会 #4Kohei Noda
 
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasiaサンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasiaMasayuki Ishikawa
 
高速処理と高信頼性を両立し、ペタバイト級の多種大量データを蓄積する、ビッグデータ/ IoT時代のデータベースとは??
高速処理と高信頼性を両立し、ペタバイト級の多種大量データを蓄積する、ビッグデータ/ IoT時代のデータベースとは??高速処理と高信頼性を両立し、ペタバイト級の多種大量データを蓄積する、ビッグデータ/ IoT時代のデータベースとは??
高速処理と高信頼性を両立し、ペタバイト級の多種大量データを蓄積する、ビッグデータ/ IoT時代のデータベースとは??griddb
 
NIST Cybersecurity Framework 概要
NIST Cybersecurity Framework 概要NIST Cybersecurity Framework 概要
NIST Cybersecurity Framework 概要You&I
 
TFSUG 3 LT -TFS Advent Calendar-
TFSUG 3 LT -TFS Advent Calendar-TFSUG 3 LT -TFS Advent Calendar-
TFSUG 3 LT -TFS Advent Calendar-Takahisa Wada
 

Similar to Twitterのsnowflakeについて (20)

Generating unique id numbers in Azure
Generating unique id numbers in AzureGenerating unique id numbers in Azure
Generating unique id numbers in Azure
 
クラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccampクラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccamp
 
ユーザーを待たせないためにできること
ユーザーを待たせないためにできることユーザーを待たせないためにできること
ユーザーを待たせないためにできること
 
WordPressで行う継続的インテグレーション入門編
WordPressで行う継続的インテグレーション入門編WordPressで行う継続的インテグレーション入門編
WordPressで行う継続的インテグレーション入門編
 
connpass特徴と開発の流れ
connpass特徴と開発の流れconnpass特徴と開発の流れ
connpass特徴と開発の流れ
 
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
 
仙台 iOS開発者勉強会 2011/11/03 - TwitterAPIについて
仙台 iOS開発者勉強会 2011/11/03 - TwitterAPIについて仙台 iOS開発者勉強会 2011/11/03 - TwitterAPIについて
仙台 iOS開発者勉強会 2011/11/03 - TwitterAPIについて
 
iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
 
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack
 
第2.1回Twitter API勉強会 - 検索API
第2.1回Twitter API勉強会 - 検索API第2.1回Twitter API勉強会 - 検索API
第2.1回Twitter API勉強会 - 検索API
 
Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集+GDC情報をご紹介
Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集+GDC情報をご紹介Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集+GDC情報をご紹介
Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集+GDC情報をご紹介
 
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
 
DataEngConf NYC’18 セッションサマリー #1
DataEngConf NYC’18 セッションサマリー #1DataEngConf NYC’18 セッションサマリー #1
DataEngConf NYC’18 セッションサマリー #1
 
[Gree] DataEngConf NYC’18 セッションサマリー #1
[Gree] DataEngConf NYC’18 セッションサマリー #1[Gree] DataEngConf NYC’18 セッションサマリー #1
[Gree] DataEngConf NYC’18 セッションサマリー #1
 
WebAppDev勉強会 #4
WebAppDev勉強会 #4WebAppDev勉強会 #4
WebAppDev勉強会 #4
 
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasiaサンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
 
高速処理と高信頼性を両立し、ペタバイト級の多種大量データを蓄積する、ビッグデータ/ IoT時代のデータベースとは??
高速処理と高信頼性を両立し、ペタバイト級の多種大量データを蓄積する、ビッグデータ/ IoT時代のデータベースとは??高速処理と高信頼性を両立し、ペタバイト級の多種大量データを蓄積する、ビッグデータ/ IoT時代のデータベースとは??
高速処理と高信頼性を両立し、ペタバイト級の多種大量データを蓄積する、ビッグデータ/ IoT時代のデータベースとは??
 
NIST Cybersecurity Framework 概要
NIST Cybersecurity Framework 概要NIST Cybersecurity Framework 概要
NIST Cybersecurity Framework 概要
 
TFSUG 3 LT -TFS Advent Calendar-
TFSUG 3 LT -TFS Advent Calendar-TFSUG 3 LT -TFS Advent Calendar-
TFSUG 3 LT -TFS Advent Calendar-
 

More from moai kids

中国最新ニュースアプリ事情
中国最新ニュースアプリ事情中国最新ニュースアプリ事情
中国最新ニュースアプリ事情moai kids
 
FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係moai kids
 
Programming Hive Reading #4
Programming Hive Reading #4Programming Hive Reading #4
Programming Hive Reading #4moai kids
 
Programming Hive Reading #3
Programming Hive Reading #3Programming Hive Reading #3
Programming Hive Reading #3moai kids
 
"Programming Hive" Reading #1
"Programming Hive" Reading #1"Programming Hive" Reading #1
"Programming Hive" Reading #1moai kids
 
Casual Compression on MongoDB
Casual Compression on MongoDBCasual Compression on MongoDB
Casual Compression on MongoDBmoai kids
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBmoai kids
 
Hadoop Conference Japan 2011 Fallに行ってきました
Hadoop Conference Japan 2011 Fallに行ってきましたHadoop Conference Japan 2011 Fallに行ってきました
Hadoop Conference Japan 2011 Fallに行ってきましたmoai kids
 
HBase本輪読会資料(11章)
HBase本輪読会資料(11章)HBase本輪読会資料(11章)
HBase本輪読会資料(11章)moai kids
 
snappyについて
snappyについてsnappyについて
snappyについてmoai kids
 
第四回月次セミナー(公開版)
第四回月次セミナー(公開版)第四回月次セミナー(公開版)
第四回月次セミナー(公開版)moai kids
 
第三回月次セミナー(公開版)
第三回月次セミナー(公開版)第三回月次セミナー(公開版)
第三回月次セミナー(公開版)moai kids
 
Pythonで自然言語処理
Pythonで自然言語処理Pythonで自然言語処理
Pythonで自然言語処理moai kids
 
HandlerSocket plugin Client for Javaとそれを用いたベンチマーク
HandlerSocket plugin Client for Javaとそれを用いたベンチマークHandlerSocket plugin Client for Javaとそれを用いたベンチマーク
HandlerSocket plugin Client for Javaとそれを用いたベンチマークmoai kids
 
Yammer試用レポート(公開版)
Yammer試用レポート(公開版)Yammer試用レポート(公開版)
Yammer試用レポート(公開版)moai kids
 
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)moai kids
 
中国と私(仮題)
中国と私(仮題)中国と私(仮題)
中国と私(仮題)moai kids
 
不自然言語処理コンテストLT資料
不自然言語処理コンテストLT資料不自然言語処理コンテストLT資料
不自然言語処理コンテストLT資料moai kids
 
n-gramコーパスを用いた類義語自動獲得手法について
n-gramコーパスを用いた類義語自動獲得手法についてn-gramコーパスを用いた類義語自動獲得手法について
n-gramコーパスを用いた類義語自動獲得手法についてmoai kids
 
Analysis of ‘lang-8’
Analysis of ‘lang-8’Analysis of ‘lang-8’
Analysis of ‘lang-8’moai kids
 

More from moai kids (20)

中国最新ニュースアプリ事情
中国最新ニュースアプリ事情中国最新ニュースアプリ事情
中国最新ニュースアプリ事情
 
FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係
 
Programming Hive Reading #4
Programming Hive Reading #4Programming Hive Reading #4
Programming Hive Reading #4
 
Programming Hive Reading #3
Programming Hive Reading #3Programming Hive Reading #3
Programming Hive Reading #3
 
"Programming Hive" Reading #1
"Programming Hive" Reading #1"Programming Hive" Reading #1
"Programming Hive" Reading #1
 
Casual Compression on MongoDB
Casual Compression on MongoDBCasual Compression on MongoDB
Casual Compression on MongoDB
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
Hadoop Conference Japan 2011 Fallに行ってきました
Hadoop Conference Japan 2011 Fallに行ってきましたHadoop Conference Japan 2011 Fallに行ってきました
Hadoop Conference Japan 2011 Fallに行ってきました
 
HBase本輪読会資料(11章)
HBase本輪読会資料(11章)HBase本輪読会資料(11章)
HBase本輪読会資料(11章)
 
snappyについて
snappyについてsnappyについて
snappyについて
 
第四回月次セミナー(公開版)
第四回月次セミナー(公開版)第四回月次セミナー(公開版)
第四回月次セミナー(公開版)
 
第三回月次セミナー(公開版)
第三回月次セミナー(公開版)第三回月次セミナー(公開版)
第三回月次セミナー(公開版)
 
Pythonで自然言語処理
Pythonで自然言語処理Pythonで自然言語処理
Pythonで自然言語処理
 
HandlerSocket plugin Client for Javaとそれを用いたベンチマーク
HandlerSocket plugin Client for Javaとそれを用いたベンチマークHandlerSocket plugin Client for Javaとそれを用いたベンチマーク
HandlerSocket plugin Client for Javaとそれを用いたベンチマーク
 
Yammer試用レポート(公開版)
Yammer試用レポート(公開版)Yammer試用レポート(公開版)
Yammer試用レポート(公開版)
 
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
 
中国と私(仮題)
中国と私(仮題)中国と私(仮題)
中国と私(仮題)
 
不自然言語処理コンテストLT資料
不自然言語処理コンテストLT資料不自然言語処理コンテストLT資料
不自然言語処理コンテストLT資料
 
n-gramコーパスを用いた類義語自動獲得手法について
n-gramコーパスを用いた類義語自動獲得手法についてn-gramコーパスを用いた類義語自動獲得手法について
n-gramコーパスを用いた類義語自動獲得手法について
 
Analysis of ‘lang-8’
Analysis of ‘lang-8’Analysis of ‘lang-8’
Analysis of ‘lang-8’
 

Recently uploaded

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 

Recently uploaded (8)

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 

Twitterのsnowflakeについて

  • 2. DSIRNLP #4 / Twitterのsnowflakeについて 今日話す内容 •snowflake •Twitter社がOSSとして提供しているID生成器 •なぜこのようなツールが必要なのか •仕組みについて •etc,etc... 2
  • 3. DSIRNLP #4 / Twitterのsnowflakeについて ID生成は結構大事(小並感) •たいていの処理の際にIDの生成は必要になる •例1:クローリングした各Webサイト群それぞ れにIDを割り振る •例2:n-gramで分かち書きをした各ワード群 それぞれにIDを割り振る •etc, etc... 3
  • 4. DSIRNLP #4 / Twitterのsnowflakeについて ID生成の性能も結構大事 •例:1つのID生成に1msかかるとした場合、ID生 成処理にどれくらい時間がかかる? •Webサイト10億ページ the number of individual web pages out there is growing by several billion pages per day. (at 2008. via http://googleblog.blogspot.jp/2008/07/we-knew-web-was-big.html) →約11日 •Webサイト240万ページ 日本語wikipediaの総項目数. via http://ja.wikipedia.org/wiki/Wikipedia: %E5%85%A8%E8%A8%80%E8%AA%9E%E7%89%88%E3%81%AE %E7%B5%B1%E8%A8%88 →約40分 4
  • 5. DSIRNLP #4 / Twitterのsnowflakeについて どんな風にIDを生成する? •数値のカウントアップ •各RDBMSの number increment 機能を使って •例:Oracle の sequence •例:MySQL のauto increment •Pros : 実装が簡単 •Cons : ID生成処理が1台のRDBMSに集中し 分散できない。スケールしない。 5
  • 6. DSIRNLP #4 / Twitterのsnowflakeについて どんな風にIDを生成する? •数値のカウントアップ •順序の保証、一意性の保証を何かしらの手段で 行う必要がある。 •ナイーブには「IDを発行する人は1人だけ」 という形で保証。 •仕組み上、処理性能がスケールしにくい 6
  • 7. DSIRNLP #4 / Twitterのsnowflakeについて どんな風にIDを生成する? •RFC 4122 “A Universally Unique IDentifier(UUID)” •http://www.ietf.org/rfc/rfc4122.txt • “UUIDは、分散システム上でどこかが統制を取らずとも、一意に特定可 能な識別子の作成を目的としており...” (wikipedia) •128bitのデータでIDを表現。 例:550e8400-e29b-41d4-a716-446655440000 7
  • 8. DSIRNLP #4 / Twitterのsnowflakeについて どんな風にIDを生成する? •RFC 4122 “A Universally Unique IDentifier(UUID)” 8 ver. description 1 The time-based version specified in this document. 2 DCE Security version, with embedded POSIX UIDs. 3 The name-based version specified in this document that uses MD5 hashing. 4 The randomly or pseudo-randomly generated version specified in this document. 5 The name-based version specified in this document that uses SHA-1 hashing.
  • 9. DSIRNLP #4 / Twitterのsnowflakeについて どんな風にIDを生成する? •RFC 4122 “A Universally Unique IDentifier(UUID)” •version 1 (time-based) 9
  • 10. DSIRNLP #4 / Twitterのsnowflakeについて どんな風にIDを生成する? •RFC 4122 “A Universally Unique IDentifier(UUID)” •Pros : 複数のマシンで並列動作させても一意な IDを生成させる事ができる。 •Cons : しかし128bitはIDのサイズとしては大きい気 がする... 10
  • 11. DSIRNLP #4 / Twitterのsnowflakeについて どんな風にIDを生成する? •ID生成器に求められるもの •並列に一意なIDの生成が行える。 •できる限り小さいサイズでIDの生成が行える。 11
  • 12. DSIRNLP #4 / Twitterのsnowflakeについて snowflake 12
  • 13. DSIRNLP #4 / Twitterのsnowflakeについて snowflake • •TwitterがOSSとして公開しているID生成器 https://github.com/twitter/snowflake/ •Time-basedなID(timestampを基に生成) •64bitでIDを表現 •複数台のマシンを用いて並列に一意なIDの生成 が行える 13
  • 14. DSIRNLP #4 / Twitterのsnowflakeについて snowflake 14
  • 15. DSIRNLP #4 / Twitterのsnowflakeについて 参考:New Tweets per second record, and how! 15 •https://blog.twitter.com/2013/new-tweets-per- second-record-and-how
  • 16. DSIRNLP #4 / Twitterのsnowflakeについて 参考:New Tweets per second record, and how! 16 •https://blog.twitter.com/2013/new-tweets-per- second-record-and-how
  • 17. DSIRNLP #4 / Twitterのsnowflakeについて snowflake •64bitのlong値でIDを表現 (※先頭1bitは0) •3つの要素で構成 •timestamp (41 bit) : 現在のunixtime(ms)から、ある時点のunixtimeを引いた値 •machine id (10 bit): 生成器に割り当てられたID。datacenter id + worker id。 •sequence (12 bit): 生成器ごとに採番するsequence番号 17
  • 18. DSIRNLP #4 / Twitterのsnowflakeについて snowflake •Q: timestampは41 bitで大丈夫? •A: WebサービスのIDとして用いる分には大丈夫 では •snowflakeでは 「現在のunixtime - 採番開始時のunixtime」 をtimestamp値として使用 •timestampがオーバーフローするのは、採番 開始からおおよそ69年後 18
  • 19. DSIRNLP #4 / Twitterのsnowflakeについて snowflake 19 •ID生成部のソース https://github.com/twitter/snowflake/blob/master/src/main/scala/com/twitter/service/snowflake/IdWorker.scala
  • 20. DSIRNLP #4 / Twitterのsnowflakeについて •ID生成部のソース https://github.com/twitter/snowflake/blob/master/src/main/scala/com/twitter/service/snowflake/IdWorker.scala snowflake 20 現在のunixtimeを取得
  • 21. DSIRNLP #4 / Twitterのsnowflakeについて snowflake 21 1回前に取得したunixtimeより今の unixtimeが古い場合はthrow exception (OSの時刻ズレが起きた可能性) •ID生成部のソース https://github.com/twitter/snowflake/blob/master/src/main/scala/com/twitter/service/snowflake/IdWorker.scala
  • 22. DSIRNLP #4 / Twitterのsnowflakeについて snowflake 22 sequence番号のカウントアップ 同じtimestamp値の中で12bit分 (0-4095)まで採番できる •ID生成部のソース https://github.com/twitter/snowflake/blob/master/src/main/scala/com/twitter/service/snowflake/IdWorker.scala
  • 23. DSIRNLP #4 / Twitterのsnowflakeについて •ID生成部のソース https://github.com/twitter/snowflake/blob/master/src/main/scala/com/twitter/service/snowflake/IdWorker.scala snowflake 23 万が一sequence番号が枯渇した場合 は、unixtimeが新しくなる( 1ms経過 する)まで待つ
  • 24. DSIRNLP #4 / Twitterのsnowflakeについて snowflake 24 今回使用したunixtimeを保存 •ID生成部のソース https://github.com/twitter/snowflake/blob/master/src/main/scala/com/twitter/service/snowflake/IdWorker.scala
  • 25. DSIRNLP #4 / Twitterのsnowflakeについて snowflake 25 ID生成 (timestamp << 22 + datacenterId << 17 + workerId << 12 + sequence) •ID生成部のソース https://github.com/twitter/snowflake/blob/master/src/main/scala/com/twitter/service/snowflake/IdWorker.scala
  • 26. DSIRNLP #4 / Twitterのsnowflakeについて •ID生成部のソース https://github.com/twitter/snowflake/blob/master/src/main/scala/com/twitter/service/snowflake/IdWorker.scala snowflake 26 twepoch が採番開始時のunixtime 1288834974657 = 2010/11/04 10:42:54
  • 27. DSIRNLP #4 / Twitterのsnowflakeについて snowflake •利点 •IDソート ≒ 時系列ソート ID情報だけでID生成時のtimestamp値に基づい た時系列ソートが可能 •ID値からID生成時のtimestamp値が復元可能 27 timestamp = (id >> 22) + twepoch
  • 28. DSIRNLP #4 / Twitterのsnowflakeについて snowflake 28 (369070365764354048 >> 22 + 1288834974657) = 1376828206851 (2013/8/18 21:16:46)
  • 29. DSIRNLP #4 / Twitterのsnowflakeについて snowflake •利点 •整数列圧縮を用いた効率的な情報圧縮が容易 (Variable Byte Code , PFor Delta , Simple9, etc...) 29
  • 30. DSIRNLP #4 / Twitterのsnowflakeについて snowflake •弱点 •OSの時刻ズレに弱い •運用面で工夫が多少必要 30 https://github.com/twitter/snowflake/#system-clock-dependency
  • 31. DSIRNLP #4 / Twitterのsnowflakeについて snowflake •弱点? •ID採番時にsnowflakeサーバーにthrift 経由で接 続するようになっている。 •小∼中規模で運用するには若干重厚な気が 31
  • 32. DSIRNLP #4 / Twitterのsnowflakeについて shakeflake(仮称) •snowflakeを模して社内で作成した軽量なID生成器 •redis 2.6 + lua scripting版 •JavaVM版 32
  • 33. DSIRNLP #4 / Twitterのsnowflakeについて shakeflake(仮称) •参考: http://developer.smartnews.be/blog/2013/07/31/ shakeflake-is-a-tool-for-generating-unique-id- numbers/ 33
  • 34. DSIRNLP #4 / Twitterのsnowflakeについて shakeflake(仮称) •参考: http://developer.smartnews.be/blog/2013/07/31/ shakeflake-is-a-tool-for-generating-unique-id- numbers/ 34
  • 36. DSIRNLP #4 / Twitterのsnowflakeについて •Twitter社がOSSとして提供しているID生成器 ”snowflake”のご紹介 •こういうツールが必要とされる背景 •仕組み •etc, etc... •何かのご参考になれば幸いです。 まとめ 36
  • 37. Thanks for your listening :)