The Impedance Mismatch Test: Is Your Data Layer a Complex Mess?
thenewstack.io
thenewstack.io
It seems to be the case with most talks about simplicity: pretty much everyone agrees that it's good, but disagrees on what it means and how to estimate it.
Impedance mismatch is a physical thing, it creates physical problems that are based on laws in nature. Having to map your database entities to a model that is different has nothing to do with any physical things, it's a mental construct.
If you have a mismatch of impedance, what do you do? You insert something between the two mismatched devices to match the impedance. Isn't that what all software does already anyways? Insert some mapping, converting, transforming layer between the two pieces?
But at least this one is not particularly harmful or obfuscatory - you have A and B and you need to frig things so they can talk to each other.
When I have conversations about this, I encounter the term "object/relational impedance mismatch" a lot more often than I encounter people who really have a thorough understanding of what the term describes and why it exists.
It often seems to me like the way it functions in our profession is a lot like the way the word "quantum" functions in Deepak Chopra's vocabulary. It's not really a specific, definable thing, so much as an amorphous, esoteric cosmic principle that can be used as a universal logical connector for stitching together any arbitrary chain of reasoning.
Which is too bad. I don't think it's actually a particularly difficult concept, when you get down to it. But I do think that the fancy-sounding technical name for the concept tends to obfuscate its meaning by making it sound like a much bigger deal than it actually is.
[1] https://en.wikipedia.org/wiki/Object%E2%80%93relational_impe... [2] https://youtu.be/qI_g07C_Q5I?t=98
That's not really something you can ignore, unless someone else manages it for you. (And then, of course, you need to take cost into account.)
Really, the model is completely ignoring the cost (time or money) of operating the storage layer.
It's an interesting idea, but without taking the full picture into account, I don't think it's very useful.
You can certainly overlay cost to the calculator by adding an additional column. Cost should not be just the storage layer cost, it should include HR cost, licensing cost, overhead cost, basically TCO for each system in the data layer.
But I think generally by simply listing all your systems, you'll already kind of know how complex or simple your system is.
I like the potential that IMS potentially could be applied to more than ORMs.
Someone should probably link to Ted Neward's (?) Vietnam of Computer Science.
Happily, there's a resolution to this paradox. A time before ORMs, without an impedance mismatch. The key insight is realizing that client/server is the root cause of the imperative code-to-RDBMS impedance mismatch.
The root causes of other mismatches are also caused by suboptimal mental mentals (metaphors).
Teaser, since I'm using a pseudonym account. Maybe some day I'll get my shit together, polish and promote my FOSS projects.
Edit: fixed typo
The goal of the Impedance impedance mismatch test is to identify such scenarios using a simple calculator and avoid them. In 2021, there are many single systems like Kafka, Redis, Cosmos, etc which can do multiple things way more efficiently. Many of these are OSS projects, so you wont get vendor lock-in.