NoSQL is een verzamelnaam voor databases die data opslaan in andere formaten dan het strikte rijen-en-tabellenmodel van een traditionele relationele database. De naam betekent ‘not only SQL’, en de gedeelde gedachte is flexibiliteit: documenten, key-value-paren, wide columns of graphs, afhankelijk van wat het best bij de data past.
Een handige manier om het voor te stellen is het verschil tussen een strakke spreadsheet en een doos met gelabelde mappen. Een spreadsheet dwingt elke regel om dezelfde kolommen te hebben, terwijl elke map kan bevatten wat een specifiek geval nodig heeft. Een relationele database zoals MySQL is de spreadsheet; een NoSQL-store in documentstijl is de doos met mappen, waarin het ene klantrecord extra velden kan dragen die een ander niet heeft. Die flexibiliteit, en de manier waarop veel NoSQL-systemen zich over veel servers verspreiden, is waarom ze vaak leunen op eventual consistency in plaats van directe overeenkomst overal.
NoSQL is geen vervanging voor relationele databases, het is een ander gereedschap. Het blinkt uit bij grote schaal, snel veranderende vormen van data, of speciale behoeften zoals de in-memory snelheid van Redis. Voor strak gekoppelde, gestructureerde records wint het relationele model meestal nog steeds.
Een helder voorbeeld is een productcatalogus. Een boek heeft een auteur en een aantal pagina’s; een t-shirt heeft een maat en een kleur; een download heeft een bestandsgrootte. In een strakke tabel zou je voor elk mogelijk kenmerk een kolom nodig hebben, de meeste leeg. Een document store laat elk product alleen de velden dragen die het nodig heeft, dus de rommelige variatie van een echte catalogus vecht niet langer tegen de database maar past erin.
Bij TopDevs grijpen we naar NoSQL als de data van een klant niet netjes in tabellen past, zodat de opslag past bij de vorm van de data in plaats van ertegen te vechten.