En 2004, les produits de Google faisaient tous face au même problème : stocker d'énormes quantités de données structurées, depuis les explorations du Web jusqu'aux images satellite et aux flux financiers. Construire un système de stockage sur mesure pour chaque produit coûtait cher, et les bases de données du commerce ne pouvaient pas atteindre l'échelle requise ; l'entreprise a donc conçu un système partagé unique.
Bigtable présente un modèle simple : une table d'association creuse et triée, indexée par ligne, colonne et horodatage, dont les valeurs sont stockées sous forme d'octets non interprétés. Les applications décident de leur propre disposition, contrôlent la localité des données et choisissent même si les données sont servies depuis la mémoire ou le disque, tandis que la plateforme gère le partitionnement, la réplication et la reprise après défaillance sur des milliers de serveurs standards.
Au moment de l'article de 2006, plus de soixante produits Google, dont Google Analytics, Google Finance, Personalized Search et Google Earth, utilisaient Bigtable. Les grappes allaient de quelques serveurs à des milliers, stockant jusqu'à plusieurs centaines de téraoctets chacune.
Un magasin partagé unique ; chaque produit adapte son schéma
Une seule plateforme répartit le coût d'ingénierie et d'exploitation sur de nombreux produits
Les applications contrôlent la disposition, si bien que le modèle reste simple malgré la diversité des usages
Des serveurs standards plus un partitionnement automatique permettent de monter en charge jusqu'aux pétaoctets
Un système partagé signifie qu'une seule équipe peut le durcir pour tout le monde
Avant de faire monter en charge un produit, construisez une fois le socle partagé : un système que de nombreuses équipes adaptent vaut mieux que de nombreux systèmes sur mesure que personne ne peut améliorer ensemble.
Suites
Bigtable est resté l'épine dorsale des propres services de Google et est ensuite devenu une offre de Google Cloud, « le pionnier du NoSQL » : un magasin clé-valeur et à colonnes larges géré, destiné aux charges de personnalisation, de clickstream et d'IoT sensibles à la latence, avec des API compatibles HBase et Cassandra. Ses idées ont aussi inspiré des clones open source tels que HBase.
VÉRIFIEZ LES SOURCES
Les sources
- Bigtable: A Distributed Storage System for Structured Data USENIX (OSDI '06) · usenix.org
- Bigtable: fast, flexible NoSQL Google Cloud · cloud.google.com