数据拼接连接/合并-Oracle与基于Java的技术
目前我面临一个截然不同的问题,我从一个webservice调用接收数据,同样需要加载到Oracle表中 情景: -我有一个非常大的表,有500列-所有列都是必需的,并且没有选择拆分表。 -数据集是5000万条记录,我正试图从源系统中导出这些记录,并且其数量不断增加 -我通过向webservice(在源系统)发出请求,一次收到50列数据,因此我需要提交10个请求,每个请求50列,以获得完整记录。 -同时,对于特定的列集,我一次只能收到100000(1 lac)条记录 现在,要将相同的数据导入目标系统的Oracle DB,我有以下两种选择: 1.首先导出50列临时表上的数据,然后对所有临时表运行join以创建包含所有500列的最终表 2.激发10个并行请求,每个请求50列,在我的java程序上缝合数据,然后发送包含所有500列的insert查询 在这里我想知道,哪种技术效果更好,是使用基于Oracle的表联接,还是使用主键列在java端应用缝合数据拼接连接/合并-Oracle与基于Java的技术,java,oracle,join,dataset,Java,Oracle,Join,Dataset,目前我面临一个截然不同的问题,我从一个webservice调用接收数据,同样需要加载到Oracle表中 情景: -我有一个非常大的表,有500列-所有列都是必需的,并且没有选择拆分表。 -数据集是5000万条记录,我正试图从源系统中导出这些记录,并且其数量不断增加 -我通过向webservice(在源系统)发出请求,一次收到50列数据,因此我需要提交10个请求,每个请求50列,以获得完整记录。 -同时,对于特定的列集,我一次只能收到100000(1 lac)条记录 现在,要将相同的数据导入目标系
由于数据集非常庞大,我只考虑性能方面。还有什么更优化的方法来解决同样的问题吗?从性能角度来看,基于Oracle的解决方案显然会获胜。从实现的角度来看(目标是一个清晰简单的解决方案),Oracle表再次获胜。原因如下:
- 架构观点:将应用程序中的数据组合在一起将使应用程序有状态。从一个简单的无状态(receive-save-forget)应用程序,您可以将其转换为一个复杂的状态感知应用程序(保存联合记录的查找未找到任何内容存储等待再次查找等)。这很难开发、维护或调试
- 性能观点:Oracle的设计宗旨是将数据保存到多个表中,然后将它们合并到一个表中(通过视图、存储过程或简单选择)。在优化这些基本特性上花费了大量的开发时间。无论你想出什么方法来实现相同的特性(即使你知道一些细节),结果都可能更糟
- 存储过程
- 甲骨文乔布斯
- 观点