Tijd om verder te gaan: Queryen zonder Nulls en Bags
Samenvatting
SQL is het succesverhaal van de databasegemeenschap op het gebied van taalontwerp. De belangrijkste reden voor dit succes is de declaratieve aard ervan: dit maakt optimalisatie mogelijk, wat de last voor de programmeur aanzienlijk vermindert. Gezien de evoluerende complexiteit van de problemen die met querytalen moeten worden opgelost, moet onze gemeenschap echter opnieuw nadenken over enkele fundamentele vroege ontwerpbeslissingen.
Onze ervaring met het ontwerp van Rel (een taal voor end-to-end relationeel programmeren) leert ons dat het mogelijk is om een taal te ontwerpen, implementeren en succesvol inzetten die is gebaseerd op volledig genormaliseerde relaties. Dergelijke relaties vermijden wat Codd "gecorrumpeerde relaties" noemde — tegenwoordig algemeen aangeduid als bags (multisets) — en de "fout van een miljard dollar" die we kennen als nulls.
In de wereld van SQL is het geaccepteerd dat bags en nulls worden getolereerd als een onvermijdelijk kwaad. Wij betogen dat dit kwaad volledig vermijdbaar is: de redenen die worden aangevoerd om bags and nulls te rechtvaardigen, verdwijnen bij nadere bestudering. Naast het ontkrachten van deze argumenten beschrijven we ook de kansen die geboden worden door een taal zonder nulls met verzamelingsemantiek (set semantics).
Groetjes,