Est-ce Oracle ou MySQL ou quelque chose qu'ils ont eux-mêmes construit?
n système de stockage distribué pour les données structurées
Bigtable est un système de stockage distribué (construit par Google) pour la gestion de données structurées, conçu pour s'adapter à une très grande taille: des pétaoctets de données sur des milliers de serveurs spécialisés.
De nombreux projets chez Google stockent des données dans Bigtable, notamment l'indexation Web, Google Earth et Google Finance. Ces applications imposent à Bigtable des exigences très différentes, à la fois en termes de taille des données (des URL aux pages Web, en passant par les images satellite) et en termes de temps de latence (du traitement en bloc dorsal à la fourniture de données en temps réel).
Malgré ces exigences variées, Bigtable a réussi à fournir une solution flexible et performante à tous ces produits Google.
Quelques fonctionnalités
Architecture
BigTable n'est pas une base de données relationnelle. Il ne prend pas en charge les jointures ni les requêtes de type SQL riche. Chaque tableau est une carte fragmentée multidimensionnelle. Les tableaux sont constitués de lignes et de colonnes et chaque cellule est horodatée. Il peut y avoir plusieurs versions d'une cellule avec différents horodatages. L'horodatage permet des opérations telles que "sélectionner les n versions de cette page Web" ou "supprimer les cellules antérieures à une date/heure spécifique".
Afin de gérer les énormes tables, Bigtable divise les tables aux limites des lignes et les enregistre sur des tablettes. Une tablette fait environ 200 Mo et chaque machine économise environ 100 tablettes. Cette configuration permet aux tablettes d’une seule table d’être réparties sur plusieurs serveurs. Cela permet également un équilibrage de charge à grain fin. Si une table reçoit de nombreuses requêtes, elle peut supprimer d'autres tablettes ou déplacer la table sur un autre ordinateur moins occupé. En outre, si une machine tombe en panne, une tablette peut être répartie sur de nombreux autres serveurs, de sorte que l'impact sur les performances d'une machine donnée est minime.
Les tables sont stockées sous forme de tables SST immuables et d'une queue de journaux (un journal par machine). Lorsqu'une machine manque de mémoire système, certaines tablettes sont compressées à l'aide des techniques de compression propriétaires de Google (BMDiff et Zippy). Les compactions mineures ne concernent que quelques tablettes, tandis que les compactions majeures concernent l’ensemble du système de tables et permettent de récupérer de l’espace sur le disque dur.
Les emplacements des comprimés Bigtable sont stockés dans des cellules. La recherche de toute tablette particulière est gérée par un système à trois niveaux. Les clients obtiennent un point sur une table META0, dont il n’existe qu’un seul. La table META0 garde la trace de nombreuses tablettes META1 contenant les emplacements des tablettes recherchées. META0 et META1 utilisent beaucoup la prélecture et la mise en cache pour minimiser les goulots d'étranglement dans le système.
Mise en oeuvre
BigTable est construit sur Système de fichiers Google (GFS), utilisé comme magasin de sauvegarde pour les fichiers journaux et de données. GFS fournit un stockage fiable pour SSTables, un format de fichier propriétaire de Google utilisé pour conserver les données de table.
Un autre service que BigTable utilise beaucoup est Chubby, un service de verrouillage distribué hautement disponible et fiable. Chubby permet aux clients de verrouiller, en l'associant éventuellement à des métadonnées, qu'il peut renouveler en envoyant des messages Keep Alive à Chubby. Les verrous sont stockés dans une structure de nommage hiérarchique semblable à un système de fichiers.
Il y a trois principaux types de serveurs d’intérêt dans le système Bigtable:
Exemple tiré du document de recherche de Google:
Une tranche d'un exemple de table qui stocke des pages Web. Le nom de la ligne est un RL inversée. La famille de la colonne de contenu contient le contenu de la page, et la famille de la colonne d'ancrage contient le texte de toutes les ancres référençant la page. La page d'accueil de CNN étant référencée par les pages d'accueil de Sports Illustrated et de MY-look, la ligne contient des colonnes nommées
anchor:cnnsi.com
etanchor:my.look.ca
. Chaque cellule d'ancrage a ne version; la colonne de contenu contient trois versions, aux horodatagest3
,t5
ett6
.
API
Les opérations typiques de BigTable sont la création et la suppression de tables et de familles de colonnes, l'écriture de données et la suppression de colonnes d'une ligne. BigTable fournit ces fonctions aux développeurs d'applications dans une API. Les transactions sont prises en charge au niveau de la ligne, mais pas sur plusieurs clés de ligne.
Voici le lien vers le PDF du document de recherche .
Et ici vous pouvez trouver une vidéo montrant Jeff Dean de Google dans une conférence à l'Université de Washington , traitant du système de stockage de contenu Bigtable utilisé dans le backend de Google.
C'est quelque chose qu'ils ont eux-mêmes construit - ça s'appelle Bigtable.
http://en.wikipedia.org/wiki/BigTable
Il y a un article de Google sur la base de données:
Spanner est le système de gestion de base de données relationnelle (SGBDR) distribué par Google dans le monde entier, succédant à BigTable . Google affirme qu'il ne s'agit pas d'un système relationnel pur, car chaque table doit avoir une clé primaire.
Ici est le lien du papier.
Spanner est la base de données évolutive, multi-version, distribuée dans le monde entier et répliquée de manière synchrone de Google. Il s'agit du premier système à distribuer des données à l'échelle mondiale et à prendre en charge des transactions distribuées cohérentes à l'extérieur. Ce document décrit la structure de Spanner, son ensemble de fonctionnalités, les raisons qui sous-tendent diverses décisions de conception et une nouvelle API de temps qui expose les incertitudes de l’horloge. Cette API et son implémentation sont essentielles pour la prise en charge de la cohérence externe et de diverses fonctionnalités puissantes: lectures non bloquantes dans le passé, transactions en lecture seule sans verrouillage et modifications du schéma atomique dans l'ensemble de Spanner.
Une autre base de données inventée par Google est Megastore . Voici le résumé:
Megastore est un système de stockage développé pour répondre aux exigences des services en ligne interactifs actuels. Megastore associe de manière innovante l'évolutivité d'un magasin de données NoSQL à la commodité d'un SGBDR traditionnel et offre à la fois des garanties de cohérence élevées et une haute disponibilité. Nous fournissons une sémantique ACID entièrement sérialisable au sein de partitions de données à grain fin. Ce partitionnement nous permet de répliquer de manière synchrone chaque écriture sur un réseau étendu avec une latence raisonnable et de prendre en charge un basculement transparent entre centres de données. Cet article décrit la sémantique et l'algorithme de réplication de Megastore. Il décrit également notre expérience en matière de prise en charge d'un large éventail de services de production Google construits avec Megastore.
Comme d'autres l'ont mentionné, Google utilise une solution locale appelée BigTable et a publié quelques documents décrivant cette réalité dans le monde réel.
Les gens d'Apache ont une implémentation des idées présentées dans ces articles appelés HBase . HBase fait partie du plus grand projet Hadoop qui, selon leur site "est une plate-forme logicielle qui permet d’écrire et d’exécuter facilement des applications qui traitent de grandes quantités de données." Certains des repères sont assez impressionnants. Leur site est à http://hadoop.Apache.org .
Bien que Google utilise BigTable pour toutes ses applications principales, ils tilisent également MySQL pour d’autres applications (peut-être mineures).
Et il est peut-être aussi utile de savoir que BigTable n’est pas une base de données relationnelle (comme MySQL), mais une énorme (distribuée) table de hachage qui présente des caractéristiques très différentes. Vous pouvez jouer avec (une version limitée) de BigTable vous-même sur la plate-forme Google AppEngine .
Outre Hadoop mentionné ci-dessus, de nombreuses autres implémentations tentent de résoudre les mêmes problèmes que BigTable (évolutivité, disponibilité). J'ai vu hier un billet de blog de Nice énumérant la plupart d'entre eux ici .
Google utilise principalement Bigtable.
Bigtable est un système de stockage distribué pour la gestion de données structurées, conçu pour s'adapter à une très grande taille.
Pour plus d'informations, téléchargez le document de ici .
Google utilise également des bases de données Oracle et MySQL pour certaines de leurs applications.
Toute information supplémentaire que vous pouvez ajouter est hautement appréciée.