微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ETL(数据库到数据库)如何适应SOA?

可以想象,我们的应用程序需要从关系数据库到另一个关系数据库的ETL(提取,转换,加载)数据.
最简单(和性能最好的IMHO)方式是在数据库之间建立链接并编写简单的存储过程.在这种情况下,我们使用最小的技术和组件,所有功能都是“开箱即用”.

但是SOA(面向服务的体系结构)的良好做法?紧耦合怎么办?我们是否坚定地将数据库相互联系在一起?

还有另一种方法可以做到这一点:我们在每个方面构建2个java应用程序,并通过SOAP Web服务进行通信.这更加SOA友好!但性能下降和其他失败点值得吗?

在这种情况下最好的做法是什么? ETL如何适应SOA?

解决方法

在SOA中,您可以适应 BiztalkSAP BusinessObjects Data Integrator的处理方式.基本上,它是一个调度程序作业/ Windows服务,或类似的东西.您提供两个服务点,1个为调度程序检索数据,另一个为调度程序发送数据.调度程序在这里的责任只是定期运行和转换数据.

所以,基本步骤是:

步骤1:调度程序运行并从服务A获取数据

Scheduler --get--> Service A
Service A --data--> Scheduler

步骤2:调度器进行数据转换

[ Conversion --> Conversion --> Conversion --> Conversion ]

步骤3:调度程序将数据发送到另一个服务

Scheduler --data--> Service B

在Biztalk和SAP BusinessObject Data Integrator中,这些步骤是可配置的(它们可以从任何服务中检索,并且可以进行脚本数据转换),因此它更加灵活.

然而,仍然存在ETL处理可能会发生的常见问题.例如:数据太大,网络性能影响,RTO,重复数据等.因此,ETL最佳实践在这里仍然是一个要求(使用分段表,日志记录等).

But are the performance degradation and additional points of failure
worth it?

性能影响将会发生,因为现在您有额外的连接/认证步骤(webservice)和运输步骤(通过协议的web服务调度程序).但是出于容易出错的问题,我认为与其他服务调用需要处理的错误相同.

这值得么?这取决于.如果您在相同的环境中工作(相同的数据库),那么这是有争议的.如果您在不同的环境中工作(例如,从Asp.Net到SAP或至少不同的数据库实例两个不同的系统),那么这种体系结构是处理ETL的最佳选择.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_no='LJCG001H' THEN dbo.ELTPNAME(a.fw_nu) ELSE d.fm_name END),e.fw_state_nm,f.fw_rmk_nm
if not exists(select name from syscolumns where name='tod_no' and id=object_id('iebo09d12')) alter table iebo09d12 add tod_no varchar(
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_nm,g.fa_name from LJSS007H a (nolock) Left join LJPA002H b (nolock) On a.pa_no =b.pa_no Left jo
要在 SQL Server 2019 中设置定时自动重启,可以使用 Windows 任务计划程序。下面是详细的步骤: 步骤一:创建批处理文件 打开记事本。 输入以下内容: net stop "SQL Server (MSSQLSERVER)" net start "SQ
您收到的错误消息表明数据库 'EastRiver' 的事务日志已满,导致数据库操作失败。要解决这个问题,可以按照以下步骤操作: 1. 备份事务日志首先,备份事务日志以释放空间: BACKUP LOG [EastRiver] TO DISK = N'C:\Backup\East
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标识ID,若不知道怎么查询数据库的标识ID, 打开SQL Server management studio,点击工具。选择SQL Server Profiler。 登录,登录成功后,如果有个默认弹窗,先取消 新建追踪 命名
--最新的解决方法 --先创建用户帐户,不进行授权,然后通过下面的SQL语句将该用户帐户关联至对应的数据库用户。优点是避免了重新授权的操作。 USE tempdbEXEC sp_change_users_login 'Update_One', 'iemis', &#3
命令: ALTER TABLE 表名 add 列名 数据类型 default 默认值 not null 例如: ALTER TABLE LJEL005H add el_req int default 15 not null
declare @i int set @i=340 while @i<415 begin set @i=@iʱ insert into LJWK007H select '2024','28','9110','3PTSD621000000