web-dev-qa-db-fra.com

Quelle base de données utilise Google?

Est-ce Oracle ou MySQL ou quelque chose qu'ils ont eux-mêmes construit?

362
solrevdev

Grande table

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

  • sGBD rapide et extrêmement volumineux
  • une carte triée et distribuée, multidimensionnelle et distribuée, clairsemée, partageant les caractéristiques des bases de données orientées lignes et colonnes.
  • conçu pour évoluer dans la gamme des pétaoctets
  • cela fonctionne sur des centaines ou des milliers de machines
  • il est facile d'ajouter plus de machines au système et de commencer automatiquement à tirer parti de ces ressources sans aucune reconfiguration
  • chaque table a plusieurs dimensions (l'une d'elles est un champ pour le temps, permettant la gestion des versions)
  • les tables sont optimisées pour GFS (Google File System) en étant divisées en plusieurs tablettes - des segments de la table divisés le long d'une ligne choisie de manière à ce que la tablette ait une taille d'environ 200 mégaoctets.

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:

  1. Serveurs maîtres: attribuez des tablettes à des serveurs de tablettes, enregistrez l'emplacement des tablettes et redistribuez les tâches en fonction des besoins.
  2. Serveurs de tablettes: gérez les demandes en lecture/écriture de tablettes et de tablettes divisées lorsqu'elles dépassent les limites de taille (généralement entre 100 et 200 Mo). Si un serveur de tablette tombe en panne, 100 serveurs de tablette captent chacun 1 nouvelle tablette et le système est restauré.
  3. Serveurs de verrouillage: instances du service de verrouillage distribué Chubby. De nombreuses actions dans BigTable nécessitent l’acquisition de verrous, notamment l’ouverture de tablettes pour l’écriture, l’assurance qu’il n’y ait pas plus d’un maître actif à la fois, ainsi que la vérification du contrôle d’accès.

Exemple tiré du document de recherche de Google:

alt text

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 et anchor:my.look.ca. Chaque cellule d'ancrage a ne version; la colonne de contenu contient trois versions, aux horodatages t3, t5 et t6.

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.

569
splattne

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:

http://research.google.com/archive/bigtable.html

50
Mark Ingram

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.

29
user

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 .

19
EvilRyry

Bien que Google utilise BigTable pour toutes ses applications principales, ils tilisent également MySQL pour d’autres applications (peut-être mineures).

13
Mauricio Scheffer

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 .

9
Koen Bok

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.

6