Architecture IBM i

QUERY/400, est un outils (orienté utilisateurs) d'extraction de données.

Vos requêtes sont mémorisées dans des objets *QRYDFN

voici, les différentes étapes de QUERY :

la première vous permet de choisir un fichier :

Vous pourrez aussi choisir les champs à afficher sur l'état (la numérotation indique l'ordre sur la ligne d'impression)



et bien sûr, choisir les enregistrements

Aujourd'hui IBM préconise l'utilisation de SQL (DDL) pour concevoir la base de données.

 

  • Les dernières modifications importantes de SDD datent de la V2R11 (1992 de mémoire...), sont mineures ensuite.
    • variables dates/heures , valeur nulle (V2)
    • support UNICODE (V5)
    • PAGESIZE sur CRTLF (V5)
    • Support disques SSD (V6)
    • paramètre KEEPINMEM (V7)

  • Toutes les autres avancées sont liées à SQL
    • Nouveaux types
      • Dates/Heures et valeur nulle sont intégrés au SQL de base
      • BLOB /CLOB (champs images, PDF)
        • OmniFind sait indexer de tels champs
      • DATALINK
        • champs de type URL avec possibilité de contrôle de l'existence du fichier dans l'IFS.
      • NCHAR
      • DECFLOAT
      • ROWID
      • zones auto-incrémentées (AS IDENTITY)
      • SEQUENCES
      • attribut HIDDEN
        • cette colonne est cachée par défaut (SELECT * FROM ... ne la montre pas)
      • attribut AS ROW CHANGE TIMESTAMP
        • ce TIMESTAMP contient automatiquement date/heure de dernière modification.
      • XML
    • Intégrité référentielle directement définie avec la table (syntaxe SQL)
    • Index EVI pour le BI
    • FIELDPROC pour crypter les données
    • TRIGGER à la colonne

       

    Attention à la terminologie


    Quels sont les avantages de SQL pour la création de tables

    • plus de types de données disponibles, nous venons de le voir
    • les contraintes sont définies dans le même source, le même langage
      CREATE TABLE clients 
      (nocli dec(6 , 0) primary key , 
       raisoc char(25) 
       ) ;
      CREATE TABLE commandes 
      ( nocde dec(8 , 0) PRIMARY KEY, 
        nocli dec(6 , 0) REFERENCES clients, 
        datcde DATE, 
        datliv DATE, 
        check (datliv > datcde + 1 day) 
      ) ;
    • noms plus longs
      • 30 c. pour les noms de zone
      • 128c pour les noms de table
        CREATE TABLE clients 
        (numero_client for nocli dec(6 , 0) primary key , 
         raison_sociale for raisoc char(25) 
         ) ;
    • lectures plus rapides

      En effet, pour des raisons historiques (fichiers décrits en internes) les fichiers créés par SDD ne controlent pas la données insérée.
      (il est ainsi possible de stocker "ABC" dans une zone numérique, si vous utilisez des spécifs O en RPG).

      En contrepartie, lors de l'utilisation de ces fichier sur un mode externe ou par SQL la donnée est controlée lors de la lecture,
        d'où une perte de temps (nous réalisons en général plus d electures que d'écritures sur nos bases)


    • Historiquement, journalisation automatique. Désormais nous pouvons utiliser STRJRNLIB

    • Possibilité d'utiliser des outils de modélisation (IBM Infosphere Data Architect, Mega Database Builder ou XCASE, par exemple)

     

    Quels sont les avantages de SQL pour la création d'index (vs LF)

    • Choix du type :
      • B-arbre
      • EVI Encoded Vector Index, contenant des infos statistiques
      • (des index Bitmap peuvent aussi être utilisés par le moteur, mais de manière temporaire uniquement)
    • Pages de 64 K
      • Ces index à larges pages sont plus efficaces lors de manipulation de volumes
      • les indexs créés par SDD ont des pages de 8k plus efficaces pour recherche une donnée unitaire (CHAIN en RPG)
    • Depuis la V6, les index peuvent avoir
      • une clé composée
        CREATE INDEX clienti5 ON CLIENTS ( UPPER(raisoc) ) ; 

        CREATE INDEX commandei3 ON COMMANDES ( QTE * PRIX ) ;

      • une sélection
        CREATE INDEX clienti6 ON CLIENTS ( nocli ) 
        where raisoc <> ' ' and nocli > 1 ;

      • un format particulier
        CREATE INDEX clienti8 ON TEST/CLIENTS ( nocli )  
        RCDFMT clientf8 add raisoc ; -- en plus de la clé

    Quels sont les avantages de SQL pour la création de vue (vs LF)

    • Beaucoup plus de puissance
      • une vue peut avoir une jointure interne et les autres externes gauche
      • une vue peut retourner des données agrégées (GROUP BY, GROUP BY ROLLUP)
      • une vue peut avoir une sélection utilisant toute la puissance du WHERE SQL (CASE par exemple)
      • une vue peut utiliser une fonction "maison" c.a.d une UDF
        CREATE VIEW clientv8 AS   
        (select nocli, raisoc, dispo(nocli)
        from clients) ;
      • une vue peut utiliser une UDTF (fonction retournant une table à partir de données non BdeD)
        CREATE VIEW lesfacturesPDF AS   
        (select * FROM TABLE (litrepertoire('/PDF') as PDF);