Quelle firebase database utilise Google?

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

Grande table

Un système de stockage dissortingbué pour les données structurées

Bigtable est un système de stockage dissortingbué (conçu par Google) pour gérer des données structurées conçues pour évoluer vers une très grande taille: des pétaoctets de données sur des milliers de serveurs de base.

De nombreux projets Google stockent des données dans Bigtable, notamment l’indexation Web, Google Earth et Google Finance. Ces applications imposent des exigences très différentes à Bigtable, à la fois en termes de taille de données (des URL aux pages Web aux images satellite) et aux exigences de latence (du traitement en masse du backend au service de données en temps réel).

Malgré ces demandes variées, Bigtable a réussi à fournir une solution flexible et performante pour tous ces produits Google.

Certaines fonctionnalités

  • SGBD rapide et à très grande échelle
  • une carte sortingée multidimensionnelle dissortingbuée et épars, partageant les caractéristiques des bases de données orientées lignes et des bases de données orientées colonnes.
  • conçu pour évoluer dans la gamme des pétaoctets
  • il fonctionne sur des centaines ou des milliers de machines
  • il est facile d’append plus de machines au système et de tirer automatiquement parti de ces ressources sans aucune reconfiguration
  • chaque table a plusieurs dimensions (dont l’une est un champ pour le temps, permettant le contrôle de version)
  • Les tableaux sont optimisés pour GFS (Google File System) en étant divisés en plusieurs tablettes – des segments de la table étant divisés sur une rangée choisie de telle sorte que la tablette aura une taille d’environ 200 Mo.

Architecture

BigTable n’est pas une firebase database relationnelle. Il ne prend pas en charge les jointures ni ne prend en charge les requêtes riches en SQL. Chaque tableau est une carte multidimensionnelle fragmentée. Les tableaux sont constitués de lignes et de colonnes et chaque cellule comporte un horodatage. Il peut y avoir plusieurs versions d’une cellule avec des horodatages différents. L’horodatage permet des opérations telles que “sélectionner ‘n’ versions de cette page Web” ou “supprimer des cellules plus anciennes qu’une date / heure spécifique”.

Pour gérer les tables volumineuses, Bigtable divise les tableaux en limites de lignes et les enregistre sous forme de tablettes. Une tablette est d’environ 200 Mo et chaque machine enregistre environ 100 comprimés. Cette configuration permet aux tablettes d’une seule table d’être réparties entre plusieurs serveurs. Il permet également un équilibrage de charge fin. Si une table reçoit de nombreuses requêtes, elle peut éliminer d’autres tablettes ou déplacer la table occupée vers une autre machine peu occupée. 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 en tant que SSTables immuables et une queue de journaux (un journal par machine). Lorsqu’une machine manque de mémoire système, elle compresse certaines tablettes à l’aide de techniques de compression propriétaires de Google (BMDiff et Zippy). Des compactions mineures ne concernent que quelques tablettes, tandis que les compactions majeures impliquent tout le système de tables et récupèrent de l’espace sur le disque dur.

Les emplacements des comprimés Bigtable sont stockés dans des cellules. La recherche d’une tablette particulière est gérée par un système à trois niveaux. Les clients obtiennent un point sur une table META0, dont un seul. La table META0 garde la trace de nombreux comprimés META1 contenant les emplacements des comprimés recherchés. META0 et META1 utilisent tous les deux la pré-extraction et la mise en cache pour minimiser les goulots d’étranglement dans le système.

la mise en oeuvre

BigTable est basé sur Google File System (GFS), qui sert de magasin de sauvegarde pour les fichiers journaux et de données. GFS fournit un stockage fiable pour les SSTables, un format de fichier propriétaire de Google utilisé pour conserver les données de la table.

BigTable utilise également un autre service, Chubby , un service de locking dissortingbué fiable et hautement disponible. Chubby permet aux clients de prendre un verrou, en l’associant éventuellement à certaines métadonnées, qu’il peut renouveler en renvoyant les messages de maintien en vie à Chubby. Les verrous sont stockés dans une structure de nommage hiérarchique de type système de fichiers.

Il existe trois types de serveurs principaux dans le système Bigtable:

  1. Serveurs maîtres: atsortingbuez des tablettes aux serveurs de tablettes, surveillez l’emplacement des tablettes et redissortingbuez les tâches en fonction de vos besoins.
  2. Serveurs de tablettes: traitent les demandes de lecture / écriture pour les tablettes et les tablettes séparées lorsqu’elles dépassent les limites de taille (généralement 100 Mo à 200 Mo). Si un serveur de tablettes tombe en panne, alors 100 serveurs de tablettes chaque pick-up 1 nouvelle tablette et le système récupère.
  3. Verrouiller les serveurs: instances du service de locking dissortingbué Chubby. Beaucoup d’actions dans BigTable nécessitent l’acquisition de verrous, y compris l’ouverture de tablettes pour l’écriture, garantissant qu’il n’y a pas plus d’un maître actif à la fois et la vérification du contrôle d’access.

Exemple tiré du document de recherche de Google:

texte alt

Une tranche d’un exemple de tableau qui stocke les pages Web. Le nom de la ligne est une URL inversée . La famille de colonnes de contenu contient le contenu de la page et la famille de colonnes d’ancrage contient le texte de toutes les ancres faisant référence à la page. La page d’accueil de CNN est référencée par les pages d’accueil de Sports Illustrated et de MY-look. La ligne contient donc des colonnes nommées anchor:cnnsi.com et anchor:my.look.ca Chaque cellule d’ancrage a une version ; la colonne des contenus comporte 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 sockets en charge au niveau des lignes, mais pas entre 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 , discutant du système de stockage de contenu Bigtable utilisé dans le backend de Google.

C’est quelque chose qu’ils ont construit eux-mêmes – il s’appelle Bigtable.

http://en.wikipedia.org/wiki/BigTable

Il y a un article de Google sur la firebase database:

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

Spanner est le système de gestion de bases de données relationnelles (SGBDR) dissortingbué par Google à l’échelle mondiale, le successeur de BigTable . Google affirme qu’il ne s’agit pas d’un système relationnel pur, car chaque table doit avoir une clé primaire.

Voici le lien du papier.

Spanner est une firebase database évolutive, multi-versions, dissortingbuée à l’échelle mondiale et répliquée de manière synchrone. C’est le premier système à dissortingbuer des données à l’échelle mondiale et à prendre en charge des transactions dissortingbuées cohérentes avec l’extérieur. Cet article décrit la structure de Spanner, son ensemble de fonctionnalités, les raisons sous-jacentes aux différentes décisions de conception et une nouvelle API de temps qui expose l’incertitude des horloges. Cette API et son implémentation sont essentielles pour prendre en charge la cohérence externe et diverses fonctionnalités puissantes: lectures non bloquantes dans le passé, transactions en lecture seule sans locking et modifications du schéma atomique, sur l’ensemble de Spanner.

Une autre firebase database 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 interactifs en ligne actuels. Megastore allie de manière innovante l’évolutivité d’une banque de données NoSQL à la commodité d’un SGBDR traditionnel et fournit à la fois des garanties de cohérence élevées et une haute disponibilité. Nous fournissons une sémantique ACID sérialisable dans les partitions de données fines. 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 les centres de données. Cet article décrit l’algorithme de sémantique et de réplication de Megastore. Il décrit également notre expérience de prise en charge d’un large éventail de services de production Google créés avec Megastore.

Comme d’autres l’ont mentionné, Google utilise une solution locale appelée BigTable et a publié quelques articles la décrivant dans le monde réel.

Les gens d’Apache ont une implémentation des idées présentées dans ces articles appelées HBase . HBase fait partie du projet Hadoop plus vaste qui, selon leur site, «est une plate-forme logicielle permettant d’écrire et d’exécuter facilement des applications qui traitent de grandes quantités de données». Certaines des références sont assez impressionnantes. Leur site est à http://hadoop.apache.org .

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

Et il est peut-être aussi utile de savoir que BigTable n’est pas une firebase database relationnelle (comme MySQL) mais une énorme table de hachage (dissortingbuée) 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, il existe de nombreuses autres implémentations qui tentent de résoudre les mêmes problèmes que BigTable (évolutivité, disponibilité). Hier, j’ai vu un article de blogue sur la liste d’entre eux.

Google utilise principalement Bigtable.

Bigtable est un système de stockage dissortingbué permettant de gérer des données structurées conçues pour évoluer vers une très grande taille.

Pour plus d’informations, téléchargez le document ici .

Google utilise également des bases de données Oracle et MySQL pour certaines de leurs applications.

Toute information supplémentaire que vous pouvez append est très appréciée.