Nu nog werken beheerders vooral met traditionele, relationele databases: SQL Server, MySQL, Oracle, IBM DB2. Maar als het aan sommige ontwikkelaars ligt, zullen ook niet-relationele databases snel deel uitmaken van je ict-omgeving.

CouchDB is een open source databaseproject dat valt onder de Apache-projecten. Ondanks dat het project pas afgelopen week in de bètafase is beland, zijn meerdere bedrijven al bezig met de implementatie van CouchDB in een productieomgeving. Sinds vorig jaar is CouchDB officieel een Apache-project.

Het concept

CouchDB is een database-systeem dat is gebaseerd op documenten, en dus niet op relaties zoals SQL-databases. Gegevens staan opgeslagen als JSON-documenten in plaats van tabellen, waardoor de index heel erg dicht op de gegevens zelf staat. "Je kunt het vergelijken met een bak voor visitekaartjes", zegt ontwikkelaar Nils Breunese van omroep VPRO. Die organisatie heeft de database sinds een paar maanden in productie draaien. "Het ene visitekaartje heeft naam met telefoonnummer, terwijl het andere visitekaartje ook nog een faxnummer heeft. Bij een relationele database zou het kaartje zonder faxnummer daar alsnog een entry voor moeten hebben. Die entry krijgt dan een nulwaarde. Bij document-gebaseerde databases zoals CouchDB hoeft dat niet." Ook hoeft niet voor elk 'kaartje' apart de tabel worden geraadpleegd om de data in een begrijpelijke context te plaatsen.

"CouchDB is een beetje anders dan andere Slacker DB's", zegt Jan Lehnardt, een van de hoofdontwikkelaars van CouchDB. "Het is vooral beïnvloed door Lotus Notes van IBM. Het grote voordeel van Notes was namelijk de mogelijkheid voor offline-replicatie." Een gebruiker kan offline veranderingen aanbrengen, en de verbeteringen worden in de centrale database doorgevoerd op het moment dat hij weer online komt. "Dat kan met meerdere gebruikers tegelijk", zegt Lehnardt.

Voordelen

De manier waarop CouchDB werkt heeft een paar voordelen. Queries kunnen veel sneller worden verwerkt, en bij elke verandering in de data hoeft niet de gehele index opnieuw te worden opgebouwd. "Maar ik ga niet zeggen dat CouchDB sneller is dan wat dan ook, want dan zou ik me op glad ijs begeven", zegt Lehnardt. "De sleutel is bij CouchDB dat het minder complex is. De queries zijn veel simpeler dan bij bijvoorbeeld SQL, al is die laatste een stuk krachtiger."

Zeker bij moderne applicaties zijn veel functies die relationele DB's bieden domweg niet nodig, zegt Lehnardt. "Vergelijk het met een tekenprogramma als Photoshop. De meeste gebruikers hebben uiteindelijk maar 10 procent nodig van de functies die dat programma biedt."

"Oorspronkelijk is SQL ontwikkeld om bijvoorbeeld wetenschappers en mensen in de financiële sector een erg krachtige tool te geven waarmee ze complexe, dynamische queries kunnen maken voor hun databases. Bovendien moesten ze de queries heel erg efficiënt maken, omdat computerkracht 20 à 30 jaar geleden heel erg duur was." Bij CouchDB is dat volgens Lehnardt anders. "Het werkt het best als de ontwikkelaar al weet wat voor queries er binnenkomen. Je moet alle mogelijke queries dus van tevoren definiëren. Het is wel heel flexibel, maar het is dus niet zo dynamisch. Applicaties die met dynamische queries werken, zijn nog steeds beter af met SQL-databases."

In productie

Meerdere organisaties zetten CouchDB al in. "Een van mijn collega's was op de QCon-conferentie bij een presentatie van iemand van de BBC", vertelt Breunese van de VPRO. "Het grappige was dat het helemaal niet over de database ging, maar op de laatste slide liet de presentator kortstondig zien met welke projecten ze nog meer bezig waren. Daar stond CouchDB ook tussen."

Dat ontwikkelaars enthousiast zijn, ligt volgens er Breunese aan dat CouchDB een bijzonder compleet pakket is, dat op hen is toegesneden. "Wat mij persoonlijk vooral aansprak is dat het http praat. Je hoeft dus niet met allemaal toestanden als web services te werken", zegt Breunese. "Het opslagformaat is JSON, en ik denk dat veel ontwikkelaars die met php of Javascript werken daar blijer van worden dan met xml; het is makkelijker leesbaar, en het is een soort native-manier in Javascript om objecten te beschrijven. Je hebt geen zware parsers nodig."

Onder de streep concentreert CouchDB zich meer op webapplicaties, en dat heeft geholpen in de keus voor CouchDB. "Je hebt bijvoorbeeld geen aparte webserver nodig. Die zit er al ingebouwd", zegt Breunese, waardoor de load op de webserver-hardware een stuk lager is dan eerst." Een ander hardware-voordeel dat CouchDB biedt, is dat het weinig RAM-geheugen gebruikt. "Bij ons verbruikt het niet meer dan 10 megabyte aan geheugen. Zelfs als je een atom-feed zou genereren met 10.000 programma's erin, is de hoeveelheid opgeslokte geheugen een lachertje."

CouchDB moet een ouder systeem vervangen dat al heel lang in gebruik is bij de omroep. "De VPRO was er vroeg bij met internet, met een website live in 1994. Dat is ook de reden dat we naar iets nieuws zochten: onze oude omgeving begon zijn leeftijd te tonen. We draaien al 12 jaar hetzelfde cms, en waarvoor het gemaakt is doet hij het nog prima. Maar mensen willen nu meer dan dat."

Na een Pilot-project, wordt de database gebruikt om gidsgegevens te tonen in verschillende bronnen. "Alle gegevens worden standaard gecached, en het performt als een gek!", zegt Breunese. "Het wordt gehost door de Nederlandse Publieke Omroep, ergens in zijn Linux-cluster."

Nog niet helemaal klaar

Toch is het DB-systeem nog niet 100 procent bedrijfsklaar. CouchDB maakt vooral furore in de ontwikkel-scene, maar het slaat nog niet aan bij beheerders. Dat ligt volgens Lehnardt bijvoorbeeld aan het voorlopige gebrek aan documentatie. "We hebben nog geen handleiding voor systeembeheerders. Zelf ben ik bezig met het schrijven van een handboek voor O'Reilly, maar dat is ook gericht op developers. Uiteindelijk komt er een handleiding, maar wanneer is nog niet bekend." Bijna net zo belangrijk is dat er nog geen trainingen beschikbaar zijn.

Een ander punt is dat ondanks dat steeds meer bedrijven met CouchDB werken, de database nog niet specifiek gericht is op commercieel gebruik. "Ik lees de CouchDB user-mailinglist veel, en heb veel presentaties gezien. Ze mikken vooral op mensen die nu met php en MySQL op hun zolderkamertje een hip 2.0 webservertje in elkaar zetten", zegt Breunese. "Maar dat betekent niet dat het niet werkt voor andere toepassingen. Voor ons werkt het prima." Lehnardt geeft ook toe dat commerciële ondersteuning niet bepaald voor het oprapen ligt. Zijn bedrijf couch.io doet dat weliswaar, maar heel veel andere mogelijkheden zijn er niet. "Beheerders zijn aangewezen op support van de open source-gemeenschap, en dat schrikt veel bedrijven af", zegt Lehnardt. "Bedrijven zijn vaak conservatief in die dingen, en met goede redenen."

Daar komt nog bij dat CouchDB nog maar net in de bèta zit, voor bedrijven meestal een reden om iets niet in productie te nemen. Toch hoeft dat geen probleem te zijn; bij de VPRO kozen ze er zelfs voor om de DB in te zetten toen deze officieel nog in de alfa zat. "We gebruiken het nog niet voor al onze databases en al onze gegevens", zegt Breunese. "Het is nu alleen in gebruik voor onze gidsgegevens, en dat is een heel afgebakend stukje functionaliteit. We hebben het goed kunnen testen, en het heeft geholpen dat de BBC het ook al draait."

In de toekomst wil de VPRO de huidige diensten verder uitbreiden, en kijkt de omroep of ook iets met de andere databases gedaan kan worden. "Je kunt bijvoorbeeld API's aan het publiek aanbieden."

"Het gaat ons er niet om SQL-databases weg te drukken", voegt committer Lehnardt nog toe. "Wij geloven sterk in het gebruik van de juiste tools voor de juiste taken. We geloven er niet in dat CouchDB ooit net zo groot zal worden als de enterprise-databases." Bron: Techworld