IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Conception/Modélisation Discussion :

Utilisation d'id dédié dans tables datawarehouse


Sujet :

Conception/Modélisation

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 64
    Points : 44
    Points
    44
    Par défaut Utilisation d'id dédié dans tables datawarehouse
    Bonjour,

    nous héritons d'un datawarehouse concu par un prestataire BI, ce datawarehouse est alimenté via talend, la source étant une base mysql.
    Le datawarehouse est lui aussi sous mysql.

    Notre prestataire a ajouté, dans chacune des tables de fait et de dimensions du datawarehouse, des identifiants dédiés autoincrementés. Les liens entre les tables sont tous faits
    via ces identifiants. D'apres lui, ces identifiants sont très utiles lorsqu'on aggrège des données de différentes sources dans une même table, ce qui me parait effectivement un bon point.

    Néanmoins ces identifiants sont très contraignants :
    - on ne peut pas parraléliser les chargements car les identifiants ne sont pas encore connus, le chargement doit donc être séquentiel
    - si on supprime des données dans les tables (cas d'un reload complet d'une table dont les données sources ont changé), et qu'il y a d'autres tables liées, alors tous les identifiants changent et les liens sont tous cassés.

    Si on gardait les identifiants (déjà uniques) de notre source de données, nous parerions à ces problèmes.

    Qu'en pensez-vous ? Quelle pratique de modélisation adoptez-vous par rapport à cela ?

    Merci pour votre aide !

  2. #2
    Membre éclairé Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Points : 870
    Points
    870
    Par défaut
    Le principe des identifiants auto incrémenté est de crée une clef technique, qui n'a aucune valeur fonctionnelle.
    Si vos identifiants sont déjà comme ca, vous pourriez sans doute les utiliser, mais en théorie, c'est bien avec des nouvelles clefs qu'on fait les liens dans un dwh


    Je ne comprends pas très bien votre histoire de re-chargement. De quelle table faite vous un reload ? une table du dwh ?
    Dans quel cas avez vous toute une table à recharger ? Pouvez vous donner plus de détails sur ce que vous cherchez à faire à ce niveau ?




    Ce que je pense qui vous bloque est que la création des id ne se fait qu'a l'insertion.
    Normalement, vous devriez avoir une table associant une clef fonctionnelle est une clef technique, vous generez très rapidement tous vos nouveau identifiants, et à partir de là, le reste de vos chargements peuvent se faire en parallele...

  3. #3
    Membre régulier
    Inscrit en
    Mars 2003
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 50
    Points : 73
    Points
    73
    Par défaut
    Les identifiants uniques numériques sont nécessaires et une pratique toute à fait normale. Celà permet d'accélérer les jointures entre les tables ainsi que d'utiliser des indexes plus performants.

    Dans 90% des cas, j'utilisent des identifiants numériques auto-incrémentés. Cependant, j'ai certains identifiants que j'utilise tel quel depuis ma source transactionnelle (OLTP). exemple : numéro client, numéro produit. Ils sont uniques et numériques donc font l'affaire... il n'est pas nécessaire de les renuméroter. De même pour la date que j'écris au format YYYYMMDD: 20150807.


    Si vous avez des identifiants uniques numériques vous pouvez les réutilisez.

    Pour la parallelisation, bstevy a bien répondu.

    Pour votre suppression de données, pour moi il ne faut jamais le faire. En décisionnel, on désactive des données mais ne supprime pas. J'entends par désactiver, l'utilisation d'une colonne booléenne qui a 1 pour actif et 0 pour inactif.

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 64
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    merci pour vos retours, mes excuses pour le retour très lent ...
    Si vos identifiants sont déjà comme ca, vous pourriez sans doute les utiliser, mais en théorie, c'est bien avec des nouvelles clefs qu'on fait les liens dans un dwh
    Les identifiants uniques numériques sont nécessaires et une pratique toute à fait normale. Celà permet d'accélérer les jointures entre les tables ainsi que d'utiliser des indexes plus performants.
    Le choix est bien là, soit on utilise des ids dédiés au datawarehouse, soit on utilise les ids de la source de données, déjà autoincrémentés et uniques.

    Ce que je pense qui vous bloque est que la création des id ne se fait qu'a l'insertion.
    Normalement, vous devriez avoir une table associant une clef fonctionnelle est une clef technique, vous generez très rapidement tous vos nouveau identifiants, et à partir de là, le reste de vos chargements peuvent se faire en parallele...
    Ok, mais à quel moment alimentez-vous cette table ? Elle est préprovisionnée ? Vous créeriez donc une table de correspondance par table de fait ?

    Je ne comprends pas très bien votre histoire de re-chargement. De quelle table faite vous un reload ? une table du dwh ?
    Dans quel cas avez vous toute une table à recharger ? Pouvez vous donner plus de détails sur ce que vous cherchez à faire à ce niveau ?
    On fait un reload par exemple lorsqu'on se rend compte qu'une colonne de la table a été mal alimentée pendant qq temps (bug, source de données incorrectes ...).

    Merci,

Discussions similaires

  1. [AC-2003] utiliser la liste d'une table en check box dans un formulaire
    Par Bomagicmusic dans le forum IHM
    Réponses: 11
    Dernier message: 18/04/2009, 18h34
  2. Réponses: 14
    Dernier message: 03/04/2008, 01h44
  3. Requête utilisant une formule stockée dans une table
    Par alexiisme dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 23/01/2008, 07h01
  4. [SQL] Utiliser un autre champ dans une table si le champ par défaut est vide
    Par Mawashigeri dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 16/01/2008, 13h31
  5. Utilisation d'une propriété dans une table
    Par pcayman dans le forum Modélisation
    Réponses: 1
    Dernier message: 12/05/2007, 18h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo