当前位置: 首页 > 科技观察

时间序列数据库的数据集成策略

时间:2023-03-22 01:52:52 科技观察

随着数字化转型进入更多行业,产生的数据量呈指数级增长。因此,从不同来源、以不同格式和结构收集如此大量数据的数据集成策略是当今数据工程团队的主要关注点。传统的数据集成方法主要侧重于将高度结构化的数据组织到数据仓库中,难以处理新数据集的数量和异构性。另一方面,时间序列数据引入了额外的复杂性。从本质上讲,每个时间序列数据点的价值都会随着时间的推移而降低,因为数据的粒度会随着数据老化而失去相关性。因此,团队必须仔细规划将数据集成到时序数据库(TSDB)中的策略,以确保分析近乎实时地反映趋势和条件。在本文中,我们将了解一些最流行的TSDB数据集成方法:ETL(提取、转换、加载)ELT(提取、加载、转换)数据流使用CDC给定时间序列数据的需求驱动架构使用CDC进行数据流。为了说明它在实践中是如何工作的,我们将通过一个QuestDB(QuickTSDB)的参考实现来展示CDC如何灵活处理时间序列数据源的需求。提取、转换、加载(ETL)ETL是一种传统且流行的数据集成策略,涉及首先将数据转换为预定结构,然后再将其加载到目标系统(通常是数据仓库)。ETL的主要优点之一是它提供了最高程度的定制。由于数据首先被提取到一个暂存区,在那里它被转换成一个干净的、标准化的格式,ETL系统可以处理各种格式和结构。此外,在将数据加载到数据仓库后,数据科学团队可以运行高效的查询和分析。最后,鉴于ETL生态系统的成熟,有大量的企业级工具可供选择。另一方面,ETL的维护需要大量的资源和时间。清理和转换数据的逻辑可能很复杂且计算量大。这就是为什么大多数ETL系统通常是面向批处理的,只定期将数据加载到仓库中。随着数据量和数据源的增长,这可能成为瓶颈。鉴于这些特征,ETL系统最常用于在分析之前需要复杂转换逻辑的数据集。它也适用于不需要实时分析的数据集,可以存储以供长期趋势分析。提取、加载、转换(ELT)顾名思义,ELT首先将数据加载到目标系统(通常是数据湖),然后在系统本身内执行转换。鉴于目标系统负责处理快速加载和转换,ELT管道通常利用现代基于云的数据湖来处理需求。与ETL管道相比,ELT系统可以提供更多的实时数据分析,因为原始数据是动态摄取和转换的。大多数基于云的数据湖都提供SDK或端点,以高效地微批量摄取数据并提供几乎无限的可扩展性。然而,ELT并非没有缺点。由于转换是由目标系统完成的,因此此类操作受到数据湖支持的功能的限制。如果需要更复杂的转换逻辑,可能需要额外的步骤来重新提取数据并以更友好的格式存储它。对于大多数用例,ELT是比ETL更有效的数据集成策略。如果您的应用程序可以利用基于云的工具并且不需要复杂的处理,那么ELT可能是近乎实时地处理大量数据的绝佳选择。变更数据捕获(CDC)对于新项目,团队可以计划使用TSDB作为ETL或ELT管道中的目标系统之一。但是,对于现有项目,迁移到TSDB或将其添加到组合中可能是一个挑战。首先,您可能需要修改或使用新的驱动程序/SDK将数据流式传输到TSDB。即使支持相同的驱动程序,也可能需要更改数据格式以充分利用TSDB功能。CDC工具可用于弥合这一差距。CDC原则上很简单:CDC工具(如Debezium)会持续监控源系统的变化,并在发生变化时通知数据管道。导致更改的应用程序通常甚至不知道有一个CDC进程在侦听更改。这使得CDC非常适合将新的实时数据管道集成到现有架构中,因为它几乎不需要或不需要对现有应用程序进行更改。因此,CDC可以与ETL或ELT管道结合使用。例如,源系统可以是SQLRDBMS(如MySQL、PostgreSQL等)或NoSQLDB(如MongoDB、Casandra),其中一个目标系统可以是TSDB以及其他数据湖或仓库。使用CDC进行数据集成的主要优点是它提供实时数据复制。与使用批处理的传统ETL和ELT系统不同,对源系统的更改会连续流式传输到一个或多个目标系统。这对于近乎实时地跨多个数据库复制子集或整个数据很有用。目标数据库甚至可能位于不同的地理区域或服务于不同的目的(即长期存储与实时分析)。对于时间序列数据,其中价值随时间的变化通常是最有用的,CDC可以有效地捕获该增量以获得实时洞察力。CDC的参考实现JavaSpring应用程序将股票价格信息发布到PostgreSQL。Debezium连接器然后从PostgreSQL读取更改并将它们发布到Kafka上。另一方面,QuestDB的Kafka连接器从Kafka主题读取并将它们流式传输到QuestDB。在此参考架构中,JavaSpring应用程序正在将数据转换并加载到PostgreSQL,然后再复制到TSDB以供进一步分析。如果需要更像ELT的管道,可以将来自另一个提供商的原始数据直接加载到PostgreSQL上,然后在QuestDB中进行转换。使用此架构需要注意的重要一点是,CDC可以与现有系统无缝集成。从应用程序的角度来看,它保留了PostgreSQL的事务保证,同时在管道中添加了一个新的TSDB组件。结论数据集成对于使用TSDB存储和分析时间序列数据的组织起着重要作用。在本文中,我们探讨了使用ETL或ELT的一些优点和缺点。我们还研究了如何将CDC与这些管道结合使用,以向TSDB提供实时复制。鉴于时间序列数据的特殊性,使用TSDB正确存储和分析它们非常重要。如果您是从头开始构建,请考虑构建ELT管道以将数据流式传输到TSDB。要与现有系统集成,请考虑利用CDC工具来限制对当前架构的破坏。