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

SQL Oracle Discussion :

Générer une clé technique à partir d'une clé fonctionnelle


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Décembre 2020
    Messages : 7
    Par défaut Générer une clé technique à partir d'une clé fonctionnelle
    Bonjour,
    j'ai une table partitionnée par date (range) qui est chargée chaque jour avec 8 millions de lignes (on garde que dix partitions ), elle possède une PK fonctionnelle composée de 7 colonnes mais l'équipe java veut avoir une "clé" technique (pas une séquence Oracle) car c'est plus facile pour eux.

    j'ai utilisé la fonction DBMS_SQLHASH.GETHASH pour générer une clé de hachage pour chaque ligne mais ca plombe les perf du traitement de chargement (1h 30 min de plus a chaque chargement).


    j'ai ajouter cet update à la fin du chargement (j'ai essayé bulk/forall mais c pas mieux) :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE /*+ PARALLEL (mouvement,8) */  mouvement
    SET
        cle_hash = DBMS_SQLHASH.GETHASH('Select '''||col1||','||col2||','||col3||','||col4||','||col5|','|||col6||','||col7||''' From dual',2)
    where 
        rdt = clé de partition;

    Avez-vous une autre solution a me proposer ou des suggestion sur améliorer ma solution ?

    Merci pour votre aide

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 137
    Par défaut
    En quoi la solution de la séquence ne convient-elle pas ?
    Elle a pourtant le mérite d'assurer l'unicité et d'être totalement prise en charge par le système.
    De plus, la clé de hashage n'est pas prévue pour cet usage et n'assure pas l'unicité.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 176
    Par défaut
    Bonjour,

    Comme le demande al1_24 pourquoi une séquence ne convient-elle pas? Sinon au lieu de hasher pourquoi ne pas bêtement concaténer puisque la clé est unique?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    col1||','||col2||','||col3||','||col4||','||col5|','|||col6||','||col7

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Citation Envoyé par olap_2020 Voir le message
    mais l'équipe java veut avoir une "clé" technique (pas une séquence Oracle) car c'est plus facile pour eux.
    Ce n'est pas acceptable. Ce n'est sûrement pas aux développeurs d'imposer quelque chose d'aussi technique dans la modélisation.
    Quand ils vont diront qu'avoir des varchar2(4000) partout c'est plus facile pour eux que ferez-vous ?

    Quelle est leur vraie contrainte qu'une séquence ne saurait résoudre ?
    Mon petit doigt me dit qu'ils font des boucles en java et qu'avec sept colonnes en jointures leur programme est trop lent... suis-je loin de la réalité ?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Décembre 2020
    Messages : 7
    Par défaut
    petite précision/correction :
    la "clé" de hachage ne hache pas toutes les colonnes de la PK (elle exclu la clé de partition qui est la date du mouvement) donc elle n'est pas unique. un mouvement peut être présent dans plusieurs partitions mais il doit avoir la même "clé" technique.

    le mouvement est présent pour le moment dans deux tables donc utiliser une séquence oracle aura un impact important sur le traitement de chargement ( coté BDD ), coté java back le dev me dit que c'est une demande du front.

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 176
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Quelle est leur vraie contrainte qu'une séquence ne saurait résoudre ?
    Un dev Java m'a sorti un jour que ma PK devait être mono-colonne car Hibernate ne savait pas gérer sinon. lol. Mais ici ce n'est même pas le cas on dirait.
    Dans une de mes précédentes boites la direction a validé les desiderata des développeurs Java quant à la modélisation. Croyez-le ou non ils ont fini par mettre des id de pk dans du json. J'ai prévenu qu'on allait droit dans le mur, mais comme on ne m'a pas écouté j'ai préféré démissionner. Résultat: ils se sont bien pris le mur avec le client qui a abandonné le projet...

Discussions similaires

  1. générer une interface graphique à partir d'un fichier XML
    Par chaval dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 15/03/2006, 11h32
  2. Réponses: 3
    Dernier message: 02/12/2005, 14h23
  3. Réponses: 1
    Dernier message: 14/10/2005, 10h55
  4. Réponses: 4
    Dernier message: 02/05/2005, 21h25
  5. [ImageMagick] Générer une image à partir de plusieurs images ?
    Par fichtre! dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 16/02/2005, 16h32

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