Mi experiencia con Android en una entrevista a Google

Cuando estuve en el Google IO, el evento de Google en San Francisco el pasado mes; me hicieron una entrevista para Google Developers donde estuve contando mi experiencia con Android. Lo prometido es deuda, y ya han subido el vídeo.

Cómo hacer contadores globales eficientes

Leyendo los hilos de discusión del grupo de Google App Engine me he encontrado con una manera muy curiosa de contar el número de usuarios, o entradas o cualquier tipo de objeto; de una aplicación que depende de una base de datos. Yo estaba acostumbrado a hacer un count(), pero claro, eso es lento. Asi que otra opción era guardar el número de objetos en la base de datos.

La gente de Google tiene una solución más ingeniosa. El problema de tener un sólo contador global es que se puede convertir en un cuello de botella porque muchos usuarios estarán navegando por tu web (es lo que deseamos, ¿no?). Asi que la solución que proponen es tener 20 contadores parciales (o 5 o 50) y cuando añadamos un nuevo objeto, sumarle +1 aleatoriamente a uno. Y luego sumamos todas las cuentas parciales cuando queramos hallar el número total. Y redondeando un poco más la solución, podemos cachear los resultados parciales y así nos ahorramos esas consultas.

La solución en Python está aquí a la espera de que Google añada los vídeos del evento de Google IO en su canal de YouTube.