Affichage de la base de données F1 du service de publicité de Google à partir du papier VLDB

Cliquez sur le "ci-dessus"Voler total chat IT",Choisissez de suivre le public No.

Il faut environ 20 minutes pour lire le texte.


Récemment, certains documents vLDB ont été lus en raison de leur travail. Cela comprend une analyse de la base de données F1 nouvellement publiée par Google. Il n'est toujours pas facile de lire les papiers Google. Parce que Google a toujours dit la moitié cachée. Ce document est relativement ouvert à écrire, ou ne peut pas éviter la vulgarité.


Ce document fait suite à la base de données VLDB f1:A Distributed SQL 2013 de Google, qui fournit une image complète de l'évolution de la base de données F1 de Google au fil des ans. Ce document est discuté en détail dans ce document.


F1 et l'arrière-plan des concurrents

Passons en revue l'histoire de la F1. F1 est un système de requête de données qui prend en charge plusieurs sources de données. Il est né à l'origine dans le bras de la publicité de Google. L'objectif principal de l'objectif initial était de remplacer le cluster mySQL du système de publicité à l'époque. F1 a été positionné comme un moteur de requête depuis le début, la mise en œuvre de principes stricts de séparation de stockage de calcul. Le système de stockage en dessous était The Next Generation Spanner of BigTable, qui a ensuite été développé en parallèle.


Puis, en 2014, VLDB Google a publié Mesa, un système mondial d'entrepôt de données pour plusieurs centres de données. Mesa est devenu le deuxième système dans l'amarrage primaire de la F1. F1 a évolué à nos jours comme un système qui peut prendre en charge les requêtes de fédération de données pour les données des fichiers CSV à BigTable à Spanner.


Après tant d'années de développement, Google a également formé un certain nombre de systèmes de traitement de données. Ces systèmes de base de données eux-mêmes entreont de solides relations concurrentielles. En d'autres termes, je peux prendre un client de vous, et mon équipe sera plus grande. F1, comme un système en pleine croissance au sein de Google, est également le gagnant de cette relation concurrentielle.


Il est important pour nous de mieux comprendre l'historique et les auditoires de services de ces bases de données afin d'acquérir une meilleure compréhension du soutien commercial et des options techniques des systèmes f1. Donc ci-dessous je suis et comprendre F1 ce document lié à certains des autres systèmes de base de données de Google pour faire une introduction.


F1 a été initialement positionné pour remplacer mySQL cluster son par la division Annonces de Google. Spanner, en tant que système sous-jacent de la F1, est un niveau de stockage qui prend en charge le traitement des transactions (mis en œuvre à l'aide de 2 phase de verrouillage) et F1 existe comme un moteur informatique.


Mais après que l'équipe Spanner elle-même a développé la couche de stockage, elle a commencé à faire des requêtes de données et a développé un système de requête interne appelé Spandex. Comment Spanner a évolué en un document complet du système SQL publié dans SIGMOD 2017. Cela a conduit à une relation concurrentielle entre la F1 et Spanner. A ce jour, la rivalité entre les deux équipes au sein de Google reste féroce.


Dremel est un système interne d'entrepôt de données pour Google. Google a commercialisé Dremel, nommé Big Query. Dremel utilise un modèle de données semi-structuré avec un format basé sur des colonnes, dont la première génération est ColumnIO.


Le format de deuxième génération Capactior a été introduit après la commercialisation. Les deux formats sont des sources de données externes prises en charge par F1. Le succès inhabituel de Dremel au sein de Google. À ce jour, BigQuery reste le produit Big Data le plus réussi sur le cloud de Google.


Flume est une mise à niveau vers le cadre mapReduce interne de Google. Initialement développé uniquement sur Java, il a été initialement appelé Flume Java, et plus tard il a également été disponible en C. Flume a modifié le modèle de développement de Map and Reduce écrit dans le cadre MapReduce, introduisant des API de haut niveau, qui ont été développés comme Spark.


Dans l'environnement d'exécution sous-jacent, Flume a également modifié le mode rigide de MapReduce pour prendre en charge des modèles tels que Map-Reduce-Reduce. Son avantage est qu'il est très flexible pour écrire une variété de pipeline de traitement de données, l'inconvénient est des choses simples ont également à écrire beaucoup de code, pas aussi simple que SQL.


Positionnement commercial de la F1

Le système F1 prend en charge trois façons différentes d'interroger les données :

1. Requêtes qui n'affectent que quelques enregistrements du type OLTP

2. Questions OLAP à faible latence impliquant de grandes quantités de données

3. Pileline ETL à grande échelle


L'article de F1 ne fournit pas d'analyse de ces trois méthodes de requête de données différentes. Je combine le document F1 2013 et d'autres arrière-plan pour analyser les raisons des trois différentes méthodes de requête de données des supporters de F1.


THE OLTP TYPE OF QUERY ORIGINATED FROM F1'S ORIGINAL GOAL: TO REPLACE MYSQL CLUSTERS IN THE ADVERTISING BUSINESS. Selon le document F1 2013, son soutien à l'OLTP est limité. Une requête OLTP dans le système F1 est de lire plusieurs opérations suivies de 0 à 1 opération d'écriture. La puissance de traitement transactionnelle de l'OLTP du système F1 repose sur le support du sous-jacent de Spanner pour le traitement des choses.


Dans l'article de 2018, les auteurs ne fournissent pas de description détaillée des requêtes du type OLTP. Toutefois, selon l'analyse de bon sens, un moteur de requête apatride qui doit prendre en charge le traitement transactionnel ne peut pas être séparé de la prise en charge de stockage sous-jacente pour les choses. Ainsi, le moteur F1 ne peut évidemment pas faire le traitement transactionnel pour toute source de données qu'il se connecte à. Étant donné que Spanner lui-même implémente un moteur de requête de données, il ya prise en charge pour le traitement des choses. À cet égard, la F1 et Spanner entreont une relation de concurrence claire.


Les requêtes oLAp et oLAP peu nombreuses qui impliquent de grandes quantités de données sont positionnée un peu comme BigQuery. Sa mise en œuvre a également une implémentation BigQuery, principalement par le biais de la voie de pipeline pour interroger et retourner les résultats de données.


Selon l'analyse de cet article, qui se présente lui-même et d'autres concurrents au sein de Google, l'entreprise a été déplacée à Bigquery ou F1 après un système Google appelé Tenzing fermé dans les premières années. Nous pouvons comprendre que BigQuery et la F1 sont des concurrents dans ce type de requête. Dans la pratique, BigQuery a plus de succès.


Dans les premiers jours, à l'intérieur de Google, à grande échelle ETL Pipeline a été largement atteint par une série de missions MapReduce. Avec Flume, ces entreprises ont déménagé à Flume. Mais Flume est un très mauvais système, et il faut beaucoup de code pour faire une simple requête de données. Dans cet article, l'auteur fait explicitement référence au remplacement réussi de Flume par la F1 dans certaines entreprises.


Combiné avec l'analyse ci-dessus, nous pouvons simplement arriver à la conclusion suivante. L'activité OLTP dans la F1 interne de Google est principalement la cible des premières années de la F1. F1 s'appuie sur le soutien de Spanner pour OLTP. Puis Spanner lui-même a développé un moteur similaire. Ce n'est pas incompatible avec ce que j'ai entendu parler de la F1, qui est principalement utilisé par le département de la publicité, et le département non-publicité, qui utilise Spanner fortement.


Dans les requêtes OLAP à faible latence, la principale compétition pour la F1 est BigQuery. Avec le succès de BigQuery aujourd'hui. La F1 ne devrait avoir qu'une base d'affaires dans son département de publicité à domicile.


Flume est un système mixte au sein de Google. Mieux que MapReduce, mais pas facile à utiliser. F1 est une force dans l'activité ETL et peut capturer une partie du marché. D'un point de vue de l'architecture technique, comment obtenir une meilleure utilisation de l'ETL est la technologie de l'équipe f1 2018 plus critique.


Architecture système de la F1

L'image suivante est le diagramme d'architecture du système F1 dans le document 2018:

 

                            

L'image suivante est le diagramme d'architecture du système F1 dans le document de 2013 :



Les systèmes F1 peuvent être déployés dans différents centres de données, mais chaque centre de données dispose d'un ensemble complet de clusters informatiques. Le cluster se compose de 1 F1Master. Il s'agit d'un service élu non-single-nœud, unique à chaque centre de données. Il s'agit principalement de surveiller l'exécution des requêtes et de gérer tous les F1Servers. Le système se compose de plusieurs serveurs F1 qui traitent réellement les requêtes.


Il y a aussi un bassin de travailleurs de F1. Lorsqu'une requête doit être exécutée en parallèle, ces travailleurs sont utilisés pour exécuter une requête parallèle, et le serveur F1 correspondant devient le code de la requête. Le travailleur s'appelle Esclave dans le diagramme d'architecture du système 2013. C'est juste un nom différent. Les responsabilités réelles de F1 Server ont été plus clairement énoncées dans le document de 2013.


Le système dispose également d'un service de catalogue et d'un serveur UDF. Ces choses sont relatives à l'ajout des architectes système dans le document de 2013. Le service de catalogue est un service de métadonnées qui définit les données dans différentes sources de données comme apparence. On peut le constater dans l'architecture du système de 2013, seulement Spanner, mais dans le document de 2018, les sources de données sont diversifiées. Ainsi, Catalog Service est un service nécessaire pour devenir un moteur de requête fédéral source multi-données dans le développement de la F1.


UDF Server est une nouvelle chose que la F1 révélera dans son document 2018. Son importance principale est d'obtenir le soutien pour le remplacement et le remplacement de la legd. Nous le couvrirons plus en détail plus tard.

Mode de requête de la F1

Les motifs de requête de la F1 peuvent être facilement divisés en modèles interactifs et non interactifs. Une combinaison de documents 2013 et 2018. L'exécution interactive concerne principalement les requêtes qui n'affectent que quelques enregistrements du type OLTP et pour les requêtes OLAP à faible latence qui impliquent de grandes quantités de données. Le système fonctionne sur les deux types de requêtes via F1 Server.


Le plan d'exécution est généré après que F1 Server compile et optimise la requête. Il existe deux types de plans d'exécution : l'exécution à fil unique et l'exécution parallèle. Le premier est exécuté directement par Server. Ce dernier serveur devient la requête parallèle entière, exécutée par le travailleur d'appel RPC. Ce document traite de certaines décisions concernant la stratégie de partitionnement du système et la façon d'améliorer les performances du système, principalement pour les données biaisées et les modèles de non-accès. Cette pratique est courante dans les bases de données distribuées. Les personnes intéressées peuvent lire le journal. Ca ne va plus commencer.

Les auteurs notent que l'exécution interactive est stable pendant environ une heure ou alors elle pourrait échouer. Selon le document, l'exécution d'interaction distribuée de F1 n'a pas la tolérance de défaut elle-même, mais le client de F1 a une fonction de réessayer. Pour un système mature, c'est un peu dommage.

L'exécution non interactive est principalement utilisée pour les requêtes de longue durée. Il s'appuie sur le cadre MapReduce de Google. La requête est compilée dans un plan de requête et stockée dans RegistrQuery. Query Registry est une base de données Spanner distribuée à l'échelle mondiale dans les centres de données qui suit les métadonnées pour les requêtes dans tous les modes de lots. Il existe également un service mondial de distributeur de requêtes de centre de données croisée, qui attribue des plans de requête à un centre de données qui exécute la requête à l'aide du framework MapReduce.

在MapReduce的查询框架里,F1的优化引入了Map-Reduce-Reduce的模式,这个和Map-Reduce的框架不符合。F1团队的解决方式是把这个翻译成Map-Reduce后跟一个Map<identity>-Reduce任务。这显然不是最高效的办法。由此可见,长查询通过MapReduce来执行并非最有效的方式。而F1也无法摆脱执行框架的限制。


Optimiseur de F1

La structure de l'optimiseur F1 est indiquée ci-dessous. Il s'agit d'un processus d'optimisation de requête plus classique. L'optimiseur obtient l'AST du compilateur en tant qu'entrée, le convertit d'abord en un plan de requête logique, puis, après optimisation logique, génère un plan de requête physique. Ce plan de requête est finalement généré par le générateur de plan d'exécution pour produire un plan d'exécution.

L'optimisation logique se fait principalement par la logique de l'algèbre relationnelle, le plan de requête logique d'entrée dans un programme qui est optimal selon les optimisations heuristiques et communes telles que le pushdown de prédicat sont effectuées ici. Un plan de requête physique est responsable de la traduction d'un plan logique en plan physique. Le générateur de calendrier le plus en attente segmente le plan physique, chaque segment devenant la dernière unité d'exécution, et insérant des opérateurs d'échange entre les unités d'exécution pour repartition des données. La question de la concurrence pour chaque unité d'exécution est également déterminée ici.


L'optimiseur F1 dans son ensemble est un optimiseur relativement primitif. L'optimisation totale est entièrement basée sur la règle, sans optimisation de la base de coûts. Par rapport aux systèmes d'entrepôt de données courants, cela nécessite beaucoup d'amélioration.


Évolutivité de la F1

F1 prend en charge la fonction définie par l'utilisateur (UDF), la fonction globale définie par l'utilisateur (UDA) et la fonction table-valeur (TVF). Ce sont les extensions habituelles dans le système de base de données. Ces extensions définies par l'utilisateur peuvent être implémentées à l'aide de scripts SQL ou LUA. Fondamentalement, ces implémentations sont l'implémentation classique dans la base de données.


Mais ce qui est plus spécial en F1 est l'introduction de fils serveur uDF. Il est principalement utilisé pour mettre en œuvre plus complexe TVF. Un serveur UDF est un service qui peut être implémenté dans n'importe quelle langue, et il fournit F1 avec une interface de fonction pour TVF. En plus d'envoyer l'entrée correspondante et de recevoir les résultats pendant l'exécution, ces interfaces F1 fournissent des informations supplémentaires au compilateur et optimiseur lors de la compilation d'interrogation. Par exemple, quel est le schéma de sortie, si TVF peut être partitionné après chaque partition seule pour effectuer et ainsi de suite.


Serveur UDF a très peu d'encre dans l'article, mais à mon avis c'est la différence la plus importante entre le 2018 F1 papier et le 2013 papier. Avec le serveur UDF, la logique ETL complexe est possible. Le serveur UDF résout également l'ancien problème du domaine de base de données avec UDF : la gestion des ressources. Si je vais choisir l'une des choses les plus brillantes, je pense que c'est serveur UDF.


Je crois que les développeurs de F1 de Google devraient être bien conscients de l'importance du serveur UDF, mais il n'y a guère plus à écrire dans le document. Il est impossible de dire que cela peut avoir été intentionnel.


L'utilisation du serveur UDF permet à F1 de prendre en charge le complexe ETL. Dans le même temps, la logique standard de traitement des données dans ETL peut être implémentée directement en écrivant SQL. Dans le même temps, parce que le serveur UDF est un service distinct, les problèmes communs de gestion des ressources uDF ont également été résolus.


Résumer

Le document VLDB F1 2018 sur l'architecture et le développement de la base de données F1 de Google. F1 est maintenant devenu un moteur de requête de données qui prend en charge plusieurs capacités de données pour plusieurs sources de données. Ses requêtes de classe OLTP sont principalement axées sur la tâche initiale, en remplacement de mySQL. Ses requêtes OLAP à faible latence sont principalement en concurrence avec Dremel. Et son objectif en soutenant complexe ETL est principalement destiné à Flume.


F1 dispose de trois modes d'exécution : l'exécution interactive à thread unique, distribuée et l'exécution non interactive basée sur MapReduce. Il est dommage que les interactions distribuées fonctionnent sans échouer-récupération. Les performances de l'exécution non interactive basée sur MapReduce peuvent être optimisations.


L'optimiseur F1 est un optimiseur de base de données classique, seulement l'optimisation de la base de règles, et non l'optimisation de la base de coûts. Donc, je ne pense pas qu'une optimisation comme Join-reordering peut faire. Cet optimiseur est assez simple et a beaucoup de place pour l'amélioration.


En termes d'évolutivité, les méthodes d'extension UDF, UDA et TVF sont toutes des extensions de base de données classiques. Son serveur UDF est une invention très importante. Je pense à toutes les choses dans cet article qui ont une grande valeur de référence. Mais cet article omet apparemment délibérément cette pièce.


L'architecture de la F1 est comparée à 2013, avec l'ajout d'un service de métadonnées, Catalog. Le catalogue joue un rôle important dans la scène du lac de données. La découverte et le partage des données sont essentiels. En ce qui concerne la gestion des droits, le rôle des services de métadonnées mondiales est irremplaçable. L'optimisation de la base de coûts nécessite également des services basés sur les métadonnées. Il est dommage que la F1 n'ait pas mentionné les nouveaux ajouts à ce document 2018.



Bienvenue dans le long dossier de presse pour suivre le numéro d'abonnementVoler total chat ITPour regarder plus


Articles connexes:

La myopie et la quasi-inquiétude

Comment savoir ce qu'un leader pense vraiment de vous

Communication tcp poignée de main, égale à l'argent et la mort

Le leadership compte le plus

Ne soyez pas analphabète s'illettré

Balayage d'une maison et balayage du monde

Ce qui manque le plus aux étudiants aux agriculteurs de code

Bienvenue sur The Total Knowledge Planet.