Google ha decidido mover sus servicios de anuncios de MySQL, un popular manejador de bases de datos, a uno nuevo, creado por ellos mismos, llamado F1. El nuevo sistema combina lo mejor de NoSQL y SQL. De acuerdo con Google Research, muchos de sus servicios que son críticos al negocio de anuncios de Google (parte importante de sus ingresos) habían sido trabajados en MySQL históricamente, pero recientemente Google migró muchos de ellos a su nueva base de datos relacional, desarrollada por la empresa misma. El equipo de trabajo dice que F1 da los beneficios de los sistemas NoSQL (escalabilidad, tolerancia a errores y costo/beneficio, entre otros), con la facilidad de uso y soporte transaccional de una base de datos relacional.
Google decidió desarrollar F1 para tener un manejador de bases de datos que tenga peticiones SQL en paralelo, y que pueda además, hacer transacciones en un sistema de almacenamiento distribuido que pueda escalarse en hardware estándar. Todo esto no es poca cosa. El almacenamiento en Google soporta replicación entre los centros de datos mientras que mantiene consistentes las transacciones.
F1 se codesarrolló con un nuevo sistema de almacenamiento de bajo nivel llamado Spanner. Esto está descrito como un descendiente de BigTable (del mismo Google), el cual es un sucesor de Megastore. Este último es un manejador de registros indexados de transacciones construido por Google por encima de su almacenamiento de datos BigTable en NoSQL. Spanner ofrece entonces replicación sincrónica entre centros de datos (con Paxos, el algoritmo para trabajar con tolerancia a fallas en los sistemas distribuidos). Quizás el único problema es que las lecturas al sistema son mucho más lentas que en MySQL, las cuales toman de 5 a 10 milisegundos. El mecanismo de consultas SQL paralelo fue desarrollado desde cero para esconder la latencia de las llamadas remotas a procedimientos y permite que exista ejecución en paralelo y por batch.
Curiosamente, en el artículo que se presentó en el SIGMOD 2012 respecto a esta nueva base de datos, indica que nunca usa las uniones transversales o relacionales, pues los objetos son cargados explícitamente, lo que pone a dudar si estamos hablando estrictamente de una base de datos relacional.
Como sea, es evidente que Google trabaja con volúmenes de datos enormes, por lo que necesita estar siempre actualizando sus manejadores de datos y los límites impuestos a los ya utilizados comúnmente tienen sus inconvenientes ante almacenamientos tan grandes como los que maneja la empresa en cuestión.
Referencias: Google Big Query Service y F1 – The Fault-Tolerant Distributed RDBMS Supporting Google’s Ad Business (pdf)