SlideShare una empresa de Scribd logo
1 de 77
Gegevensbanken 2010 Query-verwerking en optimalisatie Bettina Berendt www.cs.kuleuven.be/~berendt
Query-verwerking en optimalisatie :  Motivatie & Samenvatting
Waar zijn we? indexing II and higher-dimensional structures Les Nr. wie wat 1 ED intro, ER 2 ED EER 3 ED relational model 4 ED mapping EER2relational 5 KV relational algebra, relational calculus 6 KV SQL 7 KV vervolg SQL 8 KV demo Access, QBE, JDBC 9 KV functional dependencies and normalisation 10 KV functional dependencies and normalisation 11 BB file structures and hashing 12 BB indexing I 13 BB 14 BB query processing 15 BB transactions 16 BB query security 17 BB Data warehousing and mining 18 ED XML, oodb, multimedia db Fysisch model / vragen
A. Wat is slimmer? ,[object Object],[object Object],[object Object],X σ   emp.SSN = project.leader.SSN π   emp.empname, project.projectname σ   emp.income > 1000000 emp project join  emp.SSN = project.leaderSSN emp σ   emp.income > 1000000 project π   emp.empname, project.projectname
B. Wat helpt daarbij? join  emp.SSN = project.leaderSSN emp σ   emp.income > 1000000 project π   emp.empname, project.projectname
C. Waar moeten we op letten? blokkentransport ! join  emp.SSN = project.leaderSSN emp σ   emp.income > 1000000 project π   emp.empname, project.projectname
Agenda Overzicht Implementatie van operaties uit relationele algebra Heuristische optimalisatie Systematische optimalisatie d.m.v. kostenschattingen Semantische query-optimalisatie
Agenda Overzicht Implementatie van operaties uit relationele algebra Heuristische optimalisatie Systematische optimalisatie d.m.v. kostenschattingen Semantische query-optimalisatie
Overzicht van queryverwerking ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Query-optimalisatie ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Agenda Overzicht Implementatie van operaties uit relationele algebra Heuristische optimalisatie Systematische optimalisatie d.m.v. kostenschattingen Semantische query-optimalisatie
Omzetting SQL    relationele algebra ,[object Object],[object Object],[object Object]
Voorbeeld van conversie SELECT  Lname, Fname FROM   EMPLOYEE WHERE   Salary >( SELECT   MAX(Salary) FROM   EMPLOYEE WHERE   Dno = 5 ); c :=  F   MAX Salary (    Dno = 5 (EMPLOYEE))  Lname, Fname (    Salary > c (EMPLOYEE))
Implementatie van operaties uit de relationele algebra ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Sorteren ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
a e c i o x y u n p e h b q t z i d f n s k x i p w j q n e r h c p k c h k p r  e j n p q w f i k n s x b d i q t z e h n p u y a c e i o x a b c d e e h i i   n  o p q t u x y z c e f h i j   k  k n n p p q r s w x a b c c d e e e f h i i i j  ...  splits sorteer meng meng buffer (tijdelijk) bestand r h c p k  p w j q n e f n s k x i b q t z i d y u n p e h a e c i o x
 
Complexiteit - sorteerfase ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Complexiteit: Mengfase, totaal ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],in1 uit in3 in2 buffer
Selectie ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
optimalisatie van selectie ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Join ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Implementatiemethodes voor Join ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
 
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
optimalisatie van joins ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
EMPLOYEE RESULTAAT DEPARTMENT EMPLOYEE in buitenste lus : Elk blok wordt 1 x gelezen:  2 000 DEPARTMENT in binnenste lus: elk blok wordt telkens opnieuw gelezen bij volgende uitvoering van buitenste lus:   400 x 10 =  4 000 Totaal gelezen blokken:    6 000 b D  = 10 b E  = 2000
DEPARTMENT RESULTAAT EMPLOYEE DEPARTMENT in buitenste lus: elk blok wordt 1 x gelezen:  10 EMPLOYEE in binnenste lus: elk blok wordt telkens opnieuw gelezen bij volgende uitvoering van buitenste lus:   2 x 2 000 =  4 000 Totaal gelezen blokken:   4 010 b D  = 10 b E  = 2000
EMPLOYEE RESULTAAT DEPARTMENT EMPLOYEE in buitenste lus : elk blok wordt 1 x gelezen:  2 000 DEPARTMENT in binnenste lus: elk blok wordt telkens opnieuw gelezen bij volgende uitvoering van buitenste lus:   2 000 x 10 =  20 000 Totaal gelezen blokken:    22 000 b D  = 10 b E  = 2000 Ter vergelijking: slechts 1 buffer reserveren voor buitenste lus :
DEPARTMENT RESULTAAT EMPLOYEE DEPARTMENT in buitenste lus: elk blok wordt 1 x gelezen:  10 EMPLOYEE in binnenste lus: elk blok wordt telkens opnieuw gelezen bij volgende uitvoering van buitenste lus:   10 x 2 000 =  20 000 Totaal gelezen blokken:   20 010 b D  = 10 b E  = 2000
optimalisatie van joins ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Voorbeeld (5): de diagrammen als formules ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
R S 1 3 2 4 1 4 3 2 alle records r van R met h(r.A)=4 alle records s van S met h(s.B)=4 hash hash 1 4 3 2
[object Object],[object Object],[object Object],[object Object],[object Object]
Projectie ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
 
Verzameling-operaties ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
T    R    S T    R    S T    R S
Aggregatie-operaties ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Aggregatie-operaties ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Outer join ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Operaties combineren met pijplijnen ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Agenda Overzicht Implementatie van operaties uit relationele algebra Heuristische optimalisatie Systematische optimalisatie d.m.v. kostenschattingen Semantische query-optimalisatie
Herhaling:  A. Wat is slimmer? ,[object Object],[object Object],[object Object],X σ   emp.SSN = project.leader.SSN π   emp.empname, project.projectname σ   emp.income > 1000000 emp project join  emp.SSN = project.leaderSSN emp σ   emp.income > 1000000 project π   emp.empname, project.projectname
Heuristische optimalisatie ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
canonieke vorm: - geen joins, wel carth. prod - bovenaan: -   -  
Query-grafen ,[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Initiële boom
Verplaats selectie operaties naar beneden
Plaats meest restrictieve  selectie operaties eerst  Vervang carth. product door selectie en join operaties
Verplaats projecties naar beneden
Algemene transformatieregels ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Heuristieken: algemeen ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Heuristiken ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Uitvoeringsplan ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
SELECT   Fname, Lname, Address FROM   EMPLOYEE, DEPARTMENT WHERE Dname = ‘Research’ AND Dnumber = DNO ; Voorbeeld van uitvoeringsplan voor query Q1: Gebruik index voor selectie op  DEPARTEMENT (als die bestaat) Gebruik geneste lussen voor join, (maar buitenste lus slechts 1-maal!) doorloop daarbij volledig  EMPLOYEE bestand Doorloop resultaat van join  voor projectie
Agenda Overzicht Implementatie van operaties uit relationele algebra Heuristische optimalisatie Systematische optimalisatie d.m.v. kostenschattingen Semantische query-optimalisatie
Systematische optimalisatie met kostenschattingen ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Agenda Overzicht Implementatie van operaties uit relationele algebra Heuristische optimalisatie Systematische optimalisatie d.m.v. kostenschattingen Semantische query-optimalisatie
[object Object],[object Object],[object Object],Semantische query-optimalisatie SELECT  E.Lname, M.Lname FROM   EMPLOYEE  AS  E, EMPLOYEE  AS  M WHERE   E.Super_ssn=M.Ssn  AND  E.Salery>M.Salary;
Vooruitblijk Overzicht Implementatie van operaties uit relationele algebra Heuristische optimalisatie Systematische optimalisatie d.m.v. kostenschattingen Semantische query-optimalisatie Transactieverwerking
Bronnen ,[object Object],[object Object],[object Object],[object Object]

Más contenido relacionado

Similar a Gegevensbanken 2010 les14

Software Engineering College 2 - ETL and databases
Software Engineering College 2 - ETL and databasesSoftware Engineering College 2 - ETL and databases
Software Engineering College 2 - ETL and databasesJurjen Helmus
 
Twig in drupal 8
Twig in drupal 8Twig in drupal 8
Twig in drupal 8dropsolid
 
Software Engineering College 5 -managing data
Software Engineering College 5 -managing dataSoftware Engineering College 5 -managing data
Software Engineering College 5 -managing dataJurjen Helmus
 
Edit a-thon invulboek objecten op cest
Edit a-thon invulboek objecten op cestEdit a-thon invulboek objecten op cest
Edit a-thon invulboek objecten op cestPACKED vzw
 
Meetup DB testing met SoapUI en Robot Framework.pdf
Meetup DB testing met SoapUI en Robot Framework.pdfMeetup DB testing met SoapUI en Robot Framework.pdf
Meetup DB testing met SoapUI en Robot Framework.pdfchristiantester
 
Lucius Drupal Development Cursus
Lucius Drupal Development CursusLucius Drupal Development Cursus
Lucius Drupal Development CursusLuciuswebsystems
 
Kennismaking Met Puppet
Kennismaking Met PuppetKennismaking Met Puppet
Kennismaking Met Puppetwphaver
 
2 Cyclischeelementeninvragenlijsten
2 Cyclischeelementeninvragenlijsten2 Cyclischeelementeninvragenlijsten
2 CyclischeelementeninvragenlijstenJohan Smits
 
Functionele afhankelijkheden en normalisatie
Functionele afhankelijkheden en normalisatieFunctionele afhankelijkheden en normalisatie
Functionele afhankelijkheden en normalisatieKatrien Verbert
 
Software Engineering College 4 - exploring data
Software Engineering College 4 - exploring dataSoftware Engineering College 4 - exploring data
Software Engineering College 4 - exploring dataJurjen Helmus
 
TU/e - Back to the TYPO3 CMS basics
TU/e - Back to the TYPO3 CMS basicsTU/e - Back to the TYPO3 CMS basics
TU/e - Back to the TYPO3 CMS basicsPatrick Broens
 
Niet onderhoudbare software in 10 makkelijke stappen
Niet onderhoudbare software in 10 makkelijke stappenNiet onderhoudbare software in 10 makkelijke stappen
Niet onderhoudbare software in 10 makkelijke stappenRick Beerendonk
 
App academy - Parse
App academy - ParseApp academy - Parse
App academy - ParseTiman Rebel
 
Pembertons gelijk
Pembertons gelijkPembertons gelijk
Pembertons gelijkDino Seelig
 

Similar a Gegevensbanken 2010 les14 (20)

Software Engineering College 2 - ETL and databases
Software Engineering College 2 - ETL and databasesSoftware Engineering College 2 - ETL and databases
Software Engineering College 2 - ETL and databases
 
Gegevensbanken 2010 Les11
Gegevensbanken 2010 Les11Gegevensbanken 2010 Les11
Gegevensbanken 2010 Les11
 
Twig in drupal 8
Twig in drupal 8Twig in drupal 8
Twig in drupal 8
 
Software Engineering College 5 -managing data
Software Engineering College 5 -managing dataSoftware Engineering College 5 -managing data
Software Engineering College 5 -managing data
 
Edit a-thon invulboek objecten op cest
Edit a-thon invulboek objecten op cestEdit a-thon invulboek objecten op cest
Edit a-thon invulboek objecten op cest
 
Edit-a-thon invulboek objecten op cest
Edit-a-thon invulboek objecten op cestEdit-a-thon invulboek objecten op cest
Edit-a-thon invulboek objecten op cest
 
SQL
SQLSQL
SQL
 
Meetup DB testing met SoapUI en Robot Framework.pdf
Meetup DB testing met SoapUI en Robot Framework.pdfMeetup DB testing met SoapUI en Robot Framework.pdf
Meetup DB testing met SoapUI en Robot Framework.pdf
 
Lucius Drupal Development Cursus
Lucius Drupal Development CursusLucius Drupal Development Cursus
Lucius Drupal Development Cursus
 
Kennismaking Met Puppet
Kennismaking Met PuppetKennismaking Met Puppet
Kennismaking Met Puppet
 
2 Cyclischeelementeninvragenlijsten
2 Cyclischeelementeninvragenlijsten2 Cyclischeelementeninvragenlijsten
2 Cyclischeelementeninvragenlijsten
 
Functionele afhankelijkheden en normalisatie
Functionele afhankelijkheden en normalisatieFunctionele afhankelijkheden en normalisatie
Functionele afhankelijkheden en normalisatie
 
Software Engineering College 4 - exploring data
Software Engineering College 4 - exploring dataSoftware Engineering College 4 - exploring data
Software Engineering College 4 - exploring data
 
Symfony and Angularjs
Symfony and AngularjsSymfony and Angularjs
Symfony and Angularjs
 
TU/e - Back to the TYPO3 CMS basics
TU/e - Back to the TYPO3 CMS basicsTU/e - Back to the TYPO3 CMS basics
TU/e - Back to the TYPO3 CMS basics
 
Les4
Les4Les4
Les4
 
Niet onderhoudbare software in 10 makkelijke stappen
Niet onderhoudbare software in 10 makkelijke stappenNiet onderhoudbare software in 10 makkelijke stappen
Niet onderhoudbare software in 10 makkelijke stappen
 
Cooking Cake
Cooking CakeCooking Cake
Cooking Cake
 
App academy - Parse
App academy - ParseApp academy - Parse
App academy - Parse
 
Pembertons gelijk
Pembertons gelijkPembertons gelijk
Pembertons gelijk
 

Gegevensbanken 2010 les14

  • 1. Gegevensbanken 2010 Query-verwerking en optimalisatie Bettina Berendt www.cs.kuleuven.be/~berendt
  • 2. Query-verwerking en optimalisatie : Motivatie & Samenvatting
  • 3. Waar zijn we? indexing II and higher-dimensional structures Les Nr. wie wat 1 ED intro, ER 2 ED EER 3 ED relational model 4 ED mapping EER2relational 5 KV relational algebra, relational calculus 6 KV SQL 7 KV vervolg SQL 8 KV demo Access, QBE, JDBC 9 KV functional dependencies and normalisation 10 KV functional dependencies and normalisation 11 BB file structures and hashing 12 BB indexing I 13 BB 14 BB query processing 15 BB transactions 16 BB query security 17 BB Data warehousing and mining 18 ED XML, oodb, multimedia db Fysisch model / vragen
  • 4.
  • 5. B. Wat helpt daarbij? join emp.SSN = project.leaderSSN emp σ emp.income > 1000000 project π emp.empname, project.projectname
  • 6. C. Waar moeten we op letten? blokkentransport ! join emp.SSN = project.leaderSSN emp σ emp.income > 1000000 project π emp.empname, project.projectname
  • 7. Agenda Overzicht Implementatie van operaties uit relationele algebra Heuristische optimalisatie Systematische optimalisatie d.m.v. kostenschattingen Semantische query-optimalisatie
  • 8. Agenda Overzicht Implementatie van operaties uit relationele algebra Heuristische optimalisatie Systematische optimalisatie d.m.v. kostenschattingen Semantische query-optimalisatie
  • 9.
  • 10.
  • 11.
  • 12. Agenda Overzicht Implementatie van operaties uit relationele algebra Heuristische optimalisatie Systematische optimalisatie d.m.v. kostenschattingen Semantische query-optimalisatie
  • 13.
  • 14. Voorbeeld van conversie SELECT Lname, Fname FROM EMPLOYEE WHERE Salary >( SELECT MAX(Salary) FROM EMPLOYEE WHERE Dno = 5 ); c := F MAX Salary (  Dno = 5 (EMPLOYEE))  Lname, Fname (  Salary > c (EMPLOYEE))
  • 15.
  • 16.
  • 17.
  • 18. a e c i o x y u n p e h b q t z i d f n s k x i p w j q n e r h c p k c h k p r e j n p q w f i k n s x b d i q t z e h n p u y a c e i o x a b c d e e h i i n o p q t u x y z c e f h i j k k n n p p q r s w x a b c c d e e e f h i i i j ... splits sorteer meng meng buffer (tijdelijk) bestand r h c p k p w j q n e f n s k x i b q t z i d y u n p e h a e c i o x
  • 19.  
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.  
  • 33.
  • 34.
  • 35. EMPLOYEE RESULTAAT DEPARTMENT EMPLOYEE in buitenste lus : Elk blok wordt 1 x gelezen: 2 000 DEPARTMENT in binnenste lus: elk blok wordt telkens opnieuw gelezen bij volgende uitvoering van buitenste lus: 400 x 10 = 4 000 Totaal gelezen blokken: 6 000 b D = 10 b E = 2000
  • 36. DEPARTMENT RESULTAAT EMPLOYEE DEPARTMENT in buitenste lus: elk blok wordt 1 x gelezen: 10 EMPLOYEE in binnenste lus: elk blok wordt telkens opnieuw gelezen bij volgende uitvoering van buitenste lus: 2 x 2 000 = 4 000 Totaal gelezen blokken: 4 010 b D = 10 b E = 2000
  • 37. EMPLOYEE RESULTAAT DEPARTMENT EMPLOYEE in buitenste lus : elk blok wordt 1 x gelezen: 2 000 DEPARTMENT in binnenste lus: elk blok wordt telkens opnieuw gelezen bij volgende uitvoering van buitenste lus: 2 000 x 10 = 20 000 Totaal gelezen blokken: 22 000 b D = 10 b E = 2000 Ter vergelijking: slechts 1 buffer reserveren voor buitenste lus :
  • 38. DEPARTMENT RESULTAAT EMPLOYEE DEPARTMENT in buitenste lus: elk blok wordt 1 x gelezen: 10 EMPLOYEE in binnenste lus: elk blok wordt telkens opnieuw gelezen bij volgende uitvoering van buitenste lus: 10 x 2 000 = 20 000 Totaal gelezen blokken: 20 010 b D = 10 b E = 2000
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45. R S 1 3 2 4 1 4 3 2 alle records r van R met h(r.A)=4 alle records s van S met h(s.B)=4 hash hash 1 4 3 2
  • 46.
  • 47.
  • 48.  
  • 49.
  • 50. T  R  S T  R  S T  R S
  • 51.
  • 52.
  • 53.
  • 54.
  • 55. Agenda Overzicht Implementatie van operaties uit relationele algebra Heuristische optimalisatie Systematische optimalisatie d.m.v. kostenschattingen Semantische query-optimalisatie
  • 56.
  • 57.
  • 58. canonieke vorm: - geen joins, wel carth. prod - bovenaan: -  - 
  • 59.
  • 60.
  • 63. Plaats meest restrictieve selectie operaties eerst Vervang carth. product door selectie en join operaties
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71. SELECT Fname, Lname, Address FROM EMPLOYEE, DEPARTMENT WHERE Dname = ‘Research’ AND Dnumber = DNO ; Voorbeeld van uitvoeringsplan voor query Q1: Gebruik index voor selectie op DEPARTEMENT (als die bestaat) Gebruik geneste lussen voor join, (maar buitenste lus slechts 1-maal!) doorloop daarbij volledig EMPLOYEE bestand Doorloop resultaat van join voor projectie
  • 72. Agenda Overzicht Implementatie van operaties uit relationele algebra Heuristische optimalisatie Systematische optimalisatie d.m.v. kostenschattingen Semantische query-optimalisatie
  • 73.
  • 74. Agenda Overzicht Implementatie van operaties uit relationele algebra Heuristische optimalisatie Systematische optimalisatie d.m.v. kostenschattingen Semantische query-optimalisatie
  • 75.
  • 76. Vooruitblijk Overzicht Implementatie van operaties uit relationele algebra Heuristische optimalisatie Systematische optimalisatie d.m.v. kostenschattingen Semantische query-optimalisatie Transactieverwerking
  • 77.