Inleiding
In het derde kwartaal van dit jaar - een stuk later dan oorspronkelijk aangekondigd - brengt Microsoft de 2008-versie van zijn databaseplatform SQL Server uit. Tweakers.net werd uitgenodigd op het kantoor van Microsoft op luchthaven Schiphol voor een meeting met enkele leden van het ontwikkelteam.
SQL Server 2008 is de spin in het web van Microsofts Data Platform Vision. Binnen deze visie werken verschillende systemen van Microsoft samen om een grote verscheidenheid aan data op te slaan, te bewerken en te raadplegen. Microsoft wil SQL Server dan ook meer positioneren als een dataplatform dan 'slechts' als een relationele database.

Overzicht van het Data Vision Platform
Microsoft onderscheidt een drietal aandachtsgebieden bij SQL Server 2008 en noemt deze Trusted, Productive en Intelligent. Aan de hand van die drie onderwerpen willen we in dit artikel een overzicht geven van nieuwe mogelijkheden van SQL Server. We beginnen echter met een algemene beschrijving van de verschillende versies.
Verschillende versies
SQL Server 2008 is, net als zijn enkele jaren geleden verschenen voorganger, in diverse smaken verkrijgbaar. Veel klanten met een standaard oltp-omgeving zullen de Standard Edition aanschaffen, maar voor omgevingen met grote hoeveelheden transacties of de noodzaak voor grotere betrouwbaarheid, is de Enterprise Edition geschikter. Deze versie biedt onder andere ondersteuning voor meer dan vier processors, betere methodes om de beschikbaarheid te optimaliseren en uitgebreidere datawarehouse- en business intelligence-mogelijkheden. Daarnaast ondersteunt de Enterprise-versie zaken als geïndexeerde views, snapshots en niet te vergeten de mogelijkheid tot het online toevoegen van een extra cpu. Een volledige lijst met features is op de Microsoft-site beschikbaar.
Naast deze algemene versies is een viertal gespecialiseerde versies verkrijgbaar:
- Workgroup, geschikt voor bijvoorbeeld kleinere vestigingen die hun data synchroniseren met de database van de hoofdvestiging;
- Web, een versie die nog niet beschikbaar was in SQL Server 2005. Deze versie wordt in de markt gezet als database voor hostingtoepassingen, met onder meer ondersteuning voor verschillende .Net-techieken en de mogelijkheid om bepaalde beveiligingsinstellingen af te dwingen door middel van policy's;
- Express, de gratis variant met vergelijkbare mogelijkheden als de standaard versie maar met beperkingen aan de grootte van de database en de ondersteuning van processors, geheugen en opslag; en
- Compact, een compacte relationale database voor Windows Mobile of desktop omgevingen.
Naast bovenstaande versies die in productiesystemen gebruikt kunnen worden is voor ontwikkelaars de developerversie beschikbaar.
De prijzen voor de 2008-release zijn nog niet bekend, maar - ter indicatie - een processorlicentie voor SQL Server 2005 Enterprise gaat voor 24.999 dollar over de toonbank. De Standard- en Workgroup-versies kosten respectievelijk 5999 en 3899 dollar. Het is de verwachting dat de prijzen voor de nieuwste release in september worden bekendgemaakt.
Trusted
Onder de noemer Trusted komen de voorzieningen voor beveiliging, beschikbaarheid en stabiliteit aan bod.
Beveiliging van data
Het versleutelen van gegevens binnen SQL Server is niet nieuw: in SQL Server 2005 zijn immers al mogelijkheden aanwezig om gevoelige data versleuteld op te slaan. In die versie wordt echter gebruik gemaakt van zogenaamde cell-level encryption, waarbij de applicatie die met de database verbinding maakt, aangepast moet worden om de gegevens te kunnen lezen. Daarnaast moet iedere kolom met versleutelde gegevens omgezet worden naar het varbinary-formaat en kunnen er geen foreign keys of indexen op versleutelde kolommen worden gebruikt. Bovendien gaat cell-level encryption ten koste van de performance: deze neemt met ongeveer twintig procent af.
In de 2008-versie wordt een nieuwe techniek geïntroduceerd: Transparent Data Encryption. Met deze techniek kunnen de database, logbestanden en backups versleuteld worden zonder dat er aanpassingen aan de client-applicatie nodig zijn. Het complete versleutelingsproces vindt volledig transparant plaats. De benodigde certificaten kunnen met een externe tool opgeslagen worden, zodat een bedrijf alle certificaten op een centrale plaats kan bewaren.
/i/1217342527.png?f=thumb)
Overzicht van Transparent Data Encryption
Overigens zitten er ook voordelen aan de 'oude' manier: de data is daarbij ook versleuteld in het geheugen van de databaseserver en er kunnen verschillende sleutels per gebruiker toegewezen worden. Beide manieren van encryptie blijven dan ook naast elkaar bestaan; het is aan de gebruiker om de techniek te kiezen die het beste aansluit bij zijn of haar wensen. Er is een document beschikbaar dat het onderwerp in detail behandelt.
Een ander punt op het gebied van informatiebeveiliging is de verbeterde ondersteuning voor het auditen van acties. In SQL Server 2008 is het mogelijk om per gebruiker, per kolom en per querytype auditregels aan te maken. Zo kun je bijvoorbeeld instellen dat je wilt loggen welke gebruiker een SELECT doet op de kolom met creditcardinformatie. Alle acties die aan de auditregels voldoen, worden vervolgens automatisch gelogd.
Beschikbaarheid
Uiteraard dient een database altijd bereikbaar te zijn. Om de beschikbaarheid van SQL Server te verhogen zijn een aantal wijzigingen doorgevoerd. De mogelijkheden voor mirroring zijn uitgebreid. Het is nu mogelijk dat een mirror een specifieke datapage aan zijn master vraagt in het geval van de beruchte 823 en 824 foutmeldingen. Ook worden de gegevens tussen een master en een mirror gecomprimeerd voor een snellere overdracht en zijn er betere tools beschikbaar gekomen om het mirroring-proces te monitoren.
Het toevoegen van een cpu aan de server kan - natuurlijk alleen als de hardware het ondersteunt - vanaf versie 2008 zonder de SQL Server opnieuw te starten. Zodra de cpu toegevoegd is, kan de database gebruik maken van de extra rekenkracht.
Performance data collection
Met SQL Server Extended Events is het mogelijk om extra gegevens vast te laten leggen bij het loggen van gebeurtenissen. Met deze gegevens kan het eenvoudiger worden om de oorzaak van bijvoorbeeld excessief cpu-gebruik of deadlocks te achterhalen. Als bijvoorbeeld het cpu-gebruik regelmatig tegen de 100 procent aankruipt, kan een event gemaakt worden dat de uitgevoerde query logt als het cpu-gebruik boven een bepaald niveau komt. Uit de logs kan dan na verloop van tijd hopelijk afgeleid worden dat die ene table join een kostbare datatypeconversie bevat en daarmee de oorzaak is van het grote cpu-gebruik.
Stabiliteit
Als laatste Trusted-punt noemt Microsoft een stabiele en voorspelbare performance. Een belangrijk aandeel hierin speelt de nieuwe resource governor, die bepaalt hoe geheugen en cpu-tijd verdeeld worden. In SQL Server kunnen zogenaamde resource pools met bijbehorende workload groups aangemaakt worden. Per workload group is - hoewel niet zo gedetailleerd bij Oracle - het maximale cpu- en geheugengebruik in te stellen, zodat bepaalde gebruikers of applicaties een groter beslag op de serverresources kunnen leggen dan andere. Het invoeren van een nieuwe order hoeft zo niet te lijden onder gebruikers die een zwaar rapport opvragen.
De nieuwe query governor in actie
Een andere nieuwe functie die een voorspelbare performance moet waarborgen, is plan freezing. Hiermee kan een executieplan waarvan de beheerder weet dat het efficiënt is, bewaard worden bij bijvoorbeeld het wijzigen van hardware of de overgang van een ontwikkel- naar productieomgeving.
Ook de introductie van gefilterde indexen is bedoeld om de prestaties op peil te houden. Het uitsluiten van data die voor de betreffende index niet van belang is, komt logischerwijs de performance ten goede.
Ten slotte zijn er nog verbeteringen aangebracht in de compressie van data en backups. Er zijn in SQL Server 2008 twee compressietechnieken: row compression en page compression. Bij rijcompressie wordt ongebruikte ruimte aan het einde van een kolom verwijderd. Paginacompressie staat ook wel bekend als dictionary compression: per pagina worden gegevens gecomprimeerd. Als paginacompressie gebruikt wordt, staat automatisch ook rijcompressie aan. Naast het feit dat een gecomprimeerde database minder opslagruimte op schijf inneemt, zijn de gegevens ook gecomprimeerd in het geheugen van de databaseserver aanwezig. Er kunnen zo meer gegevens in het werkgeheugen worden opgeslagen, wat het aantal schijfacties moet verminderen.
Productive
De term Productive moet illustreren dat Microsoft de nodige aandacht heeft besteed aan het verbeteren van de productiviteit van beheerders en ontwikkelaars. Er zijn diverse veranderingen en verbeteringen die hun werk moeten vergemakkelijken.
Policy based management
Om het beheer van SQL Server-databases en instanties te verbeteren is het Policy-Based Management-framework toegevoegd. Door het instellen van verschillende regels kan een beheerder op diverse niveaus bepalen welke acties de gebruikers van de databases wel of juist niet mogen uitvoeren. De lijst met opties is te lang om op te noemen, maar de mogelijkheden lopen uiteen van de configuratie van de database tot de grootte van tabellen, maar ook naamgeving van objecten. Vrijwel alle instellingen die binnen SQL Server te maken zijn, zijn via policies af te dwingen en te monitoren.
/i/1217510191.png?f=thumb)
SQL Server 2008 Policy Based Management
Naast het beheer via policies kunnen beheerders ook gebruik maken van de command line-interface Powershell. Deze wordt tijdens de setup van SQL Server geïnstalleerd. Met de powertools van SQL Server 2008 kunnen overigens ook 2000- en 2005-databases beheerd worden.
Verbeteringen voor developers
Met de komst van SQL Server 2008 is eindelijk het langverwachte Entity Framework beschikbaar. Waar diverse andere leveranciers al jaren een werkend product hebben, probeert nu ook Microsoft hiermee op de object relational mappers-trein te springen. Het EF zou oorspronkelijk met Visual Studio 2008 en het .Net-framework 3.5 meegeleverd worden, maar uiteindelijk is de release dus aan SQL Server 2008 gekoppeld.
Veel ontwikkelaars die regelmatig t-sql code moeten kloppen, zullen enthousiast worden van de introductie van IntelliSense binnen SQL Server Management Studio. Net als binnen Visual Studio kunnen commando's en objectnamen door Management Studio automatisch worden aangevuld. Naast IntelliSense is er syntaxcontrole toegevoegd, die wel wat wegheeft van de spellingcontrole in Word.

IntelliSense in SQL Server 2008 management studio

Syntaxcontrole in SQL Server 2008 management studio
Ten slotte is de t-sql-debugger weer terug. In SQL Server 2000 was het mogelijk om t-sql-code in stored procedures te debuggen met de Query Analyzer. In de 2005-versie is deze mogelijkheid tot ongenoegen van veel ontwikkelaars verwijderd, waardoor het gebruik van Visual Studio onvermijdelijk werd. Gelukkig is Microsoft verstandig geweest en heeft het bedrijf de debugmogelijkheden weer toegevoegd aan de management studio van SQL Server 2008.
Transact-SQL verbeteringen
De querytaal t-sql is in de 2008-release ook niet ongemoeid gelaten. Met table valued parameters is het mogelijk geworden om complete records uit een tabelstructuur door te geven aan een user-defined functie of stored procedure. Met de verbeterde ondersteuning van objectafhankelijkheden is nu eenvoudiger en vooral accurater een overzicht te maken van aan elkaar gerelateerde objecten.
SQL Server 2008 kent een aantal nieuwe datatypen. Twee aparte datatypen voor tijden en datums zullen voor veel ontwikkelaars erg welkom zijn. Tot op heden was het immers niet mogelijk een datum zonder tijd of juist een tijd zonder datum op te slaan. Daarnaast is datetime2 toegevoegd voor een grotere precisie, en datetimeoffset is een datumtijdtype dat rekening houdt met tijdzones.
Offline systemen
Voor systemen die niet altijd met de centrale database verbonden zijn is het synchronisation framework in het leven geroepen. Hiermee kunnen applicaties eenvoudig offline gehaald worden, waarna ze gesynchroniseerd worden als de verbinding weer beschikbaar is. Hiervoor wordt gebruik gemaakt van functionaliteit die Change Tracking wordt genoemd.
Filestream
Voor het opslaan van binaire bestanden waren altijd twee verschillende mogelijkheden. Een bestand kan in een blob in de database worden opgeslagen of gewoon op schijf worden gezet, waarna een verwijzing naar de bestandslocatie in de database wordt opgenomen. Aan beide oplossingen kleven voor- en nadelen. Zo is het opslaan van een blob in de database niet erg efficiënt. Daarnaast is het opslaan van een blob erg database-specifiek, en is het niet eenvoudig een database met blobs te migreren naar een ander platform.
Er zijn ook voordelen aan het opslaan van de bestanden in de database. De toegangsbeveiliging wordt door de database geregeld, het verplaatsen van de omgeving naar een nieuwe server -met hetzelfde databaseplatform - is een kwestie van het kopiëren van het databasebestand, en de relationele integriteit kan, in tegenstelling tot bij de opslag van losse bestanden, wel goed geregeld worden.
De hier genoemde voor- en nadelen zijn niet compleet en zijn tot op de dag van vandaag voer voor verhitte discussies tussen voor- en tegenstanders van beide methodes. Met de komst van SQL Server 2008 wordt echter een derde opslagmethode voor binaire bestanden geïntroduceerd: de filestream. Met filestreams worden bestanden opgeslagen op het bestandssysteem, maar de ontwikkelaar kan een bestand benaderen alsof het een blob is. Het bestand op het filesystem maakt ook integraal onderdeel uit van de database. Zaken als rechten, backups en het synchroon houden van de bestanden worden dan ook volledig door SQL Server geregeld. De performance is door het gebruik van Win32-streaming-api's gelijk aan die van normale opslag op schijf, en de grootte van de bestanden wordt slechts beperkt door de beschikbare hoeveelheid schijfruimte. Filestream lijkt dus de geëigende methode voor het opslaan van bestanden.
Voor ontwikkelaars die nog wel blobs willen blijven gebruiken, is de Remote Blob-api toegevoegd. Hiermee wordt het eenvoudiger om de blobs op een externe server of een nas-systeem op te slaan. Microsoft heeft een whitepaper beschikbaar waarin de verschillende mogelijkheden voor het opslaan van bestanden tegenover elkaar worden gezet.
Geografische informatie
Met de introductie van SQL Server 2008 komt ook de ondersteuning voor spatial data, oftewel geografische gegevens. SQL Server is hiermee overigens aan de late kant. Verschillende concurrenten zoals Oracle en MySQL bieden al in meer of mindere mate ondersteuning voor geografische data.
Voor het werken met geografische gegevens zijn twee nieuwe datatypes geïntroduceerd, geometry en geography, waarbij de eerste een vlakke wereld als uitgangspunt heeft, en de tweede werkt met een bolvormige omgeving. Het geometry-datatype voldoet aan de standaard van het Open Geospatial Consortium.
Het datatype geometry kan gebruikt worden om de locatie en omtrek van polygonen op te slaan, terwijl het geography-type geschikt is om bijvoorbeeld data van gps-systemen te bewaren. Beide types kunnen volledig geïndexeerd worden.
De introductie van spatial-ondersteuning biedt interessante mogelijkheden. Zo is het mogelijk om gegevens op een kaart te plotten of alle vestigingen van een winkelketen binnen een bepaalde straal met een enkele query op te halen.

Voorbeeld van het gebruik van spatial data.
Hierarchy ID
Vrijwel iedere ontwikkelaar zal wel eens gegevens volgens een hiërarchisch ouder-kind-model hebben moeten opslaan. De meest gebruikte structuur hiervoor is waarschijnlijk een tabel met een ID en een ParentID. Met behulp van een recursieve functie is het vervolgens mogelijk de gegevens gestructureerd op te halen.
Met de komst van SQL Server 2008 wordt het werken met deze boomstructuren een stuk eenvoudiger. Microsoft heeft hiervoor een clr-functie genaamd Hierarchy ID toegevoegd. Door het gebruik van deze nieuwe techniek is het opvragen van een ouder niet moeilijker dan SELECT child.GetAncestor (n)
, waarbij n voor het gewenste niveau staat. Er is een video beschikbaar die de werking van Hierarchy ID tot in detail uitlegt.
Integrated full text search
Full Text Indexing was in vorige versies van SQL Server als aparte service opgenomen. In de 2008-versie is deze functie volledig geïntegreerd in de databaseserver zelf. De third party-plugins - bijvoorbeeld voor het doorzoeken van pdf-bestanden - worden nog wel in een apart proces geladen. Op de Msdn-site is een uitgebreid artikel over de nieuwe mogelijkheden van Full Text Indexing in SQL Server 2008 te vinden.
Verder mogen ook de invoering van sparse columns, waarbij null-waarden geen fysieke ruimte innemen, en het opheffen van de 8000-karakterlimiet voor user defined functions zeker niet onvermeld blijven.
Intelligence
Het laatste aandachtsgebied in dit artikel wordt door Microsoft Intelligence genoemd. De markt voor Business Intelligence en datawarehouseoplossingen zoals Business Objects en Cognos is sterk groeiende, en Microsoft zou Microsoft niet zijn als het niet een schep graan zou willen meepikken. SQL Server biedt al geruime tijd ondersteuning voor olap en etl en in versie 2008 zijn diverse verbeteringen doorgevoerd. We lichten een aantal van de uitbreidingen hieronder toe.
/i/1217426095.png?f=thumb)
SQL Server 2008 Business Intelligence
SQL Server Integration Services
Microsofts etl-tool heeft de nodige verbeteringen ondergaan en op diverse punten is de performance verbeterd. De 2008-versie is momenteel zelfs recordhouder: in combinatie met een Unisys-cluster werd 1TB aan platte tekstbestanden in 30 minuten in de database ingelezen.
Een van de zaken die bijdraagt aan de verbeterde perfomance is het gebruik van persistent lookup tables. In zulke tabellen worden lookup-tabellen van externe databases lokaal geïndexeerd. Met data profiling kan de externe data geanalyseerd worden. Zo kunnen verschillende eigenschappen, zoals het datatype en -lengte, maar ook kolommen die geschikt zijn als unieke sleutel, geautomatiseerd bepaald worden.
/i/1217426340.png?f=thumb)
SQL Server 2008 Data Profiling
Naast het profilen kan de data ook geschoond worden. Hierbij is bijvoorbeeld te denken aan het toepassen van een regular expression op een postcodeveld, zodat alle records volgens hetzelfde masker ingelezen worden.
Met Change Data Capture worden wijzigingen in tabellen automatisch bijgehouden. Dat heeft als voordeel dat er een uitgebreide statushistorie van de tabellen beschikbaar is; het is bovendien eenvoudig om op basis van de cdc-tabellen een achterliggend datawarehouse bij te werken.
Bij het laden van gegevens uit een externe bron moet vaak een update-, insert- of delete-statement uitgevoerd worden, afhankelijk van de bestaande data. Dat betekent dat er meerdere queries gedraaid moeten worden. Voor deze situaties is een nieuw statement toegevoegd: de merge. Met dit statement wordt een record toegevoegd als het niet bestaat en als er wel al een vergelijkbaar record aanwezig is, wordt dat bijgewerkt.
Rapportage
De rapportage wordt uiteraard uitgevoerd via Reporting Services, de ingebouwde rapportgenerator van SQL Server. De rapportdesigner is volledig vernieuwd om eenvoudiger rapporten te kunnen bouwen. Ook kunnen eindgebruikers nu wijzigingen in hun rapportage aanbrengen. Voor een fraaie grafische weergave van de rapporten worden componenten van leverancier Dundas gebruikt.
/i/1217426936.png?f=thumb)
SQL Server 2008 Report Designer
Naast de rapportdesigner is ook de integratie met Microsoft Office verbeterd. Olap-cubes uit het datawarehouse kunnen bijvoorbeeld eenvoudig met behulp van Excel verwerkt worden.
Bovenstaand overzicht van de business-intelligencemogelijkheden van SQL Server 2008 is vrij summier en doet niet volledig recht aan alle wijzigingen. Het gaat echter te ver om alle specialistische zaken als star join-queries en write-back molap hier te bespreken. Op de SQL Server BI-site is veel informatie over de verschillende mogelijkheden te vinden.
Tot slot
Dit artikel heeft in vogelvlucht een aantal van de belangrijkste punten van de nieuwe release van SQL Server behandeld. Zelf met de nieuwe omgeving stoeien kan uiteraard ook. De Release Candidate 0 is gratis te downloaden en kan gedurende 180 dagen gebruikt worden. Het is wel belangrijk ruim de tijd voor de installatie te nemen: het installatieproces verloopt weliswaar redelijk vloeiend, maar kost gauw een uurtje of twee als niet alle bijbehorende software al geïnstalleerd is. Een ander puntje van aandacht is het feit dat SQL Server Management Studio 2005 gedeïnstalleerd moet worden. Het is wel weer mogelijk met de 2008-versie een 2005-database te beheren.
Alles in ogenschouw genomen is de overgang van SQL Server 2005 naar 2008 waarschijnlijk niet zo groot als de overstap naar 2005 een paar jaar terug was. Toch is er een groot aantal features toegevoegd die op zijn minst de moeite van het bekijken waard zijn. Alle veranderingen maken van SQL Server 2008 een nog veelzijdiger werkpaard waarmee SQL Server zijn leidende positie op de vaderlandse databasemarkt moet kunnen verdedigen.