大数据模式 etl如何实现业务原系统数据接入?数据增量全量抽取有几种方案?
etl如何实现业务原系统数据接入?数据增量全量抽取有几种方案?
我们现在做的项目对ETL很有用。
项目刚成立两三个月。目前,我指挥着四个人。明年,我们计划再增加四个人。现在,两个人在做ETL数据提取,两个人在做Java,我的战斗力可以算作三个人在做Java。
为什么要单独提取数据?
系统现在有大量的查询,这些查询是实时查询。有些查询涉及几十个表的关联,这些表少了几千万,大了几亿,所以有些接口的返回速度非常慢。
我们整理出一些可以接受T1的接口,提取相关数据,处理一次,把几十个表的数据处理成一个完整的数据,保存在mongodb中,然后提供接口服务。
以前,界面需要几秒钟才能返回,有些甚至需要十几秒钟。现在,对于500个并发应用程序,它基本上可以在100毫秒内返回。
怎么实现数据的增量抽取,数据同步?
使用数据库或系统变量的当前时间。Informatica中的$$sysdate是表示当前系统时间的系统变量。有了这个变量,我们可以使用以下表达式每天提取增量数据:timestamp field>=true($$sysdate–1)。这种方法相对简单,但缺乏灵活性。不仅需要开发相应的程序来实现完全提取,还需要修改每个任务程序的代码来改变提取时间范围。例如,如果我们三天前需要提取数据,我们需要修改上面的表达式如下:timestamp字段>=true($$sysdate–3)Ø使用参数文件Informatica,我们可以从参数文件中读取变量值,因此我们可以使用读取参数文件中参数值的方法来实现增量提取。参数文件中至少应有两个参数:开始时间参数和结束时间参数。我们需要以下表达式:start time parameter< timestamp field<=end time field。只要修改参数文件的参数值,就可以灵活控制增量提取的时间范围,包括全提取。对于正常提取过程,此修改操作由程序自动完成。每次提取前,以上次提取的结束时间作为当前提取的开始时间,以当前系统时间作为提取的结束时间,修改参数文件。只有在某些例外情况下,例如上次提取失败,才需要手动修改参数文件。由于参数文件是程序的外部文件,如果文件被错误删除或修改,将导致任务失败或数据提取错误。Øuse parameter table参数表的用法与参数文件的用法类似,只是我们在数据库表中存储了两个时间参数。但由于参数表需要在数据源系统中构建,因此可能不允许。如果有多个不同的数据源系统,则需要为每个系统建立一个参数表。这样,在目标数据库中建立一个参数表来存储时间范围参数。在每次提取之前,通过读取参数表中的数据生成一个参数文件。每个提取任务都从参数文件中读取参数。因为每个参数文件都会被重新生成,减少了被错误删除或修改的概率,同时也不需要修改数据源系统,这是一种常用且应用广泛的方式
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。