Los copos de nieve tienen 64 bits en binario (solo se utilizan 63 para que quepan en un entero con signo ). Los primeros 41 bits son una marca de tiempo que representa los milisegundos transcurridos desde la época elegida . Los siguientes 10 bits representan una identificación de máquina, lo que evita conflictos. Doce bits más representan un número de secuencia por máquina, para permitir la creación de múltiples copos de nieve en el mismo milisegundo. El número final generalmente se serializa en decimal. [2]
Los copos de nieve se pueden ordenar por fecha, ya que se basan en el momento en que se crearon. [2] Además, el momento en que se creó un copo de nieve se puede calcular a partir del copo de nieve. Esto se puede utilizar para obtener copos de nieve (y sus objetos asociados) que se crearon antes o después de una fecha determinada. [3]
Un tuit producido por @Wikipedia en junio de 2022 [4] tiene el ID de copo de nieve 1541815603606036480. El número se puede convertir a binario como 00 0001 0101 0110 0101 1010 0001 0001 1111 0110 0010 00|01 0111 1010|0000 0000 0000 , con símbolos de barra vertical que indican las tres partes del ID.
Los primeros 41 bits (+ 1 bit cero superior) se convierten a decimal como 367597485448. Agregue el valor a la época X de 1288834974657 (en milisegundos de tiempo Unix ), [5] por lo tanto, el tiempo Unix del tweet es 1656432460.105 : 28 de junio de 2022 16:07:40.105 UTC.
Los 10 bits centrales 01 0111 1010 son el ID de la máquina.
Los últimos 12 bits se decodifican a todos ceros, lo que significa que este tweet es el primer tweet procesado por la máquina en el milisegundo dado.
Uso
El formato fue anunciado por primera vez por X/Twitter en junio de 2010. [1] Debido a desafíos de implementación, esperaron hasta más tarde en el año para implementar la actualización. [6]
X utiliza identificadores de copos de nieve para publicaciones, mensajes directos, usuarios, listas y todos los demás objetos disponibles a través de la API . [7]
Discord también utiliza copos de nieve, con su época establecida en el primer segundo del año 2015. [3]
Instagram utiliza una versión modificada del formato, con 41 bits para una marca de tiempo, 13 bits para un ID de fragmento y 10 bits para un número de secuencia. [8]
El formato modificado de Mastodon tiene 48 bits para una marca de tiempo de nivel de milisegundos, ya que utiliza la época de UNIX . Los 16 bits restantes son para datos de secuencia. [9]
^ ab King, Ryan (1 de junio de 2010). "Anuncio de Snowflake". blog.twitter.com . Twitter . Consultado el 18 de enero de 2021 .
^ ab "twitter-archive/snowflake@b3f6a3c6ca". GitHub . 1 de octubre de 2012 . Consultado el 18 de enero de 2021 .
^ ab "Referencia de API". Portal para desarrolladores de Discord . Discord . Consultado el 18 de enero de 2021 .
^ @Wikipedia (28 de junio de 2022). "Hoy, hace 53 años, miembros de la comunidad LGBTQI+ comenzaron a protestar en la ciudad de Nueva York en respuesta a una redada policial en el Stonewall Inn, un popular bar gay. Los disturbios fueron un evento transformador en la lucha del siglo XX por los derechos LGBTQI+ en los EE. UU. (1/2)" ( Tweet ) – vía Twitter .
^ "2019-08-03: TweetedAt: Cómo encontrar marcas de tiempo de tweets para los ID de tweets anteriores y posteriores a Snowflake". 2019-08-03 .
^ Siegler, MG (12 de octubre de 2010). "Los identificadores de los tuits están a punto de mezclarse en una tormenta de nieve mientras Snowflake se prepara para lanzarse en vivo". TechCrunch . Consultado el 18 de enero de 2021 .
^ "ID de Twitter". Desarrollador de Twitter . Twitter . Consultado el 20 de enero de 2021 .
^ "Sharding & IDs at Instagram". Ingeniería de Instagram . 2 de mayo de 2016 . Consultado el 18 de enero de 2021 .
^ Código fuente mastodon/mastodon, Mastodon, 11 de noviembre de 2022 , consultado el 11 de noviembre de 2022