想象一下,你有一个通常使用AAA电池的低电流手电筒.不要在家里尝试这个,但假设你可以将汽车电池连接到手电筒上.低电流手电筒将可怜地输出高电流电池能够产生的一小部分光能.同样,如果你将AAA电池连接到蝙蝠侠的聚光灯下,你也会得到低输出.但是,将AAA电池与手电筒相匹配,它们将以最高效率运行.
因此,将此讨论带回软件工程,如果您想象数据流与电流类似,那么关系数据模型的阻抗与对象层次结构的阻抗不匹配.因此,数据不会以最大效率流动,这是阻抗不匹配的结果.
小智 5
关系阻抗不匹配是一组出现的技术难题,因为对象或类定义必须映射到由关系模式定义的数据库表。
具体来说,SQL 的初始版本在计算上并不完整(它们没有任何编程结构,如声明或条件语句),但现在您可以将 SQL 嵌入到高级编程语言(Java、C、Python 等)中。
这就是阻抗失配。SQL 是一种声明性语言,而 C(或您选择嵌入 SQL 查询的任何高级编程语言)是一种过程语言,导致方法的混合并需要大量不必要的努力。
例如,SQL 具有 Date 类型并一次处理一行数据,而高级编程语言可能使用不同的模型来表示数据(即可能没有 Date 类型)并且一次只能处理一行数据。
我们可能会考虑使用过程结构(SQL/PSM = Persistent Stored Modules)扩展 SQL 以避免阻抗不匹配,并将表视为一次可以访问一行的平面文件。