As usu­al, it all start­ed out in­no­cent­ly enough. Su­san [ed: names have been changed to pro­tect pri­va­cy] had no way to meet the dead­lines her boss­es had set for her. Bob had re­cent­ly and abrupt­ly left the com­pa­ny, and Melis­sa was on an ex­tend­ed med­i­cal ab­sence, leav­ing Su­san to do the work of three peo­ple. That is, three peo­ple each try­ing to rec­on­cile a few dozen 40,000+ row Ex­cel spread­sheets rep­re­sent­ing the gen­er­al ledger of the For­tune 1000 com­pa­ny they con­sult­ed for. She was about to brush off ever-chatty and an­noy­ing Michael from Com­pli­ance when, for on­ce, he rec­og­nized the stress she was un­der and said some­thing use­ful.

[Tim here: I didn’t write this! I read it on a mail­ing list, uh, some­where, by Dave, uh, some­body, and I asked Dave “Where’d you get that? I wan­na link to it!” and Dave said “I wrote it, go ahead and share it.” Dave doesn’t have a canon­i­cal URL, he says, but this gen­tle­man clear­ly needs a blog.]

Use­ful and dan­ger­ous, that is.

“Hey, let me give you some­thing that’ll help. A friend in­tro­duced it to me, and it’s made my life amaz­ing­ly easy ev­er since,” he said. He hand­ed her a USB stick.

Su­san was un­der­stand­ably wary – the se­cu­ri­ty team was al­ways harp­ing on not plug­ging in USB de­vices from un­trust­ed sources, and Michael wasn’t ex­act­ly the type she would want to hang out with af­ter work. But se­cu­ri­ty didn’t have to close the book­s, ei­ther, so she re­luc­tant­ly ac­cept­ed it and plugged it in­to her work­sta­tion. Virus scans came up clean, and there was just one file on it:SQLite_In­staller.m­si.

She cre­at­ed her schemas and load­ed the CSV files in. Every­thing was con­sis­ten­t. Num­bers added up. The rush was in­cred­i­ble. For the first time since tak­ing this job, high strung Su­san felt a rush of eu­pho­ri­a. The books would close on time!

Su­san wasn’t a dai­ly us­er at first. Just a bit to help her get through the hard times. But a cou­ple times a month turned in­to a cou­ple times a week as the de­mands mount­ed. Worse, SQLite was start­ing to fray at the edges with its value-typing. The eu­pho­ria just wasn’t the same. Des­per­ate, she turned to some­thing stronger. MySQL fit the bill and the price was still right. Da­ta types matched up again, and she was no longer stuck rec­on­cil­ing mis­matched data. Oh, how good it felt to be on top of the world again.

And that was when the deal­er en­tered in­to the scene. For­get your no­tion of the sketchy thug with a gauche dis­play of jew­el­ry. No, Ash­ley McIn­tyre was a well-articulated, friend­ly, and slight­ly diminu­tive la­dy in prop­er busi­ness at­tire. Ash­ley point­ed out the dan­gers of how Su­san was us­ing MySQL: no back­up­s, no way to re­cov­er the pre­cious da­ta she had so painstak­ing­ly en­tered in. One bump on her old Dell lap­top, and the high she felt now would be noth­ing com­pared to the de­pres­sion she would feel hav­ing lost all the data. Ash­ley got her set up on a full Or­a­cle in­stal­la­tion with con­sul­tants to get ev­ery­thing moved over.

This was pure dopamine. Not on­ly was it con­sis­ten­t, it was fast. It took any­thing they threw at it. Yes, “they” – Su­san had in­tro­duced oth­ers in her de­part­ment to it. It wasn’t free any­more, but – she ra­tio­nal­ized – you get what you pay for, right? And it eas­i­ly fit with­in their bud­get.

Un­til, one day, Ash­ley re­turned – with a team of equal­ly well dressed thugs from the li­cense au­dit team. “You’re run­ning this on a 32-core ma­chine. That’s not what you’re pay­ing for. You’re go­ing to have to true-up.”

Su­san pan­icked. She tried to ex­plain how it was a vir­tu­al­ized serv­er – “We’re on­ly us­ing two cores!” – but her pleas fell on deaf ears. The “diminutive” Ash­ley was un­re­lent­ing and threat­en­ing. Su­san couldn’t let the books not close, so she had to find some way – any way – to keep the Or­a­cle hits com­ing. She did what any ad­dict did: she stole from oth­er de­part­ments. In her mind, she ra­tio­nal­ized her de­ci­sion – “I’m just adding a few line en­tries in­to their ac­counts; we’re just ‘moving around’ the money.” But, of course, re­al­i­ty even­tu­al­ly caught up with her. Any le­git­i­mate ac­count­ing firm couldn’t risk hav­ing some­one on their pay­roll with a less-than-stellar rep­u­ta­tion. Of­fi­cial­ly, Su­san was let go by “mutual agreement” – i.e., they paid her a bit of sev­er­ance to keep her qui­et – but the re­al­i­ty is that she was fired, un­em­ployed, and – worse – un­em­ploy­able.

Sad­ly, Su­san was nev­er able to get the help she des­per­ate­ly need­ed. She can now be found float­ing around be­tween var­i­ous DBA con­trac­tu­al agen­cies, rant­ing about de­nor­mal­iza­tion and first-normal database schemas.

[This sto­ry brought to you by HARD – Hu­mans Against Re­la­tion­al Databas­es – a 501(c)(3) non-profit ded­i­cat­ed to end­ing the cy­cle of ad­dic­tion to database li­cens­es.]

[Tim again; I’ll for­ward fan mail to Dave, and point you at his in­evitable blog when he launch­es it.]


Comment feed for ongoing:Comments feed

From: Paul Morriss (Jul 18 2016, at 02:37)

For once I feel like I need an website. Or maybe I need some help from HARD.


From: Nik P (Jul 18 2016, at 08:41)

tl;dr: RDS Aurora? ;)


From: Dave (Jul 18 2016, at 11:02)

Sadly this isn't a situation limited to RDBMS only.

Community editions of the alternatives will only take you so far. Breach those limits and you are into "paid for" territory.

Community editions are gateway drugs.

There is always someone touting the idea that because they are open source you can fix the bugs yourself and don't need paid support.

Maybe you can fix such technology but you would be in the upper echelons of developers if your talents stretch to multi user, high concurrency, reliable and resilient data stores


From: Gunnar Djurberg (Jul 18 2016, at 13:41)

I make the opposite general observation on the use of normalised data models and relational databases: people seem to look for any excuse to get away from it - to their detriment. The reason seems to be too much hard work up front to get it "right". The result of avoiding normalisation is mainly a tangle of rules and logic to compensate for data models that do not match reality well enough - and of course the lack of ACID.

There has to be a point behind the story, and I don't think it is the cost of licensing, right?


author · Dad · software · colophon · rights
picture of the day
July 14, 2016
· Technology (78 fragments)
· · Software (57 more)

By .

I am an employee
of, but
the opinions expressed here
are my own, and no other party
necessarily agrees with them.

A full disclosure of my
professional interests is
on the author page.