做一个跨系统的数据集成的功能模块,从多个系统中采用ADO技术获取了不同的基础数据,存放在内存中,用DATATABLE。
想要用这些数据做一些联合统计,就跟普通SQL语句中的多表联合统计一样,发现要实现挺难的,最后找到了一个MS提供的通用方式,
还是不太理想,主要是效率问题以及一系列的限制问题,它不象SQL的实现那样灵活、方便、高效率。
在此向各位前辈问问,是否有另外的方式可以实现这样统计功能?在网络上也见过一些同类的产品功能,但不知道具体是如何实现的,
如果可以直接访问各个数据库,可以采用跨数据库联结查询!
第一步:通过kettle、Sqoop从镜像数据库抽取历史数据到Haoop(Hive)。
关系型数据库数据(Oracle、SqlServer)迁移至非关系型数据库(HDFS、Hbase、Hive),推荐使用Sqoop工具。如果是将不同种类的关系型数据库(Oracle、MySQL、SQL server)整合到同一个关系型数据库中,如MySQL。推荐使用Kettle,有GUI界面操作简单。
第二步:业务系统镜像数据库启动CDC功能,并实时同步数据到Haoop(Hive)。
该技术通过读取镜像数据库日志文件,解析回放数据库操作方式,实现业务数据变更捕获。通过flume实时监控CDC记录表下沉kafka,应用程序订阅服务,解析数据到Hadoop。日志读取、解析、回放等操作都是在镜像数据库上进行,业务数据库只会产生少量的I/O开销,以最大限度地降低对业务系统的影响。
第三步:使用颐东数仓配置数据目录映射关系,自动生成Hive视图HiveSql。
通过以上三步完成数据仓库建设,仓库数据跟随业务数据改变而改变。
第四步:数据中台
数据仓库提供数据中台服务,根据业务活动,自定义勾选数据集市所需字段,生成ElasticSearch索引,并自动生成数据接口。
看到你在做企业数据集成这块,正好我最近在项目里用了 SeaTunnel,感觉挺适合你这种跨系统数据集成的场景。
你提到的几个痛点确实很典型:
SeaTunnel 是一个开源的数据集成平台,我觉得它在企业级数据集成场景下有几个优势:
1. 支持的数据源非常丰富
基本上你能想到的数据源都支持:关系型数据库(MySQL、Oracle、SQL Server、PostgreSQL 等)、大数据组件(HDFS、Hive、HBase、Spark、Flink 等)、消息队列(Kafka、Pulsar 等)、搜索引擎(Elasticsearch 等)、云数据库等。
2. 配置简单,维护方便
通过配置文件就能定义数据同步任务,不需要写复杂的代码。比如从 Oracle 同步数据到 MySQL,配置一下 source 和 sink 就能运行。
3. 支持多种同步模式
4. 分布式架构,性能不错
基于 Spark 或 Flink 引擎,可以水平扩展,处理海量数据时表现良好。
5. 对业务系统影响小
CDC 模式通过读取数据库日志文件实现数据捕获,不需要在业务表上加触发器,对业务系统的影响比较小。
具体到你的场景,可以考虑这样的方案:
官网地址:https://seatunnel.apache.org 上面有详细的文档和配置示例,可以参考一下。社区也挺活跃的,遇到问题可以去 GitHub 提 issue。
如果你正在选型数据集成工具,SeaTunnel 值得考虑,我们这边用下来感觉还不错。