使用物化视图进行数据建模
本文描述了如何通过 StarRocks 的异步物化视图来进行数据建模,从而极大地简化数据仓库的 ETL Pipeline,并显著提高数据质量和查询性能。
概述
数据建模是通过合理的方法进行数据清洗、分层、聚合和关联的过程。当原始数据质量过低,指标过多过于复杂,或未经聚合导致查询成本过高时,您可以通过对原始数据进行建模得到易于理解的、可供使用的数据结果。
然而,在现实数据建模中常见的矛盾在于建模过程难以跟上业务发展的步伐,并且很难衡量数据建模工作的投资回报。建模手段虽然简单,但需要业务专家在数据组织和治理方面有扎实的背景,对数据整理加工,这是个复杂的过程。在业务的早期阶段,决策者通常不会在数据建模方面投入足够资源,并且很难看到数据建模能够带来的价值。此外,由于业务模式可能会迅速变化,而建模方法本身也需要不断迭代和演化。因此,许多数据分析师倾向于不使用数据建模,直接使用原始数据,从而不可避免地导致数据质量和查询性能的问题。当建模的需求出现时,又遇到数据使用方式已经成型,难以重构的问题。
使用 StarRocks 物化视图进行数据建模可以有效解决以上问题。StarRocks 异步物化视图具备以下能力:
- 简化数仓架构:由于 StarRocks 可以提供一站式数据治理体验,您无需维护其他数据处理系统或组件,节省了用于维护这些系统的人力和物理资源。
- 简化建模体验:任何只具备基本 SQL 知识的数据分析师都可以使用 StarRocks 进行数据建模,无需专业数据工程师。
- 简化系统维护:StarRocks 的异步物化视图可以自动管理数据之间的层级和依赖关系,无需整个数据平台来处理此任务。
在实际情况中,您可以通过结合使用 StarRocks 的视图(逻辑视图)和异步物化视图来进行数据建模,如下所示:
- 使用视图将实时数据与维度数据关联,并使用物化视图将数据湖中的历史数据与维度数据关联。同时进行必要的数据清洗和业务语义映射,以得到反映业务语义明细数据的中间层(Intermediate Layer)。
- 在应用层(Application Layer)中,面向不同的业务场景,进行数据的 Join、Agg、Union、Window 计算,生成用于实时链路的视图和用于近实时链路的物化视图。
- 在应用侧(Application),根据您的时效性和性能要求选择适当的分析数据存储(ADS)进行查询分析,服务于实时大屏、近实时 BI、Ad hoc 查询和定时报告等需求。
在此过程中,您将利用 StarRocks 的几种内置能力,这些能力将在下一节中详细阐述。