【问题标题】:What is Impedance Mismatch?什么是阻抗失配?
【发布时间】:2014-04-16 17:14:16
【问题描述】:

什么是“阻抗失配”,它与数据库有何关系?

【问题讨论】:

    标签: sql database


    【解决方案1】:

    引自hacked.com

    假设您有一个通常使用 AAA 的低电流手电筒 电池。不要在家里尝试这个,但假设你可以附上你的 汽车电池到手电筒。低电流手电筒将 可怜地输出了大电流的一小部分光能 电池有能力生产。同样,如果您附加了 AAA 电池到蝙蝠侠的聚光灯下,你也会得到低输出。然而, 将 AAA 电池与手电筒相匹配,它们将运行 最大效率。

    因此,如果您将这个讨论带回到软件工程 想象数据流类似于电流,那么 关系数据模型的阻抗与阻抗不匹配 对象层次结构。因此,数据不会以最大值流动 效率,阻抗不匹配的结果。

    【讨论】:

    • 如果您将 12V 汽车电池放在通常以 1.5V 运行的手电筒上,它实际上会闪烁并烧毁(因为流过它的功率是 64 倍)。写这句话的人对电力知之甚少。
    • 手电筒经常使用不止一节电池,这会增加电压,尽管 8 节 AAA 电池是不常见的。
    • 为了混淆一个简单得多的软件概念而引入电气工程概念似乎也很愚蠢。
    • 你必须解释阻抗,然后在对EE一无所知的情况下给出一个阻抗不匹配的电路示例(顺便说一下,这个例子不是阻抗不匹配是什么),然后将数据模型类比为一个电路(这已经没什么意义了),然后以某种方式扩展类比以适应已经不合适的术语......通常,类比使用简单/日常概念来解释更复杂的事物。你在教电气工程师编程吗?
    【解决方案2】:

    关系阻抗不匹配是一组出现的技术难题,因为对象或类定义必须映射到由关系模式定义的数据库表。

    具体来说,SQL 的初始版本在计算上并不完整(它们没有任何编程结构,如声明或条件语句),但现在您可以将 SQL 嵌入到高级编程语言(Java、C、Python 等)中。

    阻抗不匹配出现了。 SQL 是一种声明性语言,而 C(或您选择嵌入 SQL 查询的任何高级编程语言)是一种过程语言,导致方法的混合并需要大量不必要的工作。

    例如,SQL 具有 Date 类型并且一次处理多行数据,而高级编程语言可能使用不同的模型来表示数据(即可能没有 Date 类型)并且只能处理一行数据一次。

    我们可能会考虑使用过程结构(SQL/PSM = 持久存储模块)扩展 SQL,以避免阻抗不匹配,并将表视为可以一次访问一行的平面文件。

    【讨论】:

      【解决方案3】:

      面向对象世界和关系世界等两种范式之间的不匹配称为阻抗不匹配。

      有 5 个不匹配项...

      1) 粒度:- 类和表的数量有时不同。 (在一张表中,我们存储了多个类对象数据。)

      2) 子类型:- 面向对象的世界具有继承关系,但关系数据库世界不支持继承。

      3) Association:-面向对象的世界有Association关系,但Relational数据库世界不支持Association。

      4) 身份:-面向对象世界中对象的身份和关系数据库世界中记录的身份是不同的。

      5) 数据导航:-对象数据可以通过其对象引用导航,但表数据不能导航。

      如果任何框架完全解决了这种不匹配问题,则该框架称为完美的 ORM 框架。

      【讨论】:

        【解决方案4】:

        https://devblogs.microsoft.com/oldnewthing/20180123-00/?p=97865

        在电气工程中,当电气负载的输入阻抗与信号源的输出阻抗不匹配时,就会发生阻抗不匹配,从而导致信号反射或功率传输效率低下(取决于所需的匹配类型)。

        这不是微软的意思。

        在关系数据库中,当需要将关系数据库转换为面向对象的模型时,就会出现阻抗不匹配。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-01-27
          • 2010-12-18
          • 1970-01-01
          • 1970-01-01
          • 2011-04-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多