我想知道Impedance Mismatch是什么? 以及它们与数据库的关系如何?
我找不到任何信息它告诉我它是什么,如果有人能向我解释,我会很感激。
答案 0 :(得分:8)
想象一下,你有一个通常使用AAA的低电流手电筒 电池。不要在家里尝试这个,但假设你可以附上你的 汽车电池到手电筒。低电流手电筒会 可怜地输出高电流的一小部分光能 电池能够生产。同样,如果您附加了AAA 电池对蝙蝠侠的关注,你也会得到低输出。然而, 将AAA电池与手电筒相匹配,它们将随之运行 效率最高。
如果你这样,那么把这个讨论带回软件工程 想象一下数据流与电流类似,然后是 关系数据模型的阻抗与阻抗不匹配 对象层次结构。因此,数据不会以最大值流动 效率,阻抗不匹配的结果。
答案 1 :(得分:2)
关系阻抗不匹配是一组出现的技术难题,因为对象或类定义必须映射到由关系模式定义的数据库表。
具体地说,SQL的初始版本在计算上并不完整(它们没有任何编程结构,如声明或条件语句),但现在您可以在高级编程语言(Java,C,Python等)中嵌入SQL。
阻抗不匹配。 SQL是一种声明性语言,而C(或您选择嵌入SQL查询的任何高级编程语言)都是一种过程语言,导致方法混合并需要大量不必要的工作。
例如,SQL具有Date类型并且一次处理数据行,而高级编程语言可能使用不同的模型来表示数据(即可能没有Date类型)并且只能处理一行数据一段时间。
我们可能会考虑使用过程构造(SQL / PSM =持久存储模块)扩展SQL以避免阻抗不匹配,并将表视为可以一次访问一行的平面文件。
答案 2 :(得分:1)
两个范式(例如,面向对象的世界和关系世界)之间的不匹配称为阻抗不匹配。
存在5个不匹配项...
1)粒度:-类和表的数量有时不同。 (在一个表中,我们存储了多个类对象数据。)
2)子类型:-面向对象的世界具有继承关系,但是关系数据库世界不支持继承。
3)关联:-面向对象的世界具有关联关系,但是关系数据库世界不支持关联。
4)身份:-在面向对象的世界中对象的身份与在关系数据库中的记录的身份是不同的。
5)数据导航:-对象数据可以在其对象引用中进行导航,但是表数据无法进行导航。
如果有任何框架可以完全解决此不匹配问题,则该框架称为完善的ORM框架。