Google+ Followers

dinsdag 11 juni 2013

Documentbased PostgreSQL (of: NoNoSQL)

Een van de grote voordelen van NoSQL is ook meteen het grootste nadeel: er is geen stricte structuur die aangeeft hoe elk record eruit moet zien.

In de praktijk echter wil je altijd een hoeveelheid houvast, dingen waarvan het gegarandeerd is dat je ze in elk record zult aantreffen. Veel NoSQL implementaties hangen daarom zelf al een identifier aan elk record.

PostgreSQL zou PostgreSQL niet zijn als het niet mogelijk zou zijn omhet beste van twee werelden te gebruiken. Via XML of JSON is dat een relatieve peulenschil en een voorbeeld hiervan is te vinden op:
http://blog.endpoint.com/2013/06/postgresql-as-nosql-with-data-validation.html

Het idee is simpel; maak een tabel met een JSON kolom erin en maak CHECK CONSTRAINTs en functionele indexes. De CHECKs garanderen dat elk JSON object altijd de minimale benodigde velden heeft en alles wat er extra in zit wordt volledig genegeerd en opgeslagen as-is. De functionele indexes maken het mogelijk om snel te zoeken in de data  (want je zoekt alleen in data waarvan je al weet dat je ze hebt).

De mogelijkheden zijn legio; persoonlijk ga ik eens kijken of ik mijn WIED project (Website In Een Database) kan uitbreiden naar JSON om zo een productdatabase te laten opboeren zonder de velden te definieren, en toch te garanderen dat alle data klopt.