Ik ben opgegroeid in de wereld van relationele databases. Dit zijn databases waar de informatie volgens een voorgedefinieerde structuur is opgeslagen. Een zeer krachtige technologie die nog dagelijks van toepassing is. De toenemende mate van snelgroeiende data oftewel ‘big data’ en de snel veranderende behoeften op het gebied van applicaties, creëren een behoefte aan meer ruimte voor flexibiliteit. Op het gebied van dataopslag komt er de laatste tijd een interessante techniek om de hoek kijken die hierop inspringt, namelijk No-SQL. In deze blog wil ik me verdiepen in deze technologie.
Anders dan de naam doet vermoeden betekent No-SQL niet Geen-SQL. Het staat voor ‘Not Only SQL’ oftewel niet alleen SQL. Het is een databasetechnologie waarbij geen relationeel model wordt gehanteerd en daardoor weinig eisen stelt aan de organisatie en de structuur van de data. De meeste No-SQL databases hanteren een techniek van key-values waarbij elke waarde gekoppeld is aan een sleutel die gelinkte data met elkaar verbind. Een belangrijk voordeel van deze benadering is dat de structuur van de data kan worden gewijzigd zonder dat dit consequenties heeft op de vorm van opslag.
Het aanroepen van deze data gaat via een API (interface voor het aanspreken van programmatuur). In tegenstelling tot een relationele database zijn No-SQL transacties niet altijd 100% nauwkeurig. De snelheid van het verwerken van grote hoeveelheid data is belangrijker. Deze techniek is daardoor niet geschikt voor databases waarbij 100% betrouwbaarheid een voorwaarde is. Ik denk daarbij aan financiële data.
Een belangrijk voordeel van No-SQL databases is dat het horizontaal schaalbaar is. Oftewel je kan de rekenkracht eenvoudig verdelen over grote hoeveelheden servers. Bij een relationele database kan je alleen verticaal schalen. Een enkele server moet over meer capaciteit gaan beschikken om een toenemende vraag naar rekenkracht te beantwoorden. Verticaal schalen is vele malen duurder dan horizontaal schalen. Bij extreme hoeveelheden data is dit een belangrijk argument om voor No-SQL te kiezen.
Technologiebedrijven die met grote hoeveelheden data werken zoals Facebook, Twitter en Google maken al massaal gebruik van No-SQL. Een aantal hiervan heeft zelf ook een eigen database hiervoor ontwikkeld en beschikbaar gesteld aan de opensource community. Een aantal voorbeelden van No-SQL databases zijn:
– MangoDB
– HBase (wordt gebruikt door Facebook)
– Couchbase
– BigTable (wordt gebruikt door Google)
– Cassandra
No-SQL is geen vervanger van een relationele database. De structuur en bijbehorende intelligentie die wordt gebruikt in een relationele database zorgt voor betrouwbare en nauwkeurige data. Voor veel bedrijfskritische applicaties is dit absoluut een voorwaarde.
Voor de verwerking van grote hoeveelheden data is No-SQL echter een prima alternatief. Ook voor stuurinformatie op basis van grote hoeveelheden data zie ik mogelijkheden. Ik stel me zo voor dat we allerlei omgevingsdata, die invloed hebben op de prestaties van een bedrijf, binnenhalen en opslaan met deze technologie om hierop voorspellende analyses te baseren.