发布时间:2024-12-12 |


01|项目中遇到的问题

在项目实施过程中,报表查询与导出功能是常见的业务需求。然而,当涉及多表联查且每张表的数据量极为庞大时,系统性能会显著下降,导致查询速度缓慢,甚至可能引发查询超时和服务器宕机等严重问题。这种情况下,传统的查询方法已无法满足高效数据处理的需求,急需优化以提升系统的稳定性和响应速度。
成为智能制造领域的顶级服务商

02|尝试过的解决方案

在项目中,我们曾使用ClickHouse列式存储数据库,尝试解决数据量大时,报表查询的问题。ClickHouse是一款由Yandex开发的开源列式数据库管理系统,专为在线分析处理(OLAP)场景设计。其核心优势在于能够高效处理大规模数据集,支持实时数据分析和复杂查询。ClickHouse通过列存储、数据压缩、向量化执行引擎和并行处理等先进技术,显著提升了查询性能和数据处理能力。此外,ClickHouse具备高可扩展性和灵活性,支持分布式架构,能够轻松应对海量数据的存储和分析需求。

在单表或少量表联查的场景中,ClickHouse数据库凭借其卓越的查询性能,能够显著优于传统数据库,迅速返回查询结果。ClickHouse通过采用列式存储结构,有效减少了I/O操作,提升了数据读取效率。同时,其内置的数据压缩算法和向量化执行引擎,进一步优化了查询处理速度,使得在处理大规模数据时仍能保持高效性能。此外,ClickHouse的并行处理能力和分布式架构设计,确保了在复杂查询场景下,系统能够高效地分配和利用计算资源,从而实现快速响应和数据分析。这些特性使得ClickHouse在需要快速数据检索和分析的应用场景中,展现出强大的优势。

随着项目场景的不断深入扩展,业务需求的复杂性日益增加,ClickHouse在处理多表联查时的劣势逐渐显现。尤其是在涉及多表且其中某些表数据量极为庞大的情况下,ClickHouse的查询性能显著下降,甚至可能导致查询宕机,进而引发数据库服务的不稳定性。这一现象主要归因于ClickHouse在设计时侧重于单表和少量表的高效查询,而未充分优化多表联查的复杂场景。其列式存储和向量化执行引擎在处理大规模数据时表现出色,但在多表联查中,由于需要频繁的表间数据关联和复杂的计算逻辑,导致系统资源消耗剧增,查询效率大幅降低。此外,ClickHouse的分布式架构在应对多表联查时,难以有效协调和分配计算资源,进一步加剧了性能瓶颈。因此,在业务复杂度较高的项目中,需谨慎评估ClickHouse在多表联查场景下的适用性,并考虑采用其他更为适合的数据库解决方案,以确保系统稳定性和查询性能。
成为智能制造领域的顶级服务商

03|基于Doris的报表查询

Apache Doris是一款开源的分布式分析型数据库系统,专为大规模数据集的实时分析和查询而设计。其核心架构基于MPP(Massively Parallel Processing)模型,能够高效地处理复杂的SQL查询和大规模数据集的分析任务。Doris通过列式存储、数据压缩、向量化执行引擎和并行处理等技术,显著提升了查询性能和数据处理能力。其分布式架构支持水平扩展,能够轻松应对海量数据的存储和分析需求。Doris还提供了丰富的SQL接口和功能集,支持多种数据源的接入和数据分析场景,使得开发者和数据分析师能够快速构建和部署高性能的数据分析应用。此外,Doris具备高可用性和容错能力,确保系统在面对大规模数据处理时仍能保持稳定运行。

项目中使用Apache Doris

Ø 建立Doris数据库,将Oracle数据库的数据,全量导入到Doris库中;
Ø 用户操作系统,会产生新的数据,新的数据变更存放在Oracle数据库中;
Ø 使用FlinkCDC的形式,监听Oracle的变更信息,实时将变更数据导入到Doris中;
Ø 报表导出直接查询Doris数据库,减轻Oracle的压力;
成为智能制造领域的顶级服务商

04|性能测试

4.1
基础数据量
Apache Doris:

Oracle:

在项目实施过程中,报表查询与导出功能是常见的业务需求。然而,当涉及多表联查且每张表的数据量极为庞大时,系统性能会显著下降,导致查询速度缓慢,甚至可能引发查询超时和服务器宕机等严重问题。这种情况下,传统的查询方法已无法满足高效数据处理的需求,急需优化以提升系统的稳定性和响应速度。
4.2
三表联查
在简单的查询表现上,性能提升了75%

Doris贴图:

Oracle贴图:

4.3
多表复杂联查(模拟报表查询)
在多表复杂联查的表现上,性能提升了85%

Doris贴图:

Oracle贴图:

成为智能制造领域的顶级服务商