Recentelijk dook ik in de archieven op zoek naar oude artikelen die ik jaren geleden heb geschreven. Noem het een ‘walk down memory lane’. Stiekem was ik benieuwd of er nog materiaal tussen zat dat anno 2018 nog steeds relevant is. Eerder schreef ik al over ‘de eeuwige weerstand tegen nieuwe technologie’ en ‘hoe SQL het al zo lang heeft overleefd’. Het derde artikel dat mijn aandacht trok ging over carefree databaseservers.
Waarom zijn databaseservers niet net zo eenvoudig als deuren of televisies? Deuren hang je op, stel je af en daarna doen ze het gewoon. Je hebt geen specialist nodig die elke dag komt kijken of de deur nog goed hangt of bijgesteld moet worden. Ze werken tot ze kapot of verouderd zijn en dan vervang je ze. Met televisies is het niet anders. Na aanschaf stel je alles één keer af en vervolgens gebruik je het toestel totdat er iets kapot gaat. Ook voor televisies hoeven er niet wekelijks specialisten langs te komen. Stel je voor dat je een databaseserver één keer installeert, optimaliseert en afstelt en vervolgens kan gebruiken zonder ernaar om te kijken. Je zou geen database-analist meer nodig hebben, die voortdurend parameterinstellingen aanpast, buffers vergroot, back-ups maakt, indexen toevoegt, et cetera.
Deze databaseservers noemen we nu self-driving, autonomous of unattended databaseservers. Hoewel het misschien onwerkelijk klinkt, bestonden er in 1999 al voorlopers van dit soort databaseservers, de zogenoemde carefree databaseservers. In een artikel in het Belgische blad CorporateNet uit 1999 ging ik in op deze ‘innovatie’.
Van stoom naar elektriciteit
Mei 1999 – CoporateNet
Het is een bekend fenomeen. Als we een database installeren en er vervolgens gegevens in plaatsen, zal de performance van de database langzaam verslechteren. Hoe komt dat? Heel simpel, de database raakt vervuild. Bijvoorbeeld, omdat gegevens online toegevoegd, gewijzigd en verwijderd worden, ontstaan “gaten” die een negatief effect hebben op I/O. Om deze reden raken de statistische gegevens die zo essentieel zijn voor de optimiser uit de pas. En zo zijn er meer redenen.
Elke databasebeheerder weet dit en scheduled daarom periodiek jobs om gegevens te reorganiseren, om statistische informatie bij te laten werken (zodat de optimiser de meest recente gegevens heeft), enzovoorts. Daarnaast moet hij of zij continu diverse parameters bijstellen omdat bijvoorbeeld de workload verandert (er komen meer gebruikers bij) en andere applicaties worden geïnstalleerd. Deze parameters hebben onder andere invloed op de buffergrootte of de wijze van locken.
Oude stoomlocomotieven
Kortom, een databaseserver moet de gehele dag in de gaten gehouden worden (ofwel, vertroeteld worden) willen we er een acceptabele performance uithalen. Zo was het vroeger en zo is het nog steeds. Omdat ervaren databasebeheerders dit werk al jaren doen en soms met een lichte draai aan een voor iedereen onbekend knopje de performance van heel slecht tot heel goed kunnen veranderen, worden ze veelal door hun collega’s als magiërs beschouwd.
Eigenlijk hebben deze databaseservers iets weg van de oude stoomlocomotieven. Hier moest de machinist ook continu bezig zijn. Hij moest aan hendeltjes draaien, palletjes overhalen om klepjes meer open te zetten, of kolen op het vuur gooien, noem maar op. Dit in tegenstelling tot de moderne elektrische locomotieven, waar de machinist eigenlijk alleen maar gas hoeft te geven en te remmen.
De vraag is of dit nog een gewenste situatie is? Als we praten over klassieke, data-entry-achtige systemen, dan is het antwoord waarschijnlijk ‘ja’. Hier willen we inderdaad honderd knoppen waaraan gedraaid kan worden om de perfecte/maximale performance te krijgen. Ook in zware datawarehouse-omgevingen zal deze noodzaak bestaan. Maar wat als we praten over databases die in kleine apparaatjes draaien of databases die meegeleverd worden met een of ander softwarepakket? Dan is het antwoord waarschijnlijk ‘nee’.
De noodzaak van carefree databaseservers
Er komen steeds meer kleine apparaten op de markt waarbinnen databases draaien. Denk aan portable telefoons, palmtop computers, productenscanners in winkels, boordcomputers van auto’s, en ga maar door. Al deze apparaten willen gegevens opslaan. Een database die vertroeteld wil worden, is hier onacceptabel. Stelt u zich eens voor dat als u uw portable telefoon meeneemt u ook een databasebeheerder moet meenemen, in het geval de performance van de database terugloopt. Of als u plotseling moet remmen, het dashboard in uw auto vertelt dat dat nu even niet kan, omdat de databaseserver heeft besloten eerst wat gegevens bij te werken. Nee, dit soort databases behoort zichzelf te regelen. Naar dit onderwerp is veel research gedaan en heeft geleid tot enkele interessante producten, waaronder IBM Cloudscape [is uiteindelijk Apache Derby geworden], Solid en SQLBase. Zij worden heel toepasselijk carefree databaseservers genoemd.
De andere situatie betreft aangeschafte softwarepakketten. Veronderstel dat een tandarts een pakket koopt voor het beheer van zijn patiëntenadministratie. En stel dat dit pakket intern een klassieke databaseserver gebruikt. Dit zou betekenen dat de tandarts periodiek de database moet optimaliseren om de performance op een acceptabel niveau te houden. U kunt zich voorstellen dat een tandarts hier geheel niet in geïnteresseerd is en waarschijnlijk ook niet de tijd voor heeft. (Of zou dit de reden zijn waarom je ’s ochtends soms zo lang moet wachten). Databases die in dit soort omgevingen worden ingezet, worden vaak aangeduid met de term embedded databases. Ook hier geldt dat hoe meer carefree deze producten zijn, hoe beter het is. De Progress-databaseserver is een prima voorbeeld van een dergelijk product.
Uiteraard zijn de carefree databaseservers nog niet geschikt voor het hele zware werk. Daar willen we nog steeds allerlei knoppen hebben om de performance te verbeteren. De carefree databaseservers rukken echter op. Waren ze in het begin alleen geschikt voor de opslag van alle namen van de goudvissen in je privé-collectie, tegenwoordig staan ze al hun mannetje in departementale omgevingen. Laten we hopen dat deze ontwikkeling doorgaat en dat we steeds minder tijd hoeven te besteden aan dit afstemmen van databases. Misschien kunnen we dan allemaal binnenkort onze stoomlocomotieven aan de kant zetten (of in het museum) en kunnen we allemaal overstappen op een elektrische. Het zou ons veel geld besparen.
Advies: Ga deze producten eens bekijken. Bestudeer of ze al krachtig genoeg zijn voor uw workload. Hiermee maken we in ieder geval de leveranciers van de stoomlocomotieven zenuwachtig en zullen ook zij meer gaan overwegen hun databaseservers carefree te maken.
De stap naar carefree duurt langer dan gedacht
Eigenlijk is er sindsdien niet veel veranderd. Veel bekende databaseservers waar we al jaren mee werken draaien nog steeds niet autonoom. Misschien is de Progress databaseserver een uitzondering. Pas in de laatste jaren ontwikkelen we producten die we werkelijk als carefree kunnen bestempelen. SnowflakeDB is bijvoorbeeld een carefree databaseserver voor de cloud. Hetzelfde geldt voor memSQL en ook de recent aangekondigde Oracle Autonomous Data Warehouse Cloud behoort tot deze categorie.
Je zou denken dat nieuwe technologie voor opslag, zoals Hadoop, gelijk carefree wordt opgebouwd. Niets is minder waar. Als er een schaal bestond om de autonomiteit van een dataopslagplatform te weergeven, en die schaal loopt van volledig tot handenbinder, dan zit Hadoop dichter bij de laatstgenoemde schaal.
Uiteraard willen we dat onze databaseservers met elke versie weer meer functionaliteit, performance en schaalbaarheid leveren, maar autonoom opereren is ook een belangrijke en waardevolle eigenschap. Het maakt het in de lucht houden van databaseservers zoveel goedkoper. Misschien dat toegepaste kunstmatige intelligentie kan helpen om databaseservers autonomer te maken.
Als ik mijn oude artikel teruglees, concludeer ik dat het langer heeft geduurd dan ik dacht voordat autonoom opererende producten op de markt zouden verschijnen. Ik ben benieuwd hoe de markt er negentien jaar later uitziet. Is in 2037 alles autonoom? Eén ding weet ik zeker, dan ben ik gepensioneerd en heb ik misschien meer behoefte aan andere carefree producten.