c# oracle etl 根据运行时输入参数 动态sql,c# – ETL处理设计和性能

博主在对比C#和存储过程处理数据仓库ETL过程时,发现存储过程在性能上占优,但可读性和维护性较差。C#代码虽然开发更快,维护更易,但性能相对较慢。面对这一问题,博主考虑通过并行处理来提升C#代码的ETL效率,并寻求进一步优化建议。
摘要由CSDN通过智能技术生成

我正在使用C#处理数据仓库的ETL过程,它支持SQL Server和Oracle.在开发过程中,我一直在编写存储过程,将数据从一个数据库同步到另一个数据库.存储过程代码相当丑陋,因为它涉及动态SQL.它需要构建SQL字符串,因为我们有动态数据库名称.

我的团队负责人希望使用C#代码来执行ETL.我们有代码生成,可在数据库定义更改时自动生成新类.这也是我决定不使用Rhino ETL的原因.

以下是优点和缺点:

存储过程:

优点:

>快速加载过程,一切都由数据库处理

>易于部署,无需编译

缺点

>由于动态SQL导致可读性差

>在数据库定义更改时,需要维护T-SQL和PL / SQL脚本

>开发速度慢,因为在编写动态SQL时没有智能感知

C#代码:

优点:

>更容易开发ETL过程,因为我们从生成的类中获得智能感知

>由于生成的类更容易维护

>更好的日志记录和错误处理

缺点:

>与存储过程相比性能较慢

我更喜欢使用应用程序代码来执行ETL过程,但与存储过程相比,性能非常糟糕.在一次测试中,当我尝试更新10,000行时.存储过程只用了1秒,而我的ETL代码用了70秒.即使我以某种方式设法减少开销,70%的20%纯粹是从应用程序代码调用更新语句.

有人可以提供有关如何使用应用程序代码加速ETL过程的建议或评论吗?

我的下一个想法是尝试通过打开多个数据库连接并执行更新和插入来执行并行ETL过程.

谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值