SQL of NoSQL? Hoewel deze twee databases over­een­kom­sten vertonen, is er een optie die beter bij u past, af­han­ke­lijk van het beoogde gebruik. De volgende ver­ge­lij­king tussen MongoDB en Post­greSQL richt zich voor­na­me­lijk op snelheid en be­vei­li­gings­fac­to­ren.

MongoDB: Ho­ri­zon­ta­le schaal­baar­heid en maximale flexi­bi­li­teit

Om de ver­schil­len­de methoden in deze ver­ge­lij­king te begrijpen, geven we u een kort overzicht van de databases MongoDB en Post­greSQL zelf. MongoDB dankt zijn naam aan het Engelse woord ‘humongous’ (enorm). Het systeem werd in 2009 ge­pu­bli­ceerd door 10gen (nu MongoDB Inc.). Het is ontworpen om ge­brui­kers in staat te stellen enorme hoe­veel­he­den gegevens op een dui­de­lij­ke en beknopte manier te beheren. Om dit mogelijk te maken, is de NoSQL-database bijzonder flexibel en ge­mak­ke­lijk schaal­baar. De ge­struc­tu­reer­de, semi-ge­struc­tu­reer­de of on­ge­struc­tu­reer­de gegevens worden op­ge­sla­gen in het JSON-achtige formaat BSON in de vorm van do­cu­men­ten. MongoDB is ge­schre­ven in C++ en wordt nog steeds we­reld­wijd ge­dis­tri­bu­eerd onder de open source SSPL.

Post­greSQL: een vermeende oldie met moderne voordelen

In onze ver­ge­lij­king tussen MongoDB en Post­greSQL hanteert de tweede oplossing een totaal andere aanpak. Post­greSQL werkt volledig re­la­ti­o­neel en plat­for­mon­af­han­ke­lijk, hoewel ook niet-re­la­ti­o­ne­le ge­ge­vens­ty­pen worden on­der­steund. Het systeem verscheen voor het eerst in 1996 en is, althans ge­deel­te­lijk, gebaseerd op databases die sinds de jaren tachtig aan de Uni­ver­si­teit van Berkeley zijn ont­wik­keld. Het systeem, dat wordt on­der­hou­den door de Post­greSQL Global De­vel­op­ment Group, is vandaag de dag nog steeds open source. Post­greSQL claimt de meest ge­a­van­ceer­de open-source database ter wereld te zijn. Wat zeker is, is dat het we­reld­wijd wordt ge­waar­deerd om zijn flexi­bi­li­teit en sta­bi­li­teit. Het be­heer­sys­teem is ge­schre­ven in C en wordt vaak simpelweg ‘Postgres’ genoemd.

Waarvoor worden MongoDB en Post­greSQL gebruikt?

Op het eerste gezicht lijkt onze ver­ge­lij­king tussen MongoDB en Post­greSQL te sug­ge­re­ren dat beide databases voor ver­ge­lijk­ba­re doel­ein­den kunnen worden gebruikt. Beide op­los­sin­gen zijn goed door­dach­te, zeer func­ti­o­ne­le en relatief flexibele databases die orde en overzicht ga­ran­de­ren, zelfs bij grote of toe­ne­men­de da­t­avo­lu­mes. Een meer ge­de­tail­leer­de analyse laat zien dat bedrijven op basis van hun eigen vereisten moeten beslissen wie er in de ver­ge­lij­king tussen MongoDB en Post­greSQL de overhand heeft en welke database het beste aansluit bij hun behoeften.

De NoSQL-oplossing scoort bijzonder goed als u een systeem nodig hebt dat mee kan groeien met uw vereisten. Dit geldt niet alleen voor de enorme hoe­veel­heid gegevens, maar ook voor ver­schil­len­de ge­ge­vens­ty­pen. MongoDB heeft ho­ri­zon­ta­le schaal­baar­heid, waardoor het systeem de ideale oplossing is in de e-com­mer­ce­sec­tor, waar trans­ac­tie­ge­ge­vens snel en veilig moeten worden over­ge­dra­gen. Deze voordelen, in com­bi­na­tie met de flexi­bi­li­teit met be­trek­king tot ge­ge­vens­ty­pen, zorgen ervoor dat MongoDB een uit­ste­ken­de keuze is voor con­tent­ma­na­ge­ment­sys­te­men. Als u con­fi­gu­ra­tie­op­ties en uit­ge­brei­de ana­ly­se­func­ties in realtime nodig hebt, is MongoDB het overwegen waard.

Post­greSQL is geschikt voor uit­ge­brei­de we­bap­pli­ca­ties en biedt waar­de­vol­le middelen voor e-commerce. Het systeem is een goede keuze voor toe­pas­sin­gen in de cloud en het internet der dingen. Post­greSQL is ook zeer effectief in sa­men­wer­king met andere databases.

Func­ti­o­na­li­teit

De wegen die MongoDB en Post­greSQL hebben bewandeld om hun doelen te bereiken, zijn heel ver­schil­lend. Als pure NoSQL-oplossing ziet MongoDB volledig af van rigide re­la­ti­o­ne­le tabellen en werkt het in plaats daarvan op een do­cu­ment­ge­o­ri­ën­teer­de manier. Deze binaire JSON-do­cu­men­ten (BSON genoemd) worden ver­vol­gens sa­men­ge­vat in col­lec­ties. Het systeem is gebaseerd op sleutel-waar­de­pa­ren. De sleutel bestaat hier uit een te­ken­reeks; de waarden kunnen andere do­cu­men­ten, Boole­aan­se waarden, getallen of volledig andere be­stands­ty­pen zijn. De structuur van een JSON-document kan eenvoudig worden gewijzigd door af­zon­der­lij­ke velden te ver­wij­de­ren of toe te voegen. Er is een tekst­zoek­func­tie be­schik­baar om spe­ci­fie­ke do­cu­men­ten te iden­ti­fi­ce­ren. Er wordt rekening gehouden met ge­struc­tu­reer­de, semi-ge­struc­tu­reer­de en on­ge­struc­tu­reer­de gegevens.

Ter ver­ge­lij­king: Post­greSQL volgt een re­la­ti­o­ne­le be­na­de­ring. Hoewel er talrijke NoSQL-al­ter­na­tie­ven zijn, heeft het gebruik van een op tabellen gebaseerd systeem ook zo zijn voordelen. Een be­lang­rijk kenmerk van Post­greSQL is dat het be­heer­sys­teem veel flexi­be­ler is dan andere SQL-opties en kolommen met sub­waar­den toestaat. Het da­ta­ba­se­be­heer­sys­teem maakt ook gebruik van externe sleutels en triggers. Query’s worden uit­ge­voerd volgens het klassieke client-ser­ver­prin­ci­pe. Bestanden en ver­bin­din­gen worden beheerd via de centrale ser­ver­com­po­nent ‘post­mas­ter’. Ver­schil­len­de clients sturen ver­vol­gens hun query’s. Post­greSQL on­der­steunt talrijke ge­ge­vens­ty­pen, hoewel deze vooraf moeten worden ge­struc­tu­reerd.

Pres­ta­ties

De naam MongoDB sug­ge­reert dat het zonder problemen enorme hoe­veel­he­den gegevens kan verwerken. Het systeem maakt deze belofte volledig waar. De database is ho­ri­zon­taal schaal­baar en niet af­han­ke­lijk van de re­ken­kracht van een in­di­vi­du­e­le machine. Dankzij de com­bi­na­tie van opties met een breed scala aan hardware zijn er in theorie geen grenzen aan de pres­ta­ties en op­slag­ca­pa­ci­teit. Zelfs wanneer talrijke ge­brui­kers te­ge­lij­ker­tijd toegang hebben tot de gegevens, blijft de zoek­snel­heid hoog. Sharding verdeelt de belasting over ver­schil­len­de computers. Dit draagt niet alleen bij aan betere pres­ta­ties, maar biedt ook de best mogelijke be­scher­ming tegen mogelijke ser­ver­sto­rin­gen.

Post­greSQL daar­en­te­gen schaalt gegevens verticaal en kan daardoor niet helemaal tippen aan de pres­ta­ties van de NoSQL-oplossing. Toch zijn de pres­ta­ties van het re­la­ti­o­ne­le systeem in­druk­wek­kend. Het is bij­voor­beeld mogelijk om schrijf- en lees­be­wer­kin­gen te­ge­lij­ker­tijd uit te voeren. Ge­ge­vens­au­then­ti­ca­tie en diep­gaan­de ge­ge­vens­ana­ly­se met lage latentie zijn vaak ook beter met Post­greSQL dan met veel van zijn com­mer­ci­ë­le con­cur­ren­ten. De database werkt met complexe ge­ge­vens­ty­pen en query’s en kan daarom ook punten scoren als het gaat om big data. Extra bronnen zoals geheugen of CPU’s kunnen worden toe­ge­voegd om aan toe­ne­men­de eisen te voldoen. Functies zoals just-in-time com­pi­la­tie en ta­bel­par­ti­ti­o­ne­ring helpen ook bij het verwerken van grote hoe­veel­he­den gegevens.

Com­pa­ti­bi­li­teit

Beide op­los­sin­gen werken plat­for­mon­af­han­ke­lijk en kunnen dus worden gebruikt op Linux, macOS, Solaris en Windows. Post­greSQL gaat nog een stap verder en werkt ook op FreeBSD, HP-UX, NetBSD en OpenBSD. De SQL-database is van nature ACID-com­pa­ti­bel (Atomicity, Con­sis­ten­cy, Isolation, Du­ra­bi­li­ty), terwijl MongoDB deze optie in ieder geval biedt. Beide systemen on­der­steu­nen talrijke pro­gram­meer­ta­len, waarbij de keuze in de ver­ge­lij­king tussen MongoDB en Post­greSQL aan­zien­lijk groter is bij het jongere systeem.

Pro­gram­meer­taal On­der­steund door Mongo DB On­der­steund door Post­greSQL
Ac­ti­ons­cript
C
C#
C++
Clojure
Cold­Fu­si­on
D
Dart
Delphi
Erlang
Go
Groovy
Haskell
Java
Ja­vaScript
Kotlin
Lisp
Lua
MatLab
.net
Perl
PHP
Po­werS­hell
Prolog
Python
R
Ruby
Scala
Smalltalk
Swift
Tcl

Be­vei­li­ging

Een van de be­lang­rijk­ste redenen waarom ge­brui­kers voor Post­greSQL kiezen, is de sterke be­vei­li­gings­ar­chi­tec­tuur van de database. Deze omvat het Lightweight Directory Access Protocol (LDAP) en een Pluggable Au­then­ti­ca­ti­on Module (PAM), evenals host­ge­ba­seer­de au­then­ti­ca­tie, ge­ge­vens­ver­sleu­te­ling en SSL-cer­ti­fi­ca­ten. De vooraf ge­de­fi­ni­eer­de da­ta­ba­se­struc­tuur zorgt er ook voor dat uw gegevens altijd op de best mogelijke manier worden beschermd. MongoDB heeft ook tal van be­vei­li­gings­func­ties, waaronder ver­sleu­te­ling op veld­ni­veau en aan de client­zij­de. De dis­tri­bu­tie naar ver­schil­len­de servers biedt bovendien een hoge mate van be­trouw­baar­heid en zorgt ervoor dat gegevens zonder grote ver­tra­gin­gen weer be­schik­baar zijn.

Wat zijn de ver­schil­len­de versies van MongoDB en Post­greSQL?

Een van de over­een­kom­sten tussen MongoDB en Post­greSQL is hun open-sour­ce­be­na­de­ring. Beide systemen zijn daarom niet alleen open source, maar ook gratis be­schik­baar, althans in hun ba­sis­ver­sie. Hoewel dit ook betekent dat er in dit geval geen pro­fes­si­o­ne­le on­der­steu­ning is, com­pen­se­ren twee toe­ge­wij­de com­mu­ni­ties dit tekort en geven ze ook graag advies aan nieuw­ko­mers. De do­cu­men­ta­tie en uit­brei­dings­mo­ge­lijk­he­den zijn ook iets uit­ge­brei­der vanwege de langere markt­ken­nis van Post­greSQL. MongoDB biedt ook ver­schil­len­de Pro-versies. De versies ‘En­ter­pri­se’ en ‘Atlas’ (voor gebruik in de cloud) zijn tegen betaling, maar hebben ook enkele extra functies en uit­ge­brei­de on­der­steu­ning.

Welke bedrijven gebruiken de twee databases?

Hoewel uit de ver­ge­lij­king tussen MongoDB en Post­greSQL blijkt dat de twee op­los­sin­gen twee zeer ver­schil­len­de be­na­de­rin­gen hanteren, hebben ze toch één ding gemeen: talrijke grote bedrijven ver­trou­wen volledig of ge­deel­te­lijk op de diensten en voordelen die de twee databases hen bieden.

De bekendste bedrijven die ge­bruik­ma­ken van MongoDB zijn onder andere:

  • Adobe
  • Amadeus
  • AppScale
  • Craftbase
  • Disney
  • Etsy
  • Foursqua­re
  • Lyft
  • MTV
  • The New York Times
  • Via Varejo

Post­greSQL wordt onder andere gebruikt door de volgende bedrijven en platforms:

  • Apple
  • IMDB
  • Instagram
  • Reddit
  • Runkeeper
  • Skype
  • Spotify
  • Twitch
Ga naar hoofdmenu