Les coulisses techniques de Google BigTables, les bases de données de l'extrême

Pour gérer ses données, Google a développé une base de données répondant au mieux à ses besoins et contraintes hors du commun. Cette base, c'est BigTable. Il s'agit d'un serveur de données semi-structurées couplé à Dremel, un outil de requêtage adapté aux très gros volumes de données développé par Google.

BigTable : une vue tridimensionnelle de la donnée

Le type de stockage créé par Google est basé sur la notion de cellule (que l'on peut retrouver par sa colonne et sa ligne). En outre, BigTable intègre la notion de temps (timestamp). Les différentes valeurs prises par une cellule dans le temps sont ainsi conservées dans la base de données. C'est ce qui faire dire aux ingénieurs du groupe qu'il s'agit d'une vue tridimensionnelle de la donnée. Les lignes sont triées de manière lexicographique, ce qui correspond généralement bien aux besoins des applications Google. Les tables de données sont "éclatées" en "tablets", c'est-à-dire en groupes de lignes qui sont stockées sur une même machine. Ces "tablets" peuvent elles-mêmes être divisés en deux lorsque leur volume s'accroit au-delà d'un certain seuil. 

architecture du google file system.
Architecture du Google File System. © Jeff Dean / Google

De très nombreux services Google reposent sur BigTable

BigTable est exploité pour des centaines de projets internes de Google. Les crawlers et la chaîne d'indexation du moteur de recherche l'exploitent, mais aussi Google Maps, Google Earth et Street View, mais aussi le système de gestion de l'historique de recherche de chaque utilisateur, Google Print, la plateforme de blogging Blogger, et même Google+.

Jusqu'à 30 millions d'opérations par seconde sur un seul cluster

Le design initial de l'architecture Google ne comprenait qu'un seul et unique gigantesque cluster BigTable par data center, mais aujourd'hui plus de 500 clusters sont mis en œuvre dans les différents centre de données Google. Le plus gros d'entre eux stocke plusieurs centaines de Po de données, effectue 30 millions d'opérations par seconde pour un débit de données qui atteint plus de 100 Go/s.

Si BigTable garantit la fiabilité de gros volumes de données et permet de fortes performances en entrées/sorties, Google n'a pas implémenté de contrôle d'accès concurrent sur une même ligne de données. Cela permet d'optimiser les performances, notamment pour délivrer aux utilisateurs du moteur de recherche leur liste de résultats. Mais d'autres applications Google ont besoin d'être sûres que la donnée retournée par BigTable est bien à jour. C'est ce que Spanner va permettre de vérifier. Il s'agit d'une base de données de type NewSQL. Celle-ci utilise le protocole Paxos pour assurer à l'utilisateur qu'il dispose bien de la donnée la plus récente, même si celle-ci est stockée dans de multiples data centers.

exemple d'architecture d'indexation reposant sur bigtable.
Exemple d'architecture d'indexation reposant sur BigTable. © Hbase in Action,  Dimiduk , et.al