|
drs Paul van Oordt MCITP-dba MCT Freelance SQL Server specialist gevestigd te Utrecht SQL Server werkzaamhedenHieronder staat meer informatie over de diverse deelgebieden van SQL Server waarop ik als freelancer opdrachten uitvoer. Zie ook mijn home page, curriculum vitae of LinkedIn profile.
databases ontwerpen en implementerenRelationeel modelleren is voor iedere databasespecialist een genoegen. Het omvat het maken van een genormaliseerd datamodel en het creëren van de objecten in een SQL Server database. Het gaat erom een structuur van tabellen en constraints te maken die de mogelijkheid heeft de data zonder redundantie of ongewenste afhankelijkheden op te slaan en waarbij data-integriteit maximaal gewaarborgd is. Ook performance kan daarbij al een aandachtspunt zijn, al is dat meestal volgens het principe: een goed gestructureerde database is een goed presterende database. "Daar is SQL Server voor gemaakt!" In talloze opdrachten die ik heb uitgevoerd komt datamodelleren en het implementeren van een database-structuur voor. Ook heb ik vele cursussen gegeven over Gegevensmodellering en het implementeren van SQL Server. T-SQL programmerenTransact-SQL, kortweg T-SQL, is de server-side programmeertaal voor SQL Server. Het is een uitgebreide, krachtige taal waarin de businesslogica van een database-applicatie geprogrammeerd kan worden, en die intensief wordt gebruikt bij datamigraties en soms bij ETL. T-SQL omvat naast de declaratieve SQL taal, en Microsofts uitbreidingen daarop, o.a. procedurele constructies en variabelen. T-SQL bevat ook een groot aantal voorgedefinieerde procedures en functies. Ik werk sinds 1999 met deze taal in vele opdrachten, waaronder enkele zeer omvangrijke. Daarvoor werkte ik al enige jaren met de tegenhanger van Oracle: PL/SQL. T-SQL bevat ook een geavanceerde ontwikkelomgeving: SQL Server Management Studio. Een goede T-SQL ontwikkelaar is allereerst in staat efficiënt complexe declaratieve SQL statements te schrijven, weet daarnaast wanneer aanvullende procedurele constructies nodig zijn, en heeft een grondige kennis van de primitieven van de taal. Een goede programmeur in welke taal dan ook werkt netjes en systematisch en kan zeer goed abstract denken. Programmeren lijkt makkelijk, en de eerste 80% is vaak ook makkelijk... Mijn academische studie toegepaste logica is aan het werk als programmeur niet vergooid. performance tuningHet is geen uitzondering dat een SQL-Server-toepassing na verloop van tijd niet meer naar tevredenheid presteert. Vaak wordt dan zonder nadere analyse nieuwe hardware aangeschaft of belangrijke functionaliteit geschrapt. Echter de performance van SQL Server, tenzij door een expert al uitvoerig geoptimaliseerd, is doorgaans met enige inspanning sterk te verbeteren. En in het uitzonderlijke geval dat het systeem niet te versnellen is, kan in ieder geval bepaald worden waar de bottleneck zit, en dus welke investering in hardware heb beste resultaat zal geven. De prestaties van SQL Server worden door zeer veel factoren beïnvloed. Zie daarvoor bijvoorbeeld de volgende checklist SQL Server performance tuning. Performance tuning kan dan ook uiteenlopende taken bevatten als optimaliseren van fysieke resources (o.a. geheugen, disk, processor), het vinden van de duurste queries, analyseren van query-plannen, het herschrijven van queries, het versnellen van queries door indexeren van tabellen, configureren van server- en database-settings, etc., etc. Een performance tuning opdracht duurt typisch 1 à 2 dagen, afhankelijk natuurlijk van de complexiteit van de database(s) en van de mate waarin de klant zelf modificaties kan doorvoeren en/of monitoren. Behalve performance tuning van de SQL Server Database Engine (SSDE), heb ik ook aanzienlijke ervaring met tuning van SQL Server Analysis Services (SSAS). database administration & trouble shootingRegelmatig verricht ik allerhande DBA werkzaamheden, zoals installatie en configuratie, upgrades, het inrichten van backup- en andere onderhoudsroutines, configureren van database-security, dataconversie, etc. Verder komt het regelmatig voor dat ik SQL Server implementaties, migraties of consolidaties plan en voorbereid. Daaronder valt ook het kiezen van SQL Server edities en licenties. Ook trouble shooting van onverwachte situaties is soms nodig. Bijvoorbeeld wanneer disks volgelopen zijn of een database opeens suspect is, in geval replicatie zomaar stopt of het SQL Server proces niet meer wil starten. Het zijn gelukkig uitzonderingen en echt ervaring krijg je met dit soort problemen nooit. Als ik er mee te maken krijg, dan weet ik dat de kans groot is dat ik de oplossing vind. scalability en high availabilityBelangrijke aspecten van een SQL Server implementatie zijn scalability en high availability. Oplossingen voor scalability kunnen worden onderscheiden in scaling-up (meer werklast op dezelfde server) en scaling-out (verdelen van de werklast over verschillende servers). Scaling-out kan bijvoorbeeld middels replicatie, door het scheiden van transactieverwerking en rapportage, door logshipping en ook door database mirroring in combinatie met database snapshots. Overigens zie ik vaak een te enthousiast gebruik van scaling-out-opties. Het introduceert hoe dan ook veel complexiteit en het is dus altijd raadzaam heel goed te bestuderen of scaling-up ook voldoet. Zo niet dan is het zaak de scaling-out zo simpel mogelijk te houden. Dus liever transactionele dan merge-replicatie, liever mirroring en database snapshots of het regelmatig kopiëren van databasefiles dan complexe ETL routines. Er kan veel met SQL Server. Het kiezen van het juiste middel is vaak lastig, maar cruciaal. High availability kan gerealiseerd worden onder andere door failover clustering en database mirroring, en ook door virtualisatie. Met alle technieken heb ik meer of minder hands-on ervaring. business intelligence en Analysis ServicesMicrosoft SQL Server bevat naast de relationele database hulpmiddelen voor ETL, multidimensional databases en reporting. SQL Server Analysis Services (SSAS) is de tool waarin multi-dimensionele OLAP databases kunnen worden gemaakt, die zowel logisch als fysiek geoptimaliseerd zijn voor querying en analyse. Zoals SQL de vraagtaal is voor relationele databases, zo heeft ook het multi-dimensionele model een vraagtaal: MDX. In een aantal (grote en kleine) projecten heb ik intensief met Analysis Services en MDX gewerkt. Ook heb ik ervaring met het gebruik van Excel pivot tables (draaitabellen) voor het creëren van slice and dice functionaliteit, al dan niet als front-end voor Analysis Services. Samen met een medewerker van de klant kan ik in één dag een demonstratie Analysis-toepassing maken. Een simpele toepassing met één feitentabel en drie of vier hiërarchische dimensies geeft een uitstekend beeld van slice and dice functionaliteit en hoe deze ontwikkeld kan worden. De demonstratie is zeer geschikt om de meningsvorming binnen de organisatie te ondersteunen. Naar wens kunnen meerdere features aan de demo worden toegevoegd, zoals KPI's, data mining en statische rapporten. Indien rapportage (in de breedste zin van het woord) gescheiden is van transactieverwerking, is het regelmatig overzetten van data aan de orde. SQL Server Integration Services, de ETL-tool van Microsoft, valt buiten mijn expertise. Wel heb ik zeer uitgebreide ervaring met het uitvoeren van ETL taken in Transact-SQL, naar mijn mening in veel gevallen minstens even goed bruikbaar als Integration Services. SQL Server Reporting Services (SSRS) is Microsofts tool voor web-based reporting. In het verleden heb ik in diverse projecten met SSRS gewerkt of er cursus over gegeven. (on the job) trainingSinds 1999 geef ik database-cursussen voor Compu'Train doorgaans gebruik makend van het Microsoft Official Curriculum. Incidenteel verzorg ik een op maat gemaakte cursus voor een eindklant. Wat ook regelmatig voorkomt zijn dagen waarbij ik een "on the fly" cursus geef. Dat wil zeggen dat de inhoud van de cursus vooral ter plekke wordt bepaald door de deelnemers. Het gaat dan bijvoorbeeld om een aantal ontwikkelaars van een software-leverancier, die al een behoorlijke kennis van SQL Server hebben, maar waarbij de kennis vaak wel erg fragmentarisch is, en soms wel heel pragmatisch en matig door echt begrip gesteund. Dit zijn intensieve maar erg leuke dagen, zowel voor de cursisten als voor mij. In veel van de trajecten die ik uitvoer zit bovendien een training on the job aspect. Ik werk graag met één of meerdere medewerkers van de klant die 'mij op de vingers kijken', en die zo een vliegende start kunnen maken. Dit komt vaak voor bij performance tuning en trouble shooting, maar bijvoorbeeld ook bij het maken van een eerste opzet van een datawarehouse. Kennisoverdracht juich ik altijd toe en mijn ervaring in talloze klassikale- en praktijksituaties is dat vrijwel iedereen gemotiveerd en leergierig is.
|
||