Een database of gegevensbank is op zichzelf niet meer dan een vergaarbak vol (hopelijk nuttige) informatie. Dat we de inhoud van deze gegevensbank georganiseerd opslaan en relaties tussen verschillende stukken inhoud kunnen definiëren, maakt deze vergaarbak pas echt bruikbaar. De software die met zo'n database werkt, heet een database management system of kortweg dbms. De definitie van de organisatie van de inhoud en de onderlinge relaties van de gegevens noemen we het databaseschema. Er zijn meerdere manieren om zo'n schema te modelleren. Vandaag meest gebruikelijk is het relationele model, maar er bestaan nog andere modellen, bijvoorbeeld het hiërarchische (gebruikt in XML). Het dbms was oorspronkelijk een applicatie waar de gebruiker lokaal op zijn pc mee werkte. Denk maar aan het befaamde dBASE. Dat model is sinds lang geëvolueerd naar een client-servermodel.
...

Een database of gegevensbank is op zichzelf niet meer dan een vergaarbak vol (hopelijk nuttige) informatie. Dat we de inhoud van deze gegevensbank georganiseerd opslaan en relaties tussen verschillende stukken inhoud kunnen definiëren, maakt deze vergaarbak pas echt bruikbaar. De software die met zo'n database werkt, heet een database management system of kortweg dbms. De definitie van de organisatie van de inhoud en de onderlinge relaties van de gegevens noemen we het databaseschema. Er zijn meerdere manieren om zo'n schema te modelleren. Vandaag meest gebruikelijk is het relationele model, maar er bestaan nog andere modellen, bijvoorbeeld het hiërarchische (gebruikt in XML). Het dbms was oorspronkelijk een applicatie waar de gebruiker lokaal op zijn pc mee werkte. Denk maar aan het befaamde dBASE. Dat model is sinds lang geëvolueerd naar een client-servermodel. Het ondervragen van een dbms heet in het Engels een 'query'. De instructies die nodig zijn voor het ondervragen en beheren van een relationele rdbms (rdbms) zijn erg talrijk. Allemaal kennen ze een indeling en structuur die erg doen denken aan een programmeer- of scripttaal. Het lag dan ook voor de hand om een standaardondervraagtaal uit te werken die gebruikt kon worden met onverschillig welke rdbms. Dat is SQL (Structured Query Language) geworden, een ondervraagtaal die oorspronkelijk door IBM voor eigen gebruik werd ontwikkeld. Sinds 1987 is SQL echter een ISO-standaard. SQL kende al heel wat revisies. Tot 1996 was het Amerikaanse standaardisatieinstituut NIST verantwoordelijk voor de certificatie van de SQL-implementaties van de verschillende rdbms-producenten, maar vanaf die datum is er een 'zelfcertificatie' in voege. De laatste echt vrij beschikbare standaard is SQL: 1999. Van alle moderne rdbms'en wordt verwacht dat ze tenminste die versie van SQL ondersteunen. SQL: 2003 en SQL: 2006 zijn tegen betaling beschikbaar en bieden onder meer ondersteuning voor XML in de database en een XML-ondervraagtaal (XQuery). Helaas heeft die zelfcertificatie er ook voor gezorgd dat er weer verschillen geslopen zijn in de SQL-implementaties van de verschillende producenten. Zo wijken alle in dit artikel besproken rdbms'en af van de SQL-standaard en hebben ze eigenheden en producentspecifieke constructies en syntaxis voorzien. Uiteraard is het doel van alle rdbms'en hetzelfde, namelijk het efficiënt en performant beheren van aanzienlijke hoeveelheden gegevens. Allemaal gebruiken ze SQL als basis voor de commu- nicatie met de gebruiker . Dan rijst logischerwijze de vraag op basis van welke criteria je een rdbms moet kiezen. Soms is er geen vrije keuze. Als u erg Windows-centrisch werkt en heel uw Windows-netwerk beheert met bijvoorbeeld Microsoft System Center, dan verplicht Microsoft u zijn rdbms te gebruiken, MS SQL Server. Niets verhindert u echter om voor andere toepassingen een ander rdbms te kiezen. Vaak wordt dat niet gedaan omdat men graag op een enkele systeem standaardiseert. Dat is ook gemakkelijker voor de gebruikers, want dan hoeft ook maar een variant van de SQL-taal ondersteund te worden. In de praktijk zien we in heel wat bedrijven toch meerdere rdbms'en opduiken. Die draaien echter vaak min of meer automatisch. Zo kan in een en dezelfde organisatie een Microsoft SQL Server gebruikt worden voor het beheer van de Windows-omgeving, terwijl Oracle instaat voor de zakelijke processen en wellicht MySQL voor de op Linux en Apache draaiende dynamische websites. De medewerkers zullen dan voornamelijk met Oracle werken, maar binnen de organisatie worden in de praktijk toch al drie verschillende, onderling behoorlijk incompatibele rdbms'en gebruikt. De vrije keuze van een rdbms kan uiteraard ook beperkt worden door de softwareproducenten waarmee u samenwerkt. Soms vereist de software voor uw zakelijke processen een specifieke rdbms. Natuurlijk zijn er ook producenten die zich flexibel opstellen en u een aantal keuzemogelijkheden geven omtrent de rdbms die u samen met hun software wenst te gebruiken. In dit artikel overlopen we de producten van de populairste dbms-producenten. Dat zijn Microsoft met SQL Server 2008, Oracle met Database 11g, IBM met DB2 en Informix, en MySQL met MySQL Enterprise en MySQL Community. Veel mensen staan er niet bij stil, maar IBM is een van de grootste softwareproducenten. Het bedrijf heeft zelfs meerdere dbms'en. Overigens noemt IBM dat geen databasesystemen meer, maar 'data servers'. Volgens IBM denken de meeste mensen bij het woord database immers aan een relationeel databasesysteem, terwijl de dbms'en van IBM veel meer kunnen dan dat. IBM heeft twee grote data servers: DB2 en Informix. Informix is een vlaggenschipproduct en vooral geschikt voor online transactieverwerking (OLTP of Online Transaction Processing). DB2 is de meer algemeen inzetbare data server van IBM en - laat dat duidelijk zijn - ook een vlaggenschipproduct. Zowel DB2 als Informix blijven naast elkaar bestaan en worden ook beide verder ontwikkeld. Daarbij worden interessante en bruikbare technologieën tussen de beide data servers naar behoefte uitgewisseld. Voor dit artikel hebben we gekozen om ons te richten op de meer algemeen inzetbare IBM DB2. Volgens IBM bestaan er heel veel misverstanden ten aanzien van DB2. Zo schijnen heel wat mensen te denken dat je voor dit dbms een minicomputer zoals AS/400 of zelfs een mainframe nodig hebt. Niet dus. DB2 bestaat ook voor pc's onder Windows, Linux of Unix. Uiteraard heeft IBM varianten voor mini's en mainframes, dat spreekt vanzelf. Maar er bestaat evengoed een DB2 voor pda's! Er zijn verschillende DB2-varianten beschikbaar, van een kleine gratis te gebruiken versie (DB2 Express-C) tot een grote warehousevariant (IBM Balanced Warehouse). De verschillende varianten voor eenzelfde platform delen overigens dezelfde code, alleen de licentie verschilt telkens. De huidige DB2-versie is 9.5 en kreeg de bijnaam 'Viper'. Een interessante optie is het draaien van DB2 als een federatieserver. Stel, uw bedrijf heeft al databasesystemen in gebruik en wil die graag behouden. U wil uw applicaties wel al verenigen om te werken met DB2. Dan laat u de applicaties werken met de DB2-federatieserver. Die werkt dan als een soort middleware tussen uw applicatie(s) en de andere dbms('en). IBM gebruikt voor DB2 een 'shared no-thing'-systeem. Iedere dataserver heeft dus zijn eigen opslagruimte en beheert die ook zelf. Servers kunnen uiteraard wel toegang krijgen tot elkaars data, maar dat moet keurig in onderaanneming uitgevoerd worden door de eigenaarserver. IBM maakt zich sterk dat deze oplossing veel 'schaalbaarder' is dan de 'shared everything'-samenstelling die Oracle gebruikt. Ze zou ook veel minder vatbaar zijn voor uitval, zonder tijdrovende herverdeling van data (iets dat Oracle overigens ook claimt). DB2 maakt voor de 'high availability' gebruik van HADR (High Availability Disaster Recovery), een technologie die afkomstig is van Informix. Volgens IBM werkt HADR zo goed, dat het volwaardig door SAP ondersteund wordt, terwijl dat niet het geval zou zijn voor het RAC (Real Application Cluster)-systeem van Oracle. Het tweeledig aspect van DB2 komt tot uiting in de ondersteuning voor zowel de traditionele relationele SQL als de hiërarchische XML via XQuery. Ook hier claimt IBM XML-data beter en performanter te kunnen verwerken dan Oracle. Volgens IBM werkt Oracle met een XML-blob die dan extra geïndexeerd wordt voor ietwat sneller opzoeken. Bij DB2 "verstaat" de database engine echt XML en werkt dit dus sneller. DB2 kan XML hanteren met een XSchema voor elk veld, dus een XSchema per document. Om de in- en uitvoerprestatie te verbeteren hanteert DB2 verder een transparante compressie. Dit verschilt met MS SQL Server waar de gebruiker zelf moet opgeven of een variabele gecomprimeerd moet worden of niet. IBM haalt verder als unieke voordelen van DB2 aan de hoge prestaties, de zelfoptimaliserende en erg transparante werking, de hoge graad van automatisering die geen onderhoud vereist en de efficiëntie door onder meer datacompressie. Omdat IBM besefte dat DB2 een serieuze achterstand had op vooral Oracle inzake marktpenetratie, heeft het bedrijf gezocht naar een mogelijkheid om DB2 een betere kans te geven en extra in de verf te zetten. Die mogelijkheid diende zich aan via SAP. IBM vroeg gewoon aan SAP om hen te vertellen wat ze goed en niet goed vonden aan DB2. SAP zag dat logischerwijze wel zitten en bezorgde IBM een lijst van mogelijke verbeteringen in DB2. IBM heeft naar eigen zeggen al die wensen keurig geïmplementeerd. Vandaar dat IBM ook graag uitpakt met de vele punten inzake functionaliteit die"volledig door SAP ondersteund worden". Uiteraard laat het niet na erop te wijzen dat diezelfde functionaliteit bij Oracle ontbreekt of niet of slechts gedeeltelijk ondersteund wordt door SAP. Feit is dat als u de Windows-versie van SAP installeert via 'sapinst' en u geen andere keuze maakt in de installatiewizard, DB2 geïnstalleerd wordt als standaard dbms. Microsoft begon zijn intrede in de dbms-markt op een manier die het bedrijf al vaak toegepast heeft: door een basisproduct te kopen of een bedrijf met het gewenste product over te nemen. In dit geval vertrok Microsoft van de dbms van Sybase en maakte op basis daarvan SQL Server. De huidige versie daarvan is natuurlijk al een heel eind verwijderd van het origineel, maar zo hebt u een idee waar Microsoft de mosterd vandaan haalde. Als onderliggend besturingssysteem is alleen Windows Server 2008 mogelijk. U krijgt dus geen flexibiliteit inzake platformkeuze. Daar hangen tevens, zeker in vergelijking met de concurrentie, enorm hoge hardwarevereisten aan vast. Omdat we er vanuit gaan, dat SQL Server voor u als lezer geen onbekende is, beperken we ons hier tot de nieuwigheden in de nieuwe versie 2008. Microsoft beroept zich op verbeteringen in vier kerngebieden. Allereerst zijn er verbeteringen voor bedrijfskritiel gebruik. De nieuwe dbms biedt meer doorgroeimogelijkheden. U kunt, als de hardware dat ondersteunt, zelfs extra processoren bijsteken terwijl de server blijft draaien. De nieuwe versie is uiteraard volgens Microsoft ook performanter en veiliger. Met veiliger wordt niet alleen bedoeld inzake malware en hackers, maar met name de veiligheid inzake het afwerken van transacties. Microsoft bouwde compressie in, zodat de wildgroei van de databases en hun inhoud wat ingedamd wordt. Ook werd voorzien in een betere auditing. SQL Server 2005 audit alleen de structuuraanpassingen; de nieuwe versie audit alles, ook reeds uitgevoerde query's. Verder heeft de nieuwe versie een uitgebreider beheerkaderwerk met policy's om meerdere databases in één keer mee te beheren en te configureren. Ten tweede zijn er verbeteringen aan het soort data dat u kunt opslaan. SQL 2008 voegt multimedia- en geografische datasoorten toe. De multimediadatatypes maken koppeling naar multimediadata-stromen op een nas of san mogelijk. De geografische datatypes zijn gekoppeld aan Microsoft Virtual Earth. Ten derde zijn er verbeteringen voor ontwikkelaars van SQL Server-applicaties. Zij kunnen voortaan SQL-instructies in de door hen gewenste programmeertaal gebruiken alsof het eigen instructies van die programmeertaal zijn, in plaats van zoals in vrijwel alle andere gevallen SQL-instructies als tekststrings in de programmeertaal op te nemen. Microsoft creëerde die mogelijkheid via LINQ (. NET Language INtegrated Query). Ook nieuw is de ondersteuning van onderbroken verbindingen via een lokale compacte SQL Server 2008 (de"Compact Edition") die ze dan synchroniseert met de volwaardige SQL Server 2008 zodra die weer beschikbaar is. Deze compacteditie van SQL Server 2008 is zo klein, dat hij zelfs op een smartphone kan draaien, aldus Microsoft. Ten vierde brengt MS SQL Server 2008 verbeteringen op het vlak van Business Intelligence. U kunt nu aan data-ondervraging doen met zogenaamde 'Business Entities' (zakelijke entiteiten). Zo kunt u een entiteit 'klanten' verwerken zonder de details van tabellen en rijen daarvan te moeten kennen. Dit moet het eenvoudiger maken om aan datamining te doen, aldus Microsoft. De voornaamste beperking van SQL Server 2008 heeft te maken met zijn platformafhankelijkheid. Microsoft ondersteunt alleen maar Windows Server 2008. Alles wat niet mogelijk is met dat platform, is dus ook niet mogelijk met SQL Server 2008. Veel van de verbeteringen in verband met bedrijfskritieke processen zijn te danken aan verbeteringen in Windows Server 2008. Ze hebben als dusdanig niets te maken met de SQL Server 2008. Als u expliciet Windows-centrisch werkt en het grootste vertrouwen hebt in Microsoft, is SQL Server 2008 wellicht de meest logische keuze. MySQL is de meest gebruikte open-source dbms. Het Zweedse bedrijf MySQL dat de gelijknamige dbms ontwierp zal overgenomen worden door het Amerikaanse Sun, dat daarmee een erg populaire database aan boord haalt. De overgrote meerderheid van alle dynamische websites wereldwijd draait immers onder LAMP (ofwel Linux, Apache, MySQL en PHP). Qua code is er geen verschil tussen de Community en de Enterprise editie van MySQL. De Community editie is volledig gratis, voor de Enterprise editie moet u betalen. Voor die versie sluit u een onderhoudscontract af, dat recht geeft op ondersteuning en snellere bugfixes dan bij de Community editie. MySQL zegt dat de Community editie daarom eigenlijk niet geschikt is voor bedrijfskritieke en productieomgevingen. Dat belet niet dat heel wat bedrijfswebsites toch van die Community editie gebruik maken. Bij beide edities kunt u dezelfde gratis of betalende beheerinstrumenten gebruiken. Enkel voor de Enterprise editie kunt u van MySQL zelf een centraal beheerprogramma krijgen waarmee u een heel park van MySQL dbms'en centraal kunt beheren. Dat is het MySQL Enterprise Dashboard; dat is beslist zijn geld waard. Gratis en voor niets kunt u gebruik maken van een aantal GUI-beheertools voor MySQL die voor Windows, Linux en MacOS bestaan. Er zijn natuurlijk ook beheertools die via een webinterface werken zoals het bekende PhpMyAdmin. Omdat MySQL open source is, werd deze dbms gecompileerd voor zowat elk platform waarvoor er geïnteresseerde programmeurs bestaan. Dat zijn er ondertussen meer dan twintig. Voor nogal wat organisaties kan het een voordeel zijn een dbms te gebruiken die op zowat alles draait, niet alleen Linux, Windows of MacOS, maar bijvoorbeeld ook OS/2 of NetWare. Vanuit applicaties kunt u ook gemakkelijk met MySQL werken. Met het gratis MyODBC kunt u elke Windows-applicatie die met ODBC-sturingen werkt, koppelen aan MySQL. MySQL heeft geen eigen ingebouwde scripttaal. U hebt daarvoor de keuze tussen PHP, Perl en Python en andere, minder populaire scripttalen. Ook hier weer biedt MySQL een flexibiliteit die bij de concurrentie ontbreekt. Nadelen zijn er ook. Zo zullen moderne functionaliteiten zoals partitioning en rijgebaseerde replicatie, die in andere databasesystemen al jaren beschikbaar zijn, pas in de volgende versie (5.1) van MySQL beschikbaar komen. Qua formaat van alles wat errond geleverd wordt is dit beslist de kleinste dbms. Maar ze is ontegensprekelijk betrouwbaar, bloedsnel en dus zeker het overwegen waard. Is het niet als hoofd-dbms, dan toch zeker in randtaken. Oracle is de marktleider inzake dbms'en. Ruim de helft van alle database-licenties zijn Oracle dbms'en. Onder Linux is dat volgens Gartner zelfs meer dan tachtig procent. Nochtans is Oracle veel meer dan een producent van databasesoftware. Het bedrijf is ook actief in erp (Siebel, Peo-plesoft) en maakt daarnaast heel wat opensource software, zoals een op Red Hat gebaseerde Oracle Enterprise Linux en een op Xen gebaseerde Oracle VM. De Oracle Database is gesloten source, maar Oracle stelt het wel ter beschikking op een indrukwekkend aantal platformen: meer dan negentig! Alleen op AS/400 is er geen Oracle beschikbaar. Dat mag een lacune lijken, maar dat komt omdat AS/400 erg populair was in België, maar veel minder in andere landen. Oracle is wel beschikbaar op IBM mainframes en uiteraard ook op Windows. Achterwaartse compatibiliteit is iets waar Oracle sterk de nadruk op legt. Het bedrijf garandeert het zelfs. Oracle ondersteunt oudere versies vier jaar lang, en daarna kunt u nog eens twee keer een extra ondersteuning aanvragen gedurende telkens twee jaar. Als u applicaties of scripts geschreven voor Oracle 7 loslaat op een 11g, zullen die werken. Oracle hanteert het principe dat heel het dbms, ongeacht het gebruikte platform, moet werken met één enkele dbms-kernel die alle functionaliteit omvat. De clientsoftware kan daardoor erg beperkt en compact blijven. Er bestaat tegenwoordig overigens ook een kleine en in functionaliteit beperkte gratis versie van de Oracle database, maar ook die is niet open source. Oracle heeft vanaf het begin SQL ondersteund en geëist dat zijn dbms alle standaarden zou ondersteunen. Inwendig gebruikt Oracle DBMS PL/SQL als werktaal, maar er zit ook een Java Virtual Machine in. Als u ontwikkelt in Java kunt u dus rechtstreeks Java-applets op de dbms uitvoeren. Vanuit Windows kunt u uiteraard via ODBC aan Oracle databases. Bijna in alle gevallen kan Oracle 11g als drop-invervanging gebruikt worden voor heel wat concurrerende databases. Als een belangrijke applicatie echt een specifieke dbms vereist en u toch per se Oracle wil draaien, dan kan zelfs dat. Desnoods voorziet Oracle dan een zogenaamde 'transparant gateway' waarbij ze de vereiste dbms met de applicatie laten praten, maar deze dbms dan al zijn data laten uitwisselen met de Oracle dbms. Oracle 11g ondersteunt uiteraard ook multimedia en XML, maar gaat daarin net wat verder dan de concurrenten. Zo haalt de dbms XML uit elkaar en verwerkt die als kolommen. (Als u XML als tekst of binair wil opslaan kan dat natuurlijk ook.) Daardoor kan XML zeer efficiënt opgeslagen worden en wordt er gebruik gemaakt van de volledige verwerkingskracht van de Oracle dbms. Applicaties of XML-specifieke ondervragingen (zoals XQuery) krijgen wel degelijk XML terug, maar die wordt bij opvraging opnieuw samengesteld aan de hand van de opgeslagen kolommen. Omdat de database bij ondervragingen niet moet zoeken in inefficiënte tekststrings, resulteert dit in een immens veel hogere verwerkingssnelheid van XML. Oracle 11g ondersteunt verder 'real application clusters' of RAC. Dat biedt onder meer de mogelijkheid om migraties en andere ingrijpende functies uit te voeren bij een in gebruik zijnde dbms. Dit kan zonder dat er een onderbreking is in de functionaliteit naar de gebruikers toe. Het nadeel is dat ondersteuning van deze geclusterde database ingebouwd moet worden in de databaseclients. Oracle certificeert trouwens onderliggende besturingssystemen én opslagsystemen voor gebruik met zijn dbms. De eis is dat alle transacties gegarandeerd afgewerkt moeten worden. Daarom certificeert Oracle het gebruik van zijn dbms binnen een virtuele omgeving niet, tenzij deze omgeving transactionele garanties biedt. Oracles eigen op Xen gebaseerde VM doet dat, maar die van Microsoft en VMWare dus niet. Oracle werkt voor zijn dbms met een 'share everything' (deel alles) principe, wat betekent dat alle dbms-servers een gezamenlijke gedeelde opslagruimte gebruiken. Bij andere producenten krijgt elke server vaak zijn eigen privé-opslagruimte. Dan moet er beslist worden welke ruimte voor welke data gebruikt wordt, wat later bij het toevoegen (of uitvallen!) van een extra server tijdverlies en downtijd betekent. De data moet immers herverdeeld worden over de beschikbare servers. Dat is niet het geval bij één gedeelde opslagruimte (nas of san of iSCSI). Extra verwerkingscapaciteit kunt u dan bekomen door gewoon een server toe te voegen aan dezelfde opslagruimte. Er hoeft dus niets herverdeeld te worden. Dat is ook het geval bij uitval: de beschikbaarheid van de data blijft dan onaangetast, alleen de werksnelheid zal lager liggen totdat de uitgevallen server vervangen is. De ruimte ontbreekt om de volledige functionaliteit van de Oracle databasekernel te beschrijven. Om u echter een idee te geven hoe ver Oracle gaat in het voorzien van prestatieverhogende functionaliteit (self-tuning) in zijn dbms, geven we u één voorbeeld. Telkens als de Oracle Database data in blokken wegschrijft naar een opslagvolume, houdt hij statistieken bij hoe snel elke blok gelezen en geschreven kan worden. Afhankelijk van het soort opslag en hoe dat georganiseerd is, kunnen daar namelijk wel wat verschillen in zitten. In de achtergrond verschuift hij dan de blokken zodat de meest gevraagde of 'hot' datablokken op de snelste posities zitten. Omdat Oracle met zowat eender welk soort opslagsysteem kan werken en dus geen veronderstellingen kan maken over de functionaliteit daarvan, wordt alle benodigde functionaliteit gewoon in de databasekernel ingebouwd. Daarvan is encryptie een voorbeeld. Oracle experimenteert uiteraard wel met bestandssystemen om de allerbeste prestaties uit de database te krijgen. Het bedrijf heeft er zelf een ontwikkeld: OCFS (Oracle Cluster File System), dat tegenwoordig standaard deel uitmaakt van de Linux kernel. Oracle vertelde ons dat er momenteel ook met grote interesse gekeken wordt naar Sun's ZFS bestandssysteem. Oracle Database 11g is verkrijgbaar in vijf verschillende edities: Standard One, Standaard, Enterprise, Personal en Express. Die bieden verschillende prestatie-, replicatie- en werkverdelingsfunctionaliteiten. U kunt edities opwaarderen zonder opschorting van functionaliteit of downtime. De hele dbms is immers schaalbaar. Het is goed te begrijpen waarom Oracle de marktleider is, al zouden we graag zien dat de schaalbaarheid zou worden verzekerd zonder dat er nauwkeurige partitionering bij de clients voorzien moet worden. Een dbms kiezen is geen sinecure. Behalve de functionaliteit, speelt natuurlijk ook het vertrouwen in een producent mee. Dat heeft weer te maken met diens reputatie. Oracle is de marktleider en de rest moet daar tegenop tornen. Microsoft doet dat als enige met een expliciet Windows-specifieke oplossing. IBM lijkt vooral te mikken op de aanzienlijke SAP-markt, maar werkt vlijtig verder om van DB2 de dbms-marktleider te maken. MySQL komt in vergelijking met de anderen pas kijken en biedt de minst omvangrijke omgeving die toch op heel wat platformen draait, en bovendien als enige open source is. Klein maar fijn heeft ook zo zijn charmes. z Johan Zwiekhorst