在复杂数据项目场景下,SQL的使用存在局限巨大的局限性可能表现为业务逻辑的碎片化、不能全局优化、无效的数据移动以及大量使用临时表。

业务逻辑的碎片化问题

      在冗长的SQL脚本中,每一个目标数据项(指标、标签等)的逻辑分散在众多的SQL代码段中,每个SQL代码中又承载了多个目标数据项业务逻辑的碎片。在冗长的SQL脚本中,业务逻辑碎片交叉耦合。

      目标数据项目业务逻辑碎片化,破坏了业务逻辑的原子性,导致一系列问题,可以说是数据行业数据治理问题难见成效的根源。

可读性问题、黑盒架构

      首先就是可读性问题,业务逻辑碎片化交织,要梳理出单个指标的逻辑,就需要翻越冗长的代码,中间交织着大量无关的代码,可读性自然大大降低。技术开发人员通过翻越代码,花费大量的时间还基本可以理解业务逻辑。业务端人员要想理解指标的业务逻辑就难上加难。海量的SQL代码堆积以后,可读性问题爆炸,形成了巨大的SQL代码黑盒。业务完全依赖于iT,IT严重依赖原始开发团队。

    当数据仓库/数据中台中的业务逻辑与SQL查询紧密耦合时,修改业务规则可能会涉及大量的SQL语句修改。这不仅增加了代码的复杂性,还可能导致维护困难和出错风险增加。

    业务逻辑的碎片化还可能导致数据一致性问题。如果多个查询或报表依赖于相同的业务逻辑,而这些逻辑分布在不同的SQL语句中,那么维护数据一致性将变得更加困难。

不能全局优化

    数据仓库/数据中台通常涉及大量的数据操作,包括联接、聚合和过滤等。如果没有进行全局优化,某些查询可能会变得非常低效,导致性能问题。

在数据仓库场景中,全局优化可能涉及对查询计划的选择、索引的合理使用以及对数据分布的考虑等。

无效的数据移动

    在处理大数据量时,不恰当的SQL查询可能导致大量无效的数据移动。这不仅降低了应用的性能,还增加了存储和带宽的消耗。

   无效的数据移动通常与不恰当的查询设计和缺少适当的索引有关。优化查询和合理使用索引可以减少这种移动,提高数据处理的效率。

大量使用临时表

   在某些情况下,为了提高查询性能或处理复杂的数据操作,开发人员可能会选择使用临时表。然而,过度依赖临时表可能导致代码复杂性增加、维护困难以及潜在的性能问题。 

   临时表的使用应谨慎评估,以确保它们真正提供了性能优势并提高了开发效率。在许多情况下,通过优化查询和索引设计,可以避免对临时表的依赖。

业务逻辑与技术逻辑耦合

    当业务逻辑与SQL查询紧密耦合时,技术上的优化或调整可能会影响到业务逻辑的实现。这可能导致在技术层面上的改动需要反复与业务团队沟通,增加了开发和维护的成本。

    为了降低业务逻辑与技术逻辑之间的耦合度,可以采用分层架构的设计方法,将业务逻辑与数据访问层分离,使其更加独立于底层的技术实现。

指标之间的业务逻辑耦合

    在数据仓库中,不同的指标可能存在复杂的业务逻辑关系。如果这些业务逻辑没有得到恰当的抽象和封装,会导致指标之间的耦合度过高。

    高耦合度可能导致一个指标的变动直接影响到其他指标的计算,增加了维护和调试的复杂性。为了降低耦合度,可以建立清晰的指标体系和业务规则定义,并使用适当的抽象层来隔离不同指标之间的业务逻辑。

好文推荐

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: