sábado, 20 de dezembro de 2014

Gangman Style e a base 2

No dia 1 de dezembro de 2014, o YouTube publicou uma notícia curiosa. O vídeo GANGNAM STYLE, do PSY, havia estourado a capacidade de contar visualizações, que utiliza um número inteiro de 32bits.

Para quem ficou curioso sobre o que isso significa, segue uma pequena explicação.
O termo bit é o acrônimo de binary digit (dígito binário). Como o nome já diz, cada dígito só pode assumir dois valores: 0 ou 1.

Um número construído com 2 bits pode assumir 4 valores possíveis:

bináriodecimal
000
011
102
113

Há casos que não usamos números negativos, mas, em sistemas de banco de dados é comum usarmos metade para números negativos e a outra metade para números não negativos. Dessa forma, com 4 bits podemos representar os seguintes números.

bináriodecimal
00-2
01-1
100
111

Seguindo esse raciocínio, um número com 3 bits pode assumir 8 valores. Como cada bit pode assumir 2 valores, então, o total de possibilidades será 2 elevado ao número de bits, no caso, 23 = 8.

No mundo dos bancos de dados, na hora de definir como vamos armazenar os números inteiros, podemos selecionar quantos bits queremos na construção desses números. No produto de banco de dados que eu uso, posso escolher com 8, 16, 32 e 64 bits (o de 8 bits só trabalha com números não negativos).

O Google usava no YouTube, inteiros de 32 bits. Fazendo as contas:

232 = 4.294.967.296

Como metade é usado para números negativos, o número máximo positivo fica:

2.147.483.647 (metade menos 1 por conta do zero)

Pois bem, os desenvolvedores do YouTube imaginaram que um único vídeo jamais ultrapassaria essa contagem.
O vídeo do PSY ultrapassou essa marca, obrigando os desenvolvedores do YouTube fazerem uma mudança no contador de visualizações, de 32 para 64 bits. Com 64 bits temos as seguintes condições:

264 = 18.446.744.073.709.551.616

A metade menos 1 é: 9.223.372.036.854.775.807

Podem acreditar, não veremos esse número estourar de novo.