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

Optimisations SGBD Discussion :

Tables imbriquées VS Tables traditionnelles


Sujet :

Optimisations SGBD

  1. #1
    Membre régulier
    Homme Profil pro
    Analyste
    Inscrit en
    Août 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste
    Secteur : Services de proximité

    Informations forums :
    Inscription : Août 2003
    Messages : 85
    Points : 87
    Points
    87
    Par défaut [Réglé]Tables imbriquées VS Tables traditionnelles
    Bonjour,

    J'ai vu qu'il est possible de créer des tables imbriquées dans de nombreux SGBD.
    L'exemple typique que j'ai trouvé est la commande avec ses lignes de commande.
    Ma question est la suivante :
    Est-il préférable d'utiliser cette technique de table imbriquée ou est-ce préférable d'utiliser la bonne vieille technique. C'est à dire créer une relation entre la table commande et ligne de commande ?

    En gros ce que j'aimerais savoir c'est les avantages et inconvénient des tables imbriqué.

    Merci de votre aide.
    Startout
    Air startout

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 270
    Points : 342
    Points
    342
    Par défaut
    Avec les table imbriquées, dans l'exemple commandes lignes de commandes, cela peut être galère de faire une simple statistique de vente sur un produit, en tout cas cela ne sera plus une jointure toute bête.

    L'avantage des tables imbriquées peut être un avantage de performance quand on en est à compter les io et les milliemes de secondes. Quand on en est à compter les io, les tables en cluster (option de stockage) fonctionne presque aussi vite.
    Par ailleurs, cela simplifie la vie quand on fait du dev objet et qu'on utilise le sgbd d'une façon un peu dégradée. ("tu comprends, aller chercher les produits d'une commande, c'est du métier, pas de la persistance, il faut donc le coder en java.net pour que cela s'execute sur le serveur d'application et pas sur le sgbd " j'exagère, mais pas beaucoup).

    Personnelement, je ne l'ai laissé utiliser qu'une fois lors d'une recherche éperdue de performances. Je ne suis pas persuadé que le jeu en vallait la chandelle, le gain, sans être négligeable, était peut être superflux. Mais c'est fait...

    Bref, si tu ne sais pas à quoi cela pourrait te servir, c'est probablement parce que cela ne te servira pas.

  3. #3
    Membre régulier
    Homme Profil pro
    Analyste
    Inscrit en
    Août 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste
    Secteur : Services de proximité

    Informations forums :
    Inscription : Août 2003
    Messages : 85
    Points : 87
    Points
    87
    Par défaut
    Merci bp.
    Je vais tester mais pas trop insister la-dessus.
    Garder en mémoire cette possibilité sans plus.
    Air startout

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 577
    Points
    52 577
    Billets dans le blog
    5
    Par défaut
    Contrairement à ce qui vous a été dit, les "tables imbriquées" en fait une colonne de type table, n'est franchement pas optimal sauf dans de très rares cas.

    En effet le seul cas pour lequel cela peut être un gain, c'est le cas dans lequel la colonne table est systématiquement toujours lues dans toutes les requêtes portant sur la table. Or dans votre exemple c'est loin d'être le cas.

    Il faut comprendre que les SGBDR travaillent exclusivement en mémoire. En principe il ne devrait jamais y avoir lecture du disque, mais simplement les écritures. Malheureusement les mémoires vives ne sont pas infinies.
    Or en "gonflant" artificiellement votre table en y imbriquant une autre, vous augmentez le volume de chaque ligne, donc le volume de la table et par conséquent à mémoire constante vous diminuez la mise en cache des données dans la RAM !

    De fait, vous arriverez tôt ou tard avec cette conception à une optimisation bien moindre que la forme classique, par le simple fait qu'il faudra paginer plus (entre la RAM et le disque) pour lire moins...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/08/2011, 20h03
  2. Réponses: 11
    Dernier message: 20/11/2008, 18h08
  3. Probleme Tables Imbriquées(Nested Tables)
    Par lemagicien dans le forum SQL
    Réponses: 1
    Dernier message: 21/03/2007, 16h02
  4. Réponses: 19
    Dernier message: 23/12/2004, 12h01
  5. Accéder au contenu d'une table imbriquée
    Par scott_tiger dans le forum Oracle
    Réponses: 18
    Dernier message: 22/12/2004, 21h01

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