Snowflake-ID
Snowflake-IDs sind eine Form von eindeutigen Kennungen, die in der verteilten Datenverarbeitung verwendet werden. Das Format wurde von Twitter (jetzt X.com) erstellt und wird für die IDs von Tweets verwendet.[1]
Es wird allgemein angenommen, dass jede Snowflake-ID einen einzigartigen Wert hat, ähnlich wie die Form einer Schneeflocke einzigartig ist. Das Format wurde auch von anderen Unternehmen übernommen, darunter Discord und Instagram. Das soziale Netzwerk Mastodon verwendet eine modifizierte Version.
Format
BearbeitenSnowflake-IDs sind 64 Bit lange IDs. Nur 63 werden verwendet, um in ein vorzeichenbehaftetes Integer zu passen.
- Die ersten 41 Bits sind ein Zeitstempel, der Millisekunden seit der gewählten Referenzzeit darstellt.
- Die nächsten 10 Bits repräsentieren eine Maschinen-ID, um Kollisionen zu verhindern.
- 12 weitere Bits repräsentieren eine sequentielle Nummer pro Maschine, um die Erstellung mehrerer Snowflake IDs in derselben Millisekunde zu ermöglichen.
Die resultierende Zahl wird in der Regel dezimal dargestellt.[2]
Snowflake-IDs sind durch den enthaltenen Zeitstempel nach Zeit sortierbar.[2] Außerdem kann die Zeit, zu der eine Snowflake-ID erstellt wurde, aus der Snowflake-ID berechnet werden. Dies kann verwendet werden, um Snowflake-ID (und ihre zugehörigen Objekte) zu erhalten, die vor oder nach einem bestimmten Datum erstellt wurden.[3]
Offsets | Oktett | 0 | 1 | 2 | 3 | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Oktett | Bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | |
0 | 0 | 0 | Zeitstempel - erste 31 Bits | |||||||||||||||||||||||||||||||
4 | 32 | Zeitstempel - letzte 10 Bits | Maschinen-ID | Maschinensequenznummer |
Beispiel
BearbeitenEin Tweet, der im Juni 2022 von Wikipedia veröffentlicht wurde[4] hat die Snowflake-ID 1541815603606036480
.
Die Zahl kann in Binär umgewandelt werden als 00 0001 0101 0110 0101 1010 0001 0001 1111 0110 0010 00|01 0111 1010|0000 0000 0000
, wobei die senkrechten Striche die drei Teile der ID kennzeichnen.
- Die ersten 41 (+ 1 oberstes Nullbit) Bits werden dezimal zu
367597485448
. Addieren Sie diesen Wert zur X Epoche von1288834974657
(in Unixzeit Millisekunden),[5] ergibt sich die Unixzeit des Tweets1656432460.105
: 28. Juni 2022 16:07:40.105 UTC. - Die mittleren 10 Bits
01 0111 1010
sind die Maschinen-ID. - Die letzten 12 Bits dekodieren auf 0, was bedeutet, dass dieser Tweet der erste Tweet ist, der von der Maschine in der angegebenen Millisekunde verarbeitet wurde.
Verwendung
BearbeitenDas Format wurde erstmals im Juni 2010 von X/Twitter angekündigt.[1] Aufgrund von Implementierungsproblemen warteten sie jedoch bis später im Jahr, um das Update auszurollen.[6]
- X verwendet Snowflake-IDs für Beiträge, Direktnachrichten, Benutzer, Listen und alle anderen Objekte, die über die API verfügbar sind.[7]
- Discord verwendet ebenfalls Snowflakes, wobei ihre Epoche auf die erste Sekunde des Jahres 2015 gesetzt ist.[3]
- Instagram verwendet eine modifizierte Version des Formats, mit 41 Bits für einen Zeitstempel, 13 Bits für eine Shard-ID und 10 Bits für eine Sequenznummer.[8]
- Mastodons modifiziertes Format hat 48 Bits für einen Millisekunden-Zeitstempel, da es die UNIX-Epoche verwendet. Die verbleibenden 16 Bits sind für Sequenzdaten.[9]
Siehe auch
BearbeitenWeblinks
BearbeitenReferenzen
Bearbeiten- ↑ a b Ryan King: Announcing Snowflake. In: blog.twitter.com. Twitter, 1. Juni 2010, abgerufen am 14. Juli 2024.
- ↑ a b twitter-archive/snowflake. In: GitHub. Abgerufen am 14. Juli 2024.
- ↑ a b API Reference. Discord, abgerufen am 14. Juli 2024 (englisch).
- ↑ Wikipedia: 53 years ago today, members of the LGBTQI+ community began protesting in New York City in response to a police raid of the Stonewall Inn, a popular gay bar. The riots were a transformative event in the 20th century fight for LGBTQI+ rights in the US. (1/2). 28. Juni 2022, abgerufen am 14. Juli 2024 (englisch).
- ↑ 2019-08-03: TweetedAt: Finding Tweet Timestamps for Pre and Post Snowflake Tweet IDs. 3. August 2019, abgerufen am 14. Juli 2024.
- ↑ M. G. Siegler: Tweet IDs About To Get Jumbled In A Blizzard As Snowflake Is Set To Roll Live. In: TechCrunch. 12. August 2010, abgerufen am 14. Juli 2024.
- ↑ Twitter IDs. Twitter, abgerufen am 14. Juli 2024 (englisch).
- ↑ Sharding & IDs at Instagram. 2. Mai 2016, abgerufen am 14. Juli 2024 (englisch).
- ↑ mastodon/mastodon. Mastodon, 11. November 2022, abgerufen am 14. Juli 2024 (englisch).