Migration de données par Kettle. Marc Cousin



Documents pareils
Ora2Pg Performances. (C) 2013 Gilles Darold

Devoir Data WareHouse

Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Le Langage De Description De Données(LDD)

1. Base de données SQLite

MODE OPERATOIRE OPENOFFICE BASE

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

//////////////////////////////////////////////////////////////////// Administration bases de données

Master Exploration Informatique des données DataWareHouse

PHP 5. La base de données MySql. A. Belaïd 1

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

Compétences Business Objects

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

Les BASES de DONNEES dans WampServer

Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers

Notes de cours : bases de données distribuées et repliquées

Cours: Administration d'une Base de Données

Introduction à JDBC. Accès aux bases de données en Java

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Les bases de données

Administration des bases de données. Jean-Yves Antoine

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Oracle Database SQL Developer Guide D'Installation Release 4.0 E

WordPress :: Migrer son site du local vers le serveur en ligne

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Optimisations des SGBDR. Étude de cas : MySQL

Introduction aux Bases de Données Relationnelles Conclusion - 1

Big Data et Graphes : Quelques pistes de recherche

DEVAKI NEXTOBJET PRESENTATION. Devaki Nextobjects est un projet sous license GNU/Public.

FORMATION TALEND. Page 1 sur 9

CREATION WEB DYNAMIQUE

Optimisation de MySQL

Bases de données relationnelles

Didacticiel PowerAMC 11.0 MPD

Mise en oeuvre d'une base de données mono-utilisateur avec SQLite

Mysql. Les requêtes préparées Prepared statements

Récupérer au format AVI un extrait d'un DVD à l'aide du logiciel FlaskMpeg

Encryptions, compression et partitionnement des données

TP Contraintes - Triggers

Pratique et administration des systèmes

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

SQL Historique

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

Stockage du fichier dans une table mysql:

MYSQLDUMP & ZRM COMMUNITY

Java et les bases de données

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Application web de gestion de comptes en banques

Bases de Données Avancées

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Auto-évaluation Oracle: cours de base

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

et Groupe Eyrolles, 2006, ISBN :

Historisation des données

TP Bases de données réparties

Paginer les données côté serveur, mettre en cache côté client

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Catalogue Formation «Vanilla»

STATISTICA Version 12 : Instructions d'installation

Importation et exportation de données dans HDFS

Bases de Données relationnelles et leurs systèmes de Gestion

Whitepaper. Méthodologie de création de rapports personnalisés SQL Server Reporting Services

Création et Gestion des tables

Olivier Mondet

Module BD et sites WEB

Big Data et Graphes : Quelques pistes de recherche

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Compte-rendu de projet de Système de gestion de base de données

Bases de données - Modèle relationnel

Jimmy Clairbois. Projets réalisés dans le cadre professionnel

Excel 2007 Niveau 3 Page 1

Guide de démarrage rapide Centre de copies et d'impression Bureau en Gros en ligne

L optimisation des performances, la simplification des montées de version G.O.L.D. et le suivi statistique des processus.

OpenPaaS Le réseau social d'entreprise

Installation d'un serveur FTP géré par une base de données MySQL

Le langage SQL (première partie) c Olivier Caron

Projet 1 : RiskMetrix Conversion

Enregistrer 27. ENREGISTREMENT ouvre une boîte de dialogue similaire à celle qui est décrite ici. «Enregistrement» sous l'écran vidéo

Qui est Sybase ianywhere?

INSIA Bases de données ORACLE Installation SQL*Plus SQL-Developer

Comment Définir une Plage de données Pour Utiliser Fonctions de Filtres et de Tris

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Raja Bases de données distribuées A Lire - Tutoriel

ORACLE DATA INTEGRATOR ENTERPRISE EDITION - ODI EE

Langage SQL : créer et interroger une base

PostgreSQL, le cœur d un système critique

Exploiter les statistiques d utilisation de SQL Server 2008 R2 Reporting Services

Construction d un EDD avec SQL 2008 R2. D. Ploix - M2 Miage - EDD - Création

Fiche n 14 : Import / Export avec PlanningPME

BIRT (Business Intelligence and Reporting Tools)

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

A QUOI SERVENT LES BASES DE DONNÉES?

Transcription:

Migration de données par Kettle Marc Cousin 1

Outils dédiés Ora2PG My2PG, my2pg.pl, mysql2pgsql, mp2p ExportSQL (Access) Méthodes manuelles (scripts «ad hoc») Une méthode différente par moteur? 2

Outils dédiés Migrent schéma et données Raisonnablement simples Lents Regexp Faiblement typés Scripts Multi-thread? Patcher le programme? 3

Extract-Transform-Load ETL Le T ne nous intéresse pas (ou peu) Extraction et chargement rapides Nombreux connecteurs, extraction et chargement Chargements incrémentaux Transformations (normaliser, dénormaliser, modifier le format) Marteau pilon pour écraser une mouche 4

Kettle Java JDBC. Se connecte à n'importe quoi Multi-threadé. Fortement typé 5

Concepts Transformations Flux : suite d'enregistrements, similaire à des tuples de base (éléments nommés et typés) Étapes traitant un flux (ou le créant) Extraction (input) : récupération depuis base, fichier, webservice Alimentation (output) : insertion dans base, fichier, webservice, exécution de script Autres (la plupart) : transformation de flux à la volée 6

7 Transformation :

Concepts Jobs Exécutés séquentiellement par défaut Lancent d'autres jobs ou des transformations Responsables de l'ordonnancement 8

9

Transformation simple Recopie de la table language : Table INPUT : SELECT * FROM language dans sakila Table OUTPUT : Insertion d'enregistrements dans la table language de pagila Une flèche («hop») entre les deux 10

11 Transformation simple

Transformation simple «Show output fields» (montrer les champs en sortie) Tout est typé Les informations sont récupérées dynamiquement de la source (au moins quand c'est une base de données) 12

13

14 Show output fields

Transformation simple On peut avoir un aperçu des données circulant «Show preview» (menu contextuel) 15

16 Preview

Ça peut devenir compliqué Différences de schéma entre la source et la destination Types non disponibles au départ ou à l'arrivée (year(4) sous MySQL ) Schéma différent (contraintes techniques différentes entre les moteurs par exemple) 17

Ça peut devenir compliqué Types pas ou mal gérés par JDBC Enums Arrays Composites Array de composite Types géométriques => Transformations, SQL dynamique, CAST implicite dans PG, to_char à la source 18

Exemple : chargement de «films» 3 champs posent problème : special_features: rating: MySQL : «set('trailers','commentaries','deleted Scenes','Behind the Scenes')» PG : «text[]» MySQL : enum('g','pg','pg 13','R','NC 17') PG : mpaa_rating (enum aussi) release_year : year(4) sous MySQL, domaine sur un int sous PG 19

Exemple : chargement de films Types non connus par JDBC, qui considère que ce sont des chaînes à l'insertion Création d'un CAST varchar -> mpaa_rating sous PG pour insertion directe Ajout d'un CAST varchar -> text[] sous PG Ajout d'un convert() : year(4) int Conversion du format «SET» de MySQL vers array PG (ajout d'accolades) Séquencement création CAST -> traitement -> destruction CAST dans la transformation 20

21 Transformation des films

22 Créer les CASTS

23 Modifier l'ordre SQL source

24 Rajouter des accolades en javascript

Partitionnement à la volée Table payment Non partitionnée dans sakila Partitionnée par mois dans pagila Insérer directement dans la bonne partition? Calculer le nom de la partition pour les enregistrements au fur et à mesure «Table OUTPUT» peut utiliser ce champ comme nom de table 25

26 Transformation payments

27 Calcul de l'année et du mois

28 Insertion dans la partition

Et si c'est trop lent? Trouver l'étape limitante: «Step Metrics» 29

Et si c'est trop lent? Optimiser l'étape : Éviter le step javascript, utiliser formula, calculator, ou Java, plus rapides Préférer faire les tris dès l'input (ORDER BY) Transtyper dès l'input (CAST, to_char) Détruire/recréer les index, PK, FK Utiliser COPY (ou autre suivant SGBD) Augmenter la «taille des commit» et des «buffers» 30

Et si c'est trop lent? Paralléliser le nœud limitant «Change number of copies to start», disponible pour presque tous les nœuds Plus compliqué pour un nœud INPUT SELECT * FROM ma_table WHERE pk%${internal.step.unique.count}=${internal.step.unique.number} «Replace variables in script» Utile si c'est la récupération de l'enregistrement qui est longue (gros blob par exemple) Paralléliser plusieurs opérations longues (chargement de plusieurs tables) 31

32 Passage de 6m20s à 1m45s

Il faut tout faire à la main? Wizard «COPY TABLES» Crée job recopiant toutes les tables sélectionnées Et ordres SQL pour créer/modifier les tables pour les rendre conformes (préférer un script de schéma personnalisé) Pas d'index, de contrainte, de séquence, de trigger, de PL Ne gère pas l'ordre des contraintes. Préférer les créer après le chargement des données Crée un job initial, à affiner 33

Les erreurs? Kettle trace les erreurs, au format Java (pile d'exceptions) Différents niveaux de log Plus rapide et naturel pour un DBA de regarder la log de la base Analyse simple de ce qui entre ou sort d'un nœud (show input/output fields, preview ) Attention aux types. On peut forcer les types avec le nœud 'SELECT values' 34

Les erreurs? Une erreur dans un nœud déclenche l'erreur de la transformation Sauf si on crée un flux d'erreur pour ce nœud Une erreur dans un job déclenche la remontée au job parent, ou arrête le job s'il est le parent Sauf si on crée un chemin pour gérer l'erreur de ce nœud 35

Quelques pièges Dans «kettle.properties», positionner KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL=Y Dans les paramètres des connexions, cocher «supports boolean» (pas par défaut) Ne pas oublier de positionner les valeurs des séquences 36