什么是数据集成?最简单的应用场景就是:一个数据源,一个数据目的地,数据目的地可以是个数据仓库,把关系型数据库的数据同步到数据仓库里,就形成了一次数据集成。
我们先来看一个真实的数据集成案例。
g公司是datapipeline的一个典型客户,拥有近千个数据源,类型主要包括oracle、sql server、mysql等。根据业务的需要和现有的基础设施情况,这些数据源分别需要同步到不同的目的端,类型主要包括mysql、hdfs、kafka等。基于以上背景,g公司的具体要求如下:
1. 需要支持约5tb日新增数据量的同步,今年将增长5-10倍。
2. 这些数据一部分数据源要求实时同步,另一部分可接受定时同步。
3. 缺乏强大的运维人才,现有数据源的业务承载压力有限,对压力非常的敏感,要求进行限流。
4. 从这些数据源到目的地的同步都是kettle写脚本实现的,管理起来比较混乱,要求通过一个管理平台对任务进行集中化的配置和管理。
5. 上游的数据源和下游的数据目的都不稳定,随时可能出现各种问题,要求通过一个高可用的平台以减少数据传输中断的影响。
6. 当数据同步任务被随机的暂停/恢复时,要求可以保证数据的完整性。
7. 当数据源和目的地随机出现故障和过载时,要求可以保证数据的完整性。
8. 当数据源schema发生变化时,要求可以根据业务需求灵活配置目的地策略。
g公司的案例只是当前企业数据集成需求的一个典型应用场景。事实上,无论是互联网企业还是传统企业,在面临数据集成的时候都会遇到以下4个挑战:
1. 数据源的异构性:传统etl方案中,从数据源到目的地的同步都是脚本实现的,异构数据源就意味着企业要做大量的适配工作。
2. 数据源的动态性:在数据集成时,上游的数据源端经常会发生各种变化,有些数据源可能被删掉一些结构,这可能会影响到后续数据分析的结果。
3. 任务的可伸缩性:当数据集成只有几个数据源,系统压力的问题不太突出。当数据集成面临的是成百上千个数据源时,多任务并行就需要进行一些限速与缓冲的调度,让读写速度相互匹配。
4. 任务的容错性:当数据在传输过程中出现问题的时候,是否可以实现断点重传,且不产生重复的数据。
以上也是datapipeline要为企业数据集成过程中解决的最关键的4个问题。
更多关于实时数据集成的问题,欢迎关注datapipeline微信公众号,或直接访问官方网址申请试用:datapipeline