Fermer

novembre 18, 2021

Clonage avec BigQuery et Snowflake


Aujourd'hui, j'écris mon premier blog dans l'espoir d'en publier d'autres à l'avenir. Je me considère comme un passionné de données qui aime analyser et comprendre les données afin d'écrire mes solutions car, en fin de compte, ce sont les données qui sont essentielles pour toute application. Sans plus tarder, passons au sujet d'aujourd'hui : le clonage sur les deux systèmes d'entrepôt de données :

  1. Snowflake
  2. BigQuery

J'ai regardé de nombreux films et je me souviens dans Marvel Heroes lorsque Loki se clone de plusieurs manières à en même temps! Un tel clonage n'est peut-être pas possible dans le monde réel, mais il est possible dans le monde de la technologie. Par exemple, cloner le code sur une machine locale (le clone git est un exemple principal).

Maintenant, qu'en est-il des bases de données (DB) ? Pourquoi ne pas les cloner ? Eh bien, nous avions l'habitude de le faire, mais c'était vraiment une copie de la base de données qui consommait de l'espace. Vous vous demandez peut-être pourquoi devons-nous cloner une base de données sans consommer d'espace ? Eh bien, il y a beaucoup de réponses. Avant d'approfondir cela, arrêtons-nous un instant sur les raisons pour lesquelles nous faisons du clonage (alias Copie). La raison principale du clonage est de résoudre les problèmes de production ; lorsque nous déplaçons notre application en direct et que nous disons «  Oups, Je n'ai jamais rencontré ce type de données ou envisagé ces données », « J'aurais aimé avoir de telles données dans mon environnement de développement/test pour pouvoir couvrir ce scénario » ou « Nous n'avons pas un tel volume de données dans mon environnement de développement/test et je n'ai pas pu déterrer ces problèmes ! »

Le clonage aide également, pour n'en nommer que quelques-uns :

  1. Amélioration de l'application et de la structure de données sous-jacente en utilisant une copie de production des données. et Tester les environnements et effectuer nos tests) les bases de données monolithiques comme Oracle, DB2 et SQL Server on-Prem. Nous avions l'habitude d'appeler cela du clonage, mais si vous observez, nous ne les clonons pas réellement, mais plutôt les copions. La copie présente de multiples inconvénients, notamment :

    1. Duplication des données
    2. Effort manuel (ou un outil supplémentaire pour effectuer une activité)
    3. Jours pour répliquer (si le volume est élevé)
    4. Les données ne sont pas synchronisées avec la production[19659003]Stockage supplémentaire

    J'ai personnellement traité la copie de bases de données extra-larges, ce qui prenait entre 2 et 4 jours, sans compter le temps de configuration post-copie (analyse, etc.).

    Je souhaitais nous avions une commande simple à utiliser qui clonerait la base de données sans occuper d'espace et effectuerait mon travail en quelques commandes sans dépendre de mes DBA. Voilacela s'est avéré être vrai lorsque j'ai commencé à passer ma certification Snowflake Pro Core et à étudier et à jouer avec Snowflake.

    Permettez-moi de prendre du recul et de parler de Snowflake. Snowflake est un outil multi-cloud Data-Lake/Warehouse qui est entièrement construit sur le cloud, pour le cloud, et son architecture est définie sur une architecture de base de données à disque partagé et sans partage. Il a 3 couches d'architecture :

    1. Cloud Services : Le coordinateur et la collection de Services.
    2. Query Processing : Cerveau du système, où l'exécution des requêtes est effectuée à l'aide de « virtual entrepôts".
    3. Stockage de la base de données : qui stocke physiquement les données en mode Colonne.

    Snowflake" width="613" height="418" srcset="https://i2 .wp.com/blogs.perficient.com/files/Snowflake.jpg?w=613&ssl=1 613w, https://i2.wp.com/blogs.perficient.com/files/Snowflake.jpg?resize=300% 2C205&ssl=1 300w, https://i2.wp.com/blogs.perficient.com/files/Snowflake.jpg?resize=600%2C409&ssl=1 600w, https://i2.wp.com/blogs.perficient. com/files/Snowflake.jpg?resize=500%2C341&ssl=1 500w" tailles="(max-width : 613px) 100vw, 613px" data-recalc-dims="1"/></p><p><em>Source : Documentation Snowflake</em></p><p>Cet outil tire parti des atouts des fournisseurs de cloud (AWS/Google/Azure) en utilisant :</p><ol><li>Compute Engine (qui est étendu sively utilisé au niveau de la couche de traitement des requêtes et ils l'appellent un entrepôt virtuel)</li><li>Cloud Storage (GCS dans le cas de Google, S3 dans le cas d'AWS et Blob Storage dans le cas d'Azure)</li><li>VPC (réseau et autres sécurité couche pour ses différentes versions). </em>). Cette commande clonerait une base de données entière (avec certaines restrictions ; référez-vous à la documentation Snowflake pour les restrictions </em>). La beauté de celui-ci vient de notre étude de l'université intitulée Pointeurs/références ! Lorsque vous donnez une commande pour cloner une base de données, il effectue simplement ce qui suit :</p><ol><li>Crée la nouvelle base de données (un nom d'objet dans les services cloud comme d'habitude)</li><li>Tous les objets sous la base de données (notez qu'il existe certaines restrictions dans lesquelles certains objets ne sont pas clonés) sont créés (à nouveau le nom de l'objet dans la couche Service). ce que Snowflake fait intelligemment, c'est qu'il crée un pointeur/référence vers la base de données/tables source à partir de l'objet cloné, ce qui donne un énorme avantage non seulement en répliquant les données (logiquement) mais en économisant sur les coûts de stockage. Lorsqu'un utilisateur interroge une table à partir d'un objet cloné, les services Cloud récupèrent simplement les données de la source réelle, rendant les données aussi à jour que possible. De plus, cela ne prend pas de temps pour créer le clone, cela prend autant de temps que pour créer une table.</p><p>Voir ceci un exemple :</p><ul><li>Disons que j'ai créé une table appelée «<strong>Transactions</strong>" et chargé environ 200K enregistrements, la taille totale de cette table est de 8,6 Mo :</li></ul><p><img decoding=

    • Observez les métadonnées de cette table :

    Transactions 1 Metadata

     [19659038]ID : ID unique pour cette table

  2. CLONE_GROUP_ID : à partir de quel ID de l'objet est cloné (donc c'est le même que l'ID)
  3. Maintenant, je vais créer un clone de Transactions appelé "Transactions_Clone". Maintenant, la table affichera le même volume d'enregistrements :
  4. Transactions Clone

    • Nous pourrions nous demander s'il a « copié » l'intégralité de la table « Transactions » et l'a répliqué, mais ce n'est pas le cas. Alors, comment savons-nous qu'il n'a pas copié? Voir les métadonnées du tableau ci-dessous :

    Transactions Clone Metadata

    • Observez ce qui suit
      • ID : La nouvelle table a son propre ID unique
      • CLONE_GROUP_ID : Il pointe vers l'ID de la table "Transactions". N'est-ce pas intelligent !
    • Donc, techniquement, lorsque j'interroge TRANSACTIONS_CLONE Cela fait simplement référence à l'emplacement des données de "TRANSACTIONS"
    • Lorsque nous ajoutons des données au maître, vous ne voir cela dans TRANSACTIONS_CLONE ! (ce qui était attendu)
    • Maintenant, disons, je supprime les données de TRANSACTIONS_CLONE (60 d'entre elles), je ne verrai pas ces 60, mais les autres données seront toujours référencées à partir de sa source d'origine "TRANSACTIONS"

    Transactions Clone Delete

    • Et mes octets actifs sont toujours à 0

    Transactions Clone Metadata

    • Maintenant, j'ai chargé environ 100K enregistrements et jette un œil au nombre de enregistrements !, il prend les nouvelles données de l'emplacement récemment ajouté et le reste de la source.

    Transactions Clone Insert

    Si un utilisateur modifie la table ou l'objet, tout ce que Snowflake fait, c'est qu'il aura les données supplémentaires (ou les données supprimées) des nouveaux pointeurs/références. Cela implique des coûts de stockage pour les données ajoutées uniquement. Lorsque vous supprimez les données, les données d'origine ne sont pas modifiées, mais sa couche de service Cloud contient les informations nécessaires sur ce qui a été supprimé et ajouté, ce qui en fait une « vraie » copie Zero.

    De même, si vous apportez des modifications structurelles, Snowflake gère les changements dans sa couche de services Cloud et apporte les données nécessaires en conséquence.

    Cela donne une réelle puissance de clonage sans consommer d'espace et vous pouvez répliquer la table en quelques minutes, voire quelques secondes. Accélérez également votre développement et vos tests avec une bien meilleure efficacité.

    BigQuery est l'une des bases de données les plus populaires, ou nous devrions appeler Cloud Data Warehouse, qui offre des fonctionnalités riches pour le stockage des données et des performances et une évolutivité extrêmes des données. Il s'agit d'une base de données entièrement gérée, vous n'avez donc pas à vous soucier du stockage ou des moteurs de calcul à utiliser. Contrairement à Snowflake, il faut choisir un entrepôt virtuel (alias moteur de calcul) pour exécuter votre requête, et si la requête ne se porte pas mieux, vous pouvez choisir un entrepôt configuré plus haut pour permettre à la requête de mieux s'exécuter.

    Dans BigQuery, vous n'avez pas à vous en soucier et concentrez-vous simplement sur l'écriture de la requête et son exécution. Vous ne serez facturé que pour les données que vous récupérez.

    BigQuery est similaire à Snowflake, mais jusqu'à présent, il n'avait pas la possibilité de cloner la base de données. Lors de Google Next '21, il a été annoncé que vous pourrez bientôt :

    1. Prendre un instantané
    2. Cloner la base de données

    Bigquery" width="916" height="505" srcset="https:/ /i2.wp.com/blogs.perficient.com/files/Bigquery.jpg?w=916&ssl=1 916w, https://i2.wp.com/blogs.perficient.com/files/Bigquery.jpg?resize= 300%2C165&ssl=1 300w, https://i2.wp.com/blogs.perficient.com/files/Bigquery.jpg?resize=768%2C423&ssl=1 768w, https://i2.wp.com/blogs. perficient.com/files/Bigquery.jpg?resize=750%2C413&ssl=1 750w, https://i2.wp.com/blogs.perficient.com/files/Bigquery.jpg?resize=600%2C331&ssl=1 600w, https://i2.wp.com/blogs.perficient.com/files/Bigquery.jpg?resize=640%2C353&ssl=1 640w, https://i2.wp.com/blogs.perficient.com/files/Bigquery .jpg?resize=500%2C276&ssl=1 500w, https://i2.wp.com/blogs.perficient.com/files/Bigquery.jpg?resize=800%2C441&ssl=1 800w" tailles="(max-width : 916px) 100vw, 916px" data-recalc-dims="1"/></p><p><em>Source : Google Next '21 Session</em></p><p>Selon le sl ide ci-dessus, les instantanés sont immuables mais une fonctionnalité utile que vous pouvez utiliser pour remonter dans le temps sans encourir de frais. Cela permet de réaliser des économies car la copie de la table entraîne des coûts de stockage.</p><p> Le clonage a été introduit (bien qu'il ne soit pas encore disponible) mais les concepts se déroulent de la même manière que le flocon de neige (nous devons encore attendre l'annonce officielle jusqu'à ce moment-là, nous devrez peut-être assumer) dans lequel vous n'encourrez des frais que sur les données nouvelles ou modifiées, mais pas sur les autres. Cela permet d'économiser un coût énorme lorsque votre table atteint des To ou des Po.</p><p>C'est une fonctionnalité que chaque développeur/testeur attend de voir sur BigQuery et une fois le clonage en place, cela donnera un énorme coup de pouce aux équipes dans l'analyse de la production. problèmes sans aller à la Prod. Plus précisément, vous pouvez simplement cloner et exécuter vos requêtes sur la zone de développement sans aucun temps d'arrêt pour les boîtes de production. Le temps presse, et tout le monde veut que les choses soient faites plus rapidement et plus intelligemment et veut minimiser l'effort manuel.</p><p> Il y a plus à venir sur ces fonctionnalités une fois qu'elles seront officiellement publiées. Nous verrons comment cela se comporte par rapport au clonage de Snowflake par rapport au clonage d'Amazon RDS Aurora. En attendant, déconnectez-vous !</p><p></p><div class=

    À propos de l'auteur <!– :   kvaddadi, Sr Technical Architect–>

    Krishna Vaddadi est architecte technique senior. Un architecte expérimenté et motivé en base de données, plateforme et cloud ; Krishna est spécialisé dans le Big Data et les plateformes cloud. C'est un passionné de données et une PME expérimentée dans le domaine AML.

    En savoir plus sur cet auteur




Source link

Revenir vers le haut