410 likes | 613 Views
DB2 Connect gebruik in een Microsoft omgeving . Marc Cobbaert. Agenda. SD Worx en haar DB2 achtergrond Huidige applicatie architectuur DB2 Connect opstelling Dynamic statement cache NIET: beveiligings- en applicatie aspecten. Situering SD Worx.
E N D
DB2 Connect gebruik in een Microsoft omgeving Marc Cobbaert
Agenda • SD Worx en haar DB2 achtergrond • Huidige applicatie architectuur • DB2 Connect opstelling • Dynamic statement cache • NIET: beveiligings- en applicatie aspecten
Situering SD Worx • Sociaal secretariaat : dienstverlening op het vlak van loonadministratie en HR • Voor KMO, Grote ondernemingen en de publieke sector • Meer en meer internationaal georiënteerd • Consultancy op vlak van HR, Tax & Legal, Rekrutering & Assessment, …. • Kenniscentrum (marktstudies)
ICT omgeving van SD Worx • 2 centrale datacenters in Antwerpen • IBM mainframe Z9 BC X02 – z/OS 1.7 • Windows 2003 gebaseerde decentrale servers (Windows cluster, VMWare, blades) • Synchrone datareplicatie voor beide omgevingen
DB2 historiek bij SD Worx • DB2 gebruiker sinds 2001 • gestart met DB2 V7 • COBOL batch op het mainframe • Dynamic sql vanuit een Windows omgeving • RDBMS ervaringen met decentrale toepassingen op Oracle of MS Sql Server • IDMS op mainframe
Een paar DB2 mijlpalen … • mei 2001 begin installatie • aug. 2001 start in produktie • feb. 2002 eerste produktie applicaties • april 2002 synchronisatie data tss. IDMS en DB2 via MQ • maart 2003 activering RLF • juni 2003 Detector testen
Een paar DB2 mijlpalen … • Aug. 2003 Gebruik realtime statistics • Juni 2004 Extra accounting attributen • Okt. 2004 eerste SP gebruik (COBOL) • Apr. 2005 aanschaf Detector • Aug. 2005 SMS managed tablespaces • Nov. 2007 Websphere Replication Server for z/OS V9
DB2 Connect historiek bij SD Worx • 2001: DB2 Connect V7 (9 fixpacks) • MDAC 2.x, ODBC, OLEDB, ADO,.NET 1.0 • 2004: DB2 Connect V8 (5 fixpacks) • ADO, ADO.NET, .NET V2.0 • 2006: DB2 Connect V9 (2 fixpacks) • ADO.NET, .NET V2.0, V3.0
Applicatie architectuur • 3-tier applicaties gebaseerd op Microsoft technologie • Web based applications • Component based development (MTS/COM, COM+/.NET) • Transaction monitor applications (COM+, MSDTC) • XA-compliant resource manager dankzij DB2Connect
COM+ component services • COM + voorziet in runtime services voor components ‘at runtime’ : • Administration : MS Mgt Console Component Services Explorer (catalog) • JITA : just-in-time activation (component activation/deactivation) • Object pooling • Transacties : distributed component acties als 1 transactie gegroepeerd (OleTX/XA)
COM+ Component Services • Synchronization: controle over concurrent access naar objecten • Role based security • Queued components: asynchrone communicatie tussen componenten • Events: signalisatie tussen componenten via publsh-subscribe mechanisme
Architectuur • DB2 CLI API, noch ODBC of OLEDB worden rechtstreeks aangesproken • MS-ADO interface wordt hiervoor gebruikt • ADO is een object oriented data acess interface bovenop OLE-DB • ADO is geëvolueerd naar ADO.NET die voorziet in zogenaamde managed data provider
SD WORX ervaring • Integratie tussen Microsoft en IBM DB2 is sterk verbeterd en stabieler geworden • Integratie in ontwikkelomgeving • Eénduidige IBM DB2 .NET dataprovider • Snelle evolutie in .NET blijft een aandachtspunt (.NET 3.0, 3.5, ondersteuning LTM) • Performance aspect kan onder controle gehouden worden, maar is constant aandachtspunt (zie verder)
DB2 Connecties onderdelen • Het netwerk (TCP/IP meestal) • DB2 Clients (CLI, ODBC,OLEDB, DB2 .NET data providers) • DB2 Connect server • DB2 z/OS (DDF – netwerk connectiviteit / DBM1 database access threads) • WLM Service classes en classification rules
DISPLAY THREAD • DISPLAY THREAD(*) • Pooled DBAT • NAME = DISCONN / STATUS = DA • DISPLAY THREAD(*) TYPE(INACTIVE) • Inactieve CONNECTIE informatie • NAME = SERVER / STATUS =R2 • DISPLAY DDF DETAIL • DISPLAY LOC(*) DETAIL
Caching • Dynamic sql processing bevat 2 stappen : • Prepare • Execute • Prepare kan een zware operatie vormen : • Parsen van SQL statement • Valideren van de SQL syntax • Cataloog access (tabellen, kolommen, privileges) • Aanmaak access pad • Aanmaak uitvoer statement
Local Caching • 4 vormen van caching : geen, local en global dynamic cache, full caching • Zonder caching betaal je telkens prepare kost voor iedere statement (CPU en IO) • Local cache : activering door BIND optie KEEPDYNAMIC(YES) – thread gebonden
Global Caching • Global caching in de EDM POOL : DSNZPARM CACHEDYN=YES • Alle DML die expliciet geprepared worden of aangeboden via EXECUTE IMMEDIATE • Exacte SQL string matching en AUTHID • Gebruik van parameter markers • Consistente BIND opties bv. CURRENTDATA, ISOLATION, QUALIFIER
Full Caching • Combinatie van local en global caching • KEEPDYNAMIC(YES) • MAXKEEPD > 0 • CACHEDYN=YES
Types Prepare • Full prepare: normaal geval bv. zonder caching • Short prepare : skeleton copy of prepared statement gekopieerd naar local storage • Avoided prepare : omwille van full caching • Implicit prepare : DB2 voert impliciet prepare uit ten behoeve van applicatie (na COMMIT)
DB2 en de Workload Manager • WLM bepaalt de prioriteiten en kent resources toe (CPU, I/O, memory) • WLM definities • Binnenkomend werk (bv. DDF thread) krijgt service class toegewezen op basis van classificatie regels • Een service class kan ingedeeld worden in perioden (inactive threads) • Binnen een periode kunnen tegen een bepaalde prioriteit gelimiteerde resources verbruikt worden • Dit kan beschermen tegen runaway queries
WLM Enclaves • DDF threads worden uitgevoerd als enclave SRBs onder controle van WLM • DDF classificatie binnen WLM is belangrijk om correcte thread priority te zetten • Enclave creatie en vernietiging afhankelijk van CMTSTAT instelling • Bij INACTIVE, wordt thread aangemaakt wanneer eerste SQL wordt ontvangen
WLM Enclaves • Bij ACTIVE wordt enclave aangemaakt wanneer DBAT wordt aangemaakt • Enclave verdwijnt bij INACTIVE bij COMMIT/ROLLBACK indien RELEASE(COMMIT) • Enclave verdwijnt bij ACTIVE wanneer thread verdwijnt • INACTIVE thread kan multi-period response time of velocity goals gebruiken
WLM Enclaves • Bij ACTIVE kan enkel 1 periode velocity goal gebruikt worden • Accounting info bij ACTIVE instelling, enkel wanneer thread eindigt • Accounting info bij INACTIVE instelling op moment van COMMIT/ROLLBACK (met KEEPDYNAMIC(YES) in V8)
Diverse instellingen : decentraal • Db2connect pooling (zie eerder) • Max. agents / max. coordinating agenst • Timeouts: applicatie/db2connect, client/db2connect server • CONNECTTYPE/DISABLEMULTITHREAD/SYNCPOINT MTS/COM+ • CURSORHOLD=NO • NT performance monitoring DB2CONNECT_IN_APP_PROCESS=NO • DB2_ENABLE_LDAP=N (snellere connect)