Buenas
¿Se han preguntado alguna vez cómo es posible que todos los tuits, con los miles de millones que generamos al día, tengan un identificador único?
Hoy les voy a contar una aproximación simple a esto.
Twitter, como todos los grandes sistemas que generan esos volumenes de información, utiliza un sistema para generar los identificadores únicos de cada tweet, que además debe permitir mantener un orden cronológico de cada uno de ellos. Para ello usa un método llamado Snowflake (Copo de nieve) aludiendo a la característica de estos copos que hace a cada uno de ellos único. En realidad como Snowflake es como se conoce este servicio que genera estos identificadores únicos.
Cuando vemos un tuit si nos fijamos en el enlace del mismo podemos ver el identificador, pero en realidad contiene bastante más información, ya saben que esto es muy común en Twitter, que la que apreciamos
Pongo un ejemplo con un tuit de mi cuenta suspendida. De hecho es el último tuit que escribí. Ains.
Les pido que se fijen en la parte subrayada en amarillo arriba en el enlace. Ese es el identificador del tuit. La fecha la he marcado también para “enseñarles” algo.
Los Id´s únicos de cada Tweet los vemos en modo Texto, pero vamos a quedarnos con su valor como número : 1164106327217639425
Ahora vamos a convertir esa cifra decimal en binario, pueden usar cualquier convertidor, Google es su amigo :
1000000100111101111001000100101110010100101111001000000000001
Esta cadena la descomponemos empezando por el final
Los 12 primeros nos indican el orden del tuit : 000000000001 = 1 . El primero
Los 5 siguientes corresponden al servidor donde se generó
11001 = Servidor 25
Los 5 restantes son el Data Center donde se generó
01011 = Data Center Nº 11
Es decir este tuit es el primero del servidor 25 del Data Center 11
Pero y el resto de la cadena, ¿Qué significa?. Pues es la fecha y hora en formato Epoch/Unix del mismo. Este formato nos permite datar de forma numérica con precisión de milisegundos. ¿Cómo?
Pues si seguimos mi ejemplo y retiramos las cadenas que ya hemos interpretado nos queda
100000010011110111100100010010111001010
Lo convertimos en decimal y nos dará el valor
277544576458
A ese valor le debemos sumar la cifra de control que utiliza Twitter en Snowflake
1288834974657
277544576458 + 1288834974657 = 1566379551115
Si convertimos esa cifra al formato Epoch el resultado es
GMT: Wednesday, 21 August 2019 9:25:51.115
Es decir, Miércoles, 21 de agosto de 2019 a las 11:25:51.115 GMT+02:00 . A las 11:25:51 con 115 milisegundos
¿Se acuerdan de la fecha subrayada de la imagen?
Pues bien, ya han visto como Twitter es capaz de generar Id´s a nuestros tweets, y qué información lleva un simple enlace de un tweet.
¿Aplicaciones prácticas?. Pues… Bueno, eso lo dejaremos para otro día, pero un ejemplo claro es comprobar la autenticidad de un tweet al que se le ha hecho una captura. Es fácil Photosopear un tweet, pero su Id?. Si siguen este método pueden ver si es falso, y cuando realmente se creo. Si se hizo, claro.
Yo como siempre lo único que intento es divulgar, entretener y explicar cosas enormemente complejas de una manera sencilla.