SQL PL als programmeertaal – Onze ervaringen

45
SQL PL als programmeertaal – Onze ervaringen GSE Nationale Conferentie NL – 13/10/2011 – Almere Steven Scheldeman ABIS Training & Consulting www.abis.be [email protected]

Transcript of SQL PL als programmeertaal – Onze ervaringen

Page 1: SQL PL als programmeertaal – Onze ervaringen

SQL PL als programmeertaal – Onzeervaringen

GSE Nationale Conferentie NL – 13/10/2011 – Almere

Steven Scheldeman

ABIS Training & [email protected]

Page 2: SQL PL als programmeertaal – Onze ervaringen

Een Situatieschets• ACCA (ABIS Client & Course Administration)

• ISPF Dialog Manager & COBOL

• 20 jaar programmatie=> voortdurende (kleine) aanpassingen

• Vele kleine DB2 queries

• GUI-logica verweven met business-logica

Page 3: SQL PL als programmeertaal – Onze ervaringen

Een Situatieschets• ACCA (ABIS Client & Course Administration)

• ISPF Dialog Manager & COBOL

• 20 jaar programmatie=> voortdurende (kleine) aanpassingen

• Vele kleine DB2 queries

• GUI-logica verweven met business-logica

Page 4: SQL PL als programmeertaal – Onze ervaringen

Een Situatieschets• ACCA (ABIS Client & Course Administration)

• ISPF Dialog Manager & COBOL

• 20 jaar programmatie=> voortdurende (kleine) aanpassingen

• Vele kleine DB2 queries

• GUI-logica verweven met business-logica

Page 5: SQL PL als programmeertaal – Onze ervaringen

Een Situatieschets• ACCA (ABIS Client & Course Administration)

• ISPF Dialog Manager & COBOL

• 20 jaar programmatie=> voortdurende (kleine) aanpassingen

• Vele kleine DB2 queries

• GUI-logica verweven met business-logica

Page 6: SQL PL als programmeertaal – Onze ervaringen

Een Situatieschets• ACCA (ABIS Client & Course Administration)

• ISPF Dialog Manager & COBOL

• 20 jaar programmatie=> voortdurende (kleine) aanpassingen

• Vele kleine DB2 queries

• GUI-logica verweven met business-logica

Page 7: SQL PL als programmeertaal – Onze ervaringen

Een Situatieschets• ACCA (ABIS Client & Course Administration)

• ISPF Dialog Manager & COBOL

• 20 jaar programmatie=> voortdurende (kleine) aanpassingen

• Vele kleine DB2 queries

• GUI-logica verweven met business-logica

Page 8: SQL PL als programmeertaal – Onze ervaringen

Een Situatieschets• ACCA (ABIS Client & Course Administration)

• ISPF Dialog Manager & COBOL

• 20 jaar programmatie=> voortdurende (kleine) aanpassingen

• Vele kleine DB2 queries

• GUI-logica verweven met business-logica

Page 9: SQL PL als programmeertaal – Onze ervaringen

Een Situatieschets• ACCA (ABIS Client & Course Administration)

• ISPF Dialog Manager & COBOL

• 20 jaar programmatie=> voortdurende (kleine) aanpassingen

• Vele kleine DB2 queries

• GUI-logica verweven met business-logica

Page 10: SQL PL als programmeertaal – Onze ervaringen

Een Situatieschets• ACCA (ABIS Client & Course Administration)

• ISPF Dialog Manager & COBOL

• 20 jaar programmatie=> voortdurende (kleine) aanpassingen

• Vele kleine DB2 queries

• GUI-logica verweven met business-logica

Page 11: SQL PL als programmeertaal – Onze ervaringen

Een Situatieschets• ACCA (ABIS Client & Course Administration)

• ISPF Dialog Manager & COBOL

• 20 jaar programmatie=> voortdurende (kleine) aanpassingen

• Vele kleine DB2 queries

• GUI-logica verweven met business-logica

Page 12: SQL PL als programmeertaal – Onze ervaringen

Nieuwe noden, nieuwe aanpak

• ACCA => Administratie op z/OS

• Website

• Online registratie => MyAbis

=> Scheiding GUI / business-logica

Page 13: SQL PL als programmeertaal – Onze ervaringen

Nieuwe noden, nieuwe aanpak

• Business-logica=> Stored Procedure (DB2)

• Onafhankelijk van de GUI’s• Geen nood tot duplicatie• Platform / programmeertaal onafhankelijk

Page 14: SQL PL als programmeertaal – Onze ervaringen

COBOL of SQL PL?

• COBOL:• Code beschikbaar

=> te groot kluwen om rechtstreeks alsStored Procedure op te slaan

• Zéér vertrouwd=> interactie met DB2 goed gedocumenteerd=> code herschrijven voor de SP?=> COBOL niet “eigen aan” DB2

Page 15: SQL PL als programmeertaal – Onze ervaringen

COBOL of SQL PL?

• SQL PL:• Procedural Language

=> selectie, sequentie, iteratie=> evenveel werk als herschrijven in COBOL

• “eigen aan” DB2 versie 9=> toepasbaar op z/OS, LUW=> geen COBOL meer nodig

Page 16: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes• Parameters• Fouten-afhandeling• NULL-waarden• Security• Versioning• Cursors• Performance

Page 17: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen

• Compilatie

• SQLcodes• Parameters• Fouten-afhandeling• NULL-waarden• Security• Versioning• Cursors• Performance

Page 18: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen

• Compilatie

• SQLcodes• Parameters• Fouten-afhandeling• NULL-waarden• Security• Versioning• Cursors• Performance

COBOL: pre-compile & compile

SQL PL: Create Procedure => automatische “compilatie” => DB2 optimizer => SP & package

Page 19: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie

• SQLcodes• Parameters• Fouten-afhandeling• NULL-waarden• Security• Versioning• Cursors• Performance

Page 20: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie

• SQLcodes• Parameters• Fouten-afhandeling• NULL-waarden• Security• Versioning• Cursors• Performance

SQL code van de SP => slaat op uitvoering SP zelf => vertelt niets over de interne queries en SQL

Eigen RC-systeem (zie pt. 4)

Page 21: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes

• Parameters

• Fouten-afhandeling• NULL-waarden• Security• Versioning• Cursors• Performance

Page 22: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes

• Parameters

• Fouten-afhandeling• NULL-waarden• Security• Versioning• Cursors• Performance

Page 23: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes

• Parameters

• Fouten-afhandeling• NULL-waarden• Security• Versioning• Cursors• Performance

Alle I/O velden van het ISPF DialogManager Scherm moesten I/Oparameters worden van de SP

Page 24: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes

• Parameters

• Fouten-afhandeling• NULL-waarden• Security• Versioning• Cursors• Performance

Page 25: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes

• Parameters

• Fouten-afhandeling• NULL-waarden• Security• Versioning• Cursors• Performance

Alle I/O velden van het ISPF DialogManager Scherm moesten I/Oparameters worden van de SP

CRUDP-parameter

Page 26: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes

• Parameters

• Fouten-afhandeling• NULL-waarden• Security• Versioning• Cursors• Performance

Page 27: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes

• Parameters

• Fouten-afhandeling• NULL-waarden• Security• Versioning• Cursors• Performance

Alle I/O velden van het ISPF DialogManager Scherm moesten I/Oparameters worden van de SP

CRUDP-parameter

RC-systeem parameters

Page 28: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes• Parameters

• Fouten-afhandeling

• NULL-waarden• Security• Versioning• Cursors• Performance

Page 29: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes• Parameters

• Fouten-afhandeling

• NULL-waarden• Security• Versioning• Cursors• Performance

SP <=> Batch-programma

echte fout <=> verwachte exceptie

interne “fout”-verwerking zo extensiefmogelijk

Page 30: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes• Parameters

• Fouten-afhandeling

• NULL-waarden• Security• Versioning• Cursors• Performance

Page 31: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes• Parameters

• Fouten-afhandeling

• NULL-waarden• Security• Versioning• Cursors• Performance

SP <=> Batch-programma

echte fout <=> verwachte exceptie

interne “fout”-verwerking zo extensiefmogelijk

RC-systeem: => getal berekend => fout-boodschap uit tabel

Page 32: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes• Parameters

• Fouten-afhandeling

• NULL-waarden• Security• Versioning• Cursors• Performance

Page 33: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes• Parameters

• Fouten-afhandeling

• NULL-waarden• Security• Versioning• Cursors• Performance

Page 34: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes• Parameters• Fouten-afhandeling

• NULL-waarden

• Security• Versioning• Cursors• Performance

Page 35: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes• Parameters• Fouten-afhandeling

• NULL-waarden

• Security• Versioning• Cursors• Performance

Oproepende programmeertaal &omgaan met NULLs

Binnenkomende NULLs: => afhandeling door oproeper => afhandeling door SP !!

Uitgaande NULLs: => afhandeling door SP => afhandeling door oproeper !!

Page 36: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes• Parameters• Fouten-afhandeling• NULL-waarden

• Security

• Versioning• Cursors• Performance

Page 37: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes• Parameters• Fouten-afhandeling• NULL-waarden

• Security

• Versioning• Cursors• Performance

SP is DB2-object => onder controle van DBA => specifieke authorisaties

Page 38: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes• Parameters• Fouten-afhandeling• NULL-waarden• Security

• Versioning

• Cursors• Performance

Page 39: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes• Parameters• Fouten-afhandeling• NULL-waarden• Security

• Versioning

• Cursors• Performance

DB2 eigen versioning-mechanisme

Gekozen voor een manuele versioning => traditie: development / test => productie => “historische” kopie SP

Page 40: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes• Parameters• Fouten-afhandeling• NULL-waarden• Security• Versioning

• Cursors

• Performance

Page 41: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes• Parameters• Fouten-afhandeling• NULL-waarden• Security• Versioning

• Cursors

• Performance

Creatie en gebruik analoog aan COBOLcursors

Minder dynamisch dan PL/SQL

Omzetting COBOL – SQL PL cursors=> minimale aanpassingen

Gebruik identiek

Page 42: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes• Parameters• Fouten-afhandeling• NULL-waarden• Security• Versioning• Cursors

• Performance

Page 43: SQL PL als programmeertaal – Onze ervaringen

Aandachtspunten & Uitdagingen• Compilatie• SQLcodes• Parameters• Fouten-afhandeling• NULL-waarden• Security• Versioning• Cursors

• Performance

Ettelijke queries ter controle: => bedrijven => personen => facturatie => dagprijzen & wisselkoersen

Gigantisch veel data-I/O: => SP houdt dit binnen DB2

Page 44: SQL PL als programmeertaal – Onze ervaringen

Tot slot …SQL PL is geen “gadget”

– Business-logica omgezet naar volwaardigprogramma in SQL PL

– SQL PL bevat alle traditionele bouwstenen van eenprogrammeertaal

– Vergevorderde exception handling– Recursie mogelijk– Volwaardig gebruik van cursors– Data-I/O binnen DB2 => hoge performantie

Page 45: SQL PL als programmeertaal – Onze ervaringen

Vragen?

Steven ScheldemanABIS Training & Consulting

[email protected]+32(0)16/24 56 10

www.abis.be