Database: de basis van dynamische webapplicaties en mobiele applicaties.

Wat is een database?

Een database is de plek waar een applicatie zijn data opslaat en ophaalt. Een database is voor software applicaties essentieel, omdat veel applicaties dynamische content hebben. Dit houdt in dat een platform als Instagram in haar database alle gebruikers, posts en stories verwerkt. Over het algemeen heeft elke entiteit (bijvoorbeeld gebruikers) zijn eigen tabel, oftewel een lijst van rijen. Elke rij in deze tabel vertegenwoordigt een gebruiker binnen de applicatie. Zo staat er in een gebruiker rij bijvoorbeeld de naam, adres, e-mail en wachtwoord (versleuteld natuurlijk) van een gebruiker. Door verbinding te maken met de database kunnen login gegevens geverifieerd worden en alle posts van een gebruiker opgehaald worden. 

Welke soorten databases zijn er?

Softwareland zou softwareland niet zijn als er niet veel verschillende type databases beschikbaar zijn.
We maken onderscheid in de volgende categorieën: 

SQL database

Alle data wordt in een vooraf gedefinieerde tabelstructuur opgeslagen. Dit betekent dat de database van tevoren ontworpen wordt. In het ontwerp wordt bijvoorbeeld bepaald dat een gebruiker bestaat uit een naam, adres en wachtwoord.

De SQL database maakt het mogelijk om middels relaties data op te halen. In de praktijk wordt dit gedaan door een identificatienummer aan een entiteit (bijvoorbeeld een gebruiker) mee te geven. Om dit weer in het voorbeeld van Instagram te gieten: elke gebruiker heeft een “id” en elke Instagram post heeft een “gebruiker_id”. Bij elke post refereert de “gebruiker_id” naar het “id” van de gebruiker en kan er middels deze relatie alle posts van een gebruiker opgehaald worden.

Daarnaast kan de relatie afgedwongen worden. Elke “gebruiker_id” van een post moet terug te vinden zijn in de gebruikerstabel, anders geeft de database een error. Dit zorgt voor een betrouwbare database waar relaties gecontroleerd worden op correctheid.

NoSQL database

Een NoSQL database werkt in tegenstelling tot een SQL database zonder een vooraf gedefinieerde tabelstructuur. Een NoSQL database kan per document (vergelijkbaar met een rij in een SQL database) andere data bevatten, waar een SQL database op entiteitsniveau wordt gedefinieerd. Dit betekent dat elk “gebruikerdocument” binnen de database zijn eigen waardes kan hebben. Zo kan bij de gebruiker Henk bijgehouden worden wanneer hij geboren is en is bij Wilhelmina de geboortedatum niet terug te vinden zijn. 

In vergelijking met een SQL database ligt de foutgevoeligheid van de meeste NoSQL databases. Dit komt doordat de focus van een SQL database correctheid is en van een NoSQL database is de focus snelheid. Hierdoor komt het weleens voor dat de data die je ziet niet up-to-date is.

Een NoSQL database is natuurlijk niet enkel hoofdpijn. Als je alles op applicatieniveau goed regelt zul je weinig problemen ervaren met de flexibiliteit die de database geeft. Daarnaast heeft een NoSQL database vaak ook betere performance zolang het maar geen relationele taken hoeft uit te voeren. Tot slot zijn de meeste NoSQL databases makkelijker om te schalen dan een SQL database doordat een NoSQL database alle functionaliteiten van een SQL database mist. Hierdoor zijn er minder complexe onderdelen waarmee rekening gehouden moet worden als je de database opschaalt.

NewSQL database

Relationele en NoSQL databases hebben ieder hun voor- en nadelen. De laatste jaren is er echter een nieuwe database op komst; de NewSQL database. NewSQL pakt het beste van beide technieken om zo de optimale database te creëren. Het pakt de schaalbaarheid van NoSQL en de betrouwbaarheid van SQL databases en tracht zo de optimale database te worden. Het grootste probleem met NewSQL is dat het nog een nieuwe technologie is. Hierdoor zijn er nog geen bestaande integraties om het in te haken op bijvoorbeeld het Laravel framework (het back-end framework waar wij onze applicaties op ontwikkelen).

Welke specifieke databases zijn er?

Binnen Scrumble maken wij gebruik van twee verschillende database, MariaDB en Apache Solr.
Hieronder lees je waarom we ze gebruiken en voor welke use cases we ze inzetten.

Logo van MariaDB Foundation

MariaDB

MariaDB is een SQL database die gebaseerd is op MySQL. We kiezen hierin voor MariaDB in plaats van MySQL omdat het weliswaar dezelfde functionaliteiten heeft, maar de taken sneller uitvoert. Het is een betrouwbare manier van het opslaan van data en het kan op dit moment de workload van al onze huidige applicaties aan. Mocht de workload extreem toenemen dan zijn er nog opties om MariaDB op te schalen.

Logo van MariaDB Foundation
Logo van Solr

Apache Solr

Voor sommige applicaties gebruiken we MariaDB in combinatie met de NoSQL database Solr. In deze setup gebruiken we Solr als een secundaire database. We slaan alle data op in MariaDB en indexeren delen ervan in Solr. Je denkt nu waarschijnlijk, waarom zou je twee databases gebruiken? En als je er al twee gebruikt waarom gebruik je de tweede dan deels? Dit doen we omdat Solr extreem diepgaande zoekfunctionaliteiten heeft doordat het bovenop Apache Lucene gebouwd is en het voornamelijk voor het doorzoeken van data wordt gebruikt. Enkele voorbeelden van wat de zoekfunctionaliteit zo goed maakt zijn:

  • Fuzzy search, als je naar een stoel zoekt en je typt ‘stool’, dan snapt Solr nog steeds waar je naar op zoek bent;
  • Zeer snel, want niemand wordt vrolijk van applicaties waar het meerdere seconden duurt voordat je resultaten krijgt;
  • Suggesties, want zoeken gaat nog sneller als je ‘sto’ typt en het systeem begrijpt dat je naar ‘stoel’ zoekt en dus dat woord aanraadt.
 
Logo van Solr

Benieuwd naar ons portfolio?

Je wilt natuurlijk graag weten of wij de juiste partij zijn voor de ontwikkeling van jouw applicatie. Bekijk hier een greep uit ons portfolio.

Mocht je nog op zoek zijn naar meer informatie dan kun je altijd contact opnemen. We helpen je graag met antwoorden op jouw vragen.

Persoonlijk, professioneel en met passie.

Scrumble is ontstaan uit vriendschap. Drie vrienden met een passie voor alles wat met computers te maken heeft, maar met software in het bijzonder. Al op vroege leeftijd ontstond de lust om te ondernemen. Hierbij kwam de liefde en het talent voor webdevelopment, waardoor we allen met groot enthousiasme een uitdaging zien in het ontwikkelen van complexe maatwerk software. Het resultaat? Gebruikersvriendelijke en doeltreffende web- en mobile based applicaties.

foto van twee ontwikkelaars van scrumble die geconcentreerd aan het werk zijn
foto van het team van scrumble tijdens een potje tafelvoetbal
foto van een medewerker van Scrumble die geconcentreerd kijkt
foto van twee ontwikkelaars van scrumble die geconcentreerd aan het werk zijn
foto van het team van scrumble tijdens een potje tafelvoetbal
foto van een medewerker van Scrumble die geconcentreerd kijkt
Dit is onze contactpersoon Vincent van Laarhoven, met hem kan je contact opnemen
Dit is onze contactpersoon Vincent van Laarhoven, met hem kan je contact opnemen

Meer weten over maatwerk software? Vincent legt het je graag haarfijn uit.