T112019-数据智能技术峰会-为数据赋能-敏捷高效的数据处理-2019.11.25-29页_4mb
报告摘要
为数据赋能总结
核心内容
本文档围绕如何通过数据处理与查询引擎的优化实现数据的敏捷高效利用,重点介绍了TalkingData在数据处理和查询方面所面临的问题及解决方案。
主要观点
- 数据处理流程:数据处理通常包括提取(ETL)、转换和加载三个阶段。随着技术发展,ELT(Extract, Load, Transform)逐渐成为主流,利用存储的计算能力进行数据变换。
- 数据处理的挑战:TalkingData面临的需求不一致、技术栈纷杂、缺乏统一标准以及异构数据处理等挑战,导致沟通成本高、功能重复开发。
- 元数据系统的重要性:元数据是实现系统复用和敏捷的关键,它对业务进行高度抽象,定义了系统的数据边界。元数据驱动的数据处理流程有助于统一管理数据源、目的地、数据结构、依赖和处理过程。
- 数据变换的复杂性:数据变换没有银弹,需结合多种工具和语言实现,同时关注数据质量、安全和审计。TalkingData采用语义抽象(如BPMN、DAG)和编译器技术来统一处理逻辑。
- 索引服务的作用:索引是数据查找和定位的关键,支持多种索引结构(如B+树、跳表、倒排索引)。通过Bitmap实现的索引支持精准的排重统计和集合运算,如交集、并集和差集。
- 查询引擎的优化:查询引擎通过统一的SQL接口实现多数据源的解耦,支持逻辑计划的优化和物理计划的转化。TalkingData结合Apache Calcite和多种数据源适配器(如Druid、CarbonData、Kudu)实现高效查询。
关键信息
数据处理流程
- ETL:从多种数据源提取数据,进行清理、聚合、派生,加载到特定存储。
- ELT:利用存储的计算能力进行数据变换,适用于大规模数据处理。
元数据系统
- 元数据定义:元数据是定义数据的数据,是系统复用的关键。
- 元数据规范:包括数据源、分区定义、数据集、模式、数据处理过程、算子、多维模型、实体关系模型等。
- 实现方式:使用JSON格式定义元数据,支持多种存储(如MySQL、SQLite、Derby)和索引(如ES)。
数据变换
- 语义抽象:采用BPMN、DAG、Sequence等抽象方式,支持条件、算子、参数、返回值、并行处理等。
- 编译器支持:通过逻辑计划和物理计划的转化,支持多种执行引擎(如Storm、Flink、Spark)和运行时文件(如Jar、.R、.so、.py)。
索引服务
- 索引类型:包括B+树、跳表、倒排索引等。
- Bitmap索引:支持精准的排重统计和集合运算,如交集、并集、差集。
- 二级索引:按时间粒度分层的多叉树,支持以索引维度为Key,索引标识为Offset的倒排索引。
- 维护策略:支持合并、删除、导出等操作,采用金字塔模型进行管理。
查询引擎
- 设计思路:统一的查询接口为SQL,通过语义优化生成逻辑计划,并根据数据源转化为对应的DSL(物理计划)。
- 实现方式:基于Apache Calcite,支持多种数据源适配器,如Druid、CarbonData、Kudu。
- 查询类型:支持select、groupby、topN、timeSeries、window、subQuery等。
- 返回结果:包括索引、计数、ID列表等。
- 增强功能:通过缓存SQL和DSL、绕过优化和翻译等手段提升性能,但需注意性能下降的风险(10%-30%)。
总结
TalkingData通过构建元数据系统、索引服务和查询引擎,实现了数据处理和查询的敏捷高效。元数据系统统一了数据定义和处理流程,索引服务提高了数据查找和定位的效率,查询引擎则解耦了物理存储和业务逻辑,支持多数据源的统一查询。这些技术的结合,使得数据处理流程更加灵活、可扩展,并有效降低了沟通和维护成本。
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载