Beknibbelen

Kijk, een voorbeeld van hoe The Master Genealogist vroeger ooit wel eens goed moet geweest zijn, maar nu akelig verouderd is.

In de dbf die de persoonsinformatie bevat (nu ja, niet écht, want die zit verspreid over een hele hoop files, maar bon) staat het ID van de laatste partner van deze persoon.

Dat is fijn, dat is goed, dat is geen probleem. Denormalisatie kan wel als het echt nodig is.

Maar! Hoe worden persoonID’s opgeslagen? Niet moeilijk: als getallen tot 10 cijfers, dus er kunnen tot 999.999.999 personen in de database geplaatst worden. En dan nu voor de clou: hoe wordt die “laatste partner” opgeslagen? Als char 3!! In base 255, als drie letters/cijfers/tekens. Dus pak bijvoorbeeld persoon nummer 38736, die wordt opgeslagen als “ç? “(char(231) & char(151) & char(0), omdat 231 x 256^0 + 151 x 256^1 + 0 x 256^2 = 38736).

Ik heb er geen enkel probleem mee dat een dergelijke encodering zou gebeuren, maar waarom niet gewoon UUID’s gebruiken of zo? De reden is volgens Wholly Genes “this helps conserve space”. Aaaargh! En dan in dezelfde database worden beelden intern opgeslagen in een TIFF-achtig formaat met een soort verbasterde BASE64-encoding, waardoor tabellen opgeblazen worden tot monsterachtige groottes!

Des économies de bout de chandelle, de prutsers.