【问题标题】:Best design to handle very high volume of data handling in Java - JDBC在 Java 中处理大量数据的最佳设计 - JDBC
【发布时间】:2017-07-14 19:13:51
【问题描述】:

我正在调用一个可以返回大量数据(>100K 记录 = 200 MB)的 Web 服务。我也必须将此数据插入到 SQL Server 中。我有以下问题。

  1. 我知道这取决于服务器资源,但是否有关于我应该在任何 java 结构中存储多少数据的限制的建议(集合 - 项目有 4,5 个字符串成员,每个长度
  2. 然后我使用 1000 的批量大小将此数据上传到数据库 JDBC。这是正确的方法吗?如果我使用会有什么好处 JPA 代替 JDBC?

  3. 还有任何标准设计来处理这个问题吗?我能想到打破 将 Web 服务调用分解为大小有限的页面,然后使用 Java 线程来处理它们。这是正确的方向吗?

谢谢

【问题讨论】:

  • 你真的遇到什么麻烦了吗? 4,5 个字符串成员 - 一段字符串有多长?批量插入听起来不错。
  • 我建议运行分析器。如果需要,它应该为您提供硬数据以进行更改。

标签: java sql jpa jdbc


【解决方案1】:

首先可以返回大量数据的网络服务是不够的信息。可以返回大量数据的网络服务总是ONCE IN A WHILEX% of THE TIME 等有助于设计更好的系统。

不建议使用 Web 服务来交换如此大量的数据,因为它也会对物理网络基础设施造成压力,但我猜该服务不是您系统的一部分。

对于每次命中的数据量,您的应用程序将非常不可靠,您也需要一个非常快速的网络来获取该数据量。

现在进入你的观点,

1.你猜对了,这完全取决于服务器资源。有些应用程序可能对集合中的一百万条记录感到满意,而在某些地方,几千条记录可能太多了。您必须牢记heap space 和操作系统施加的限制。总而言之 - 这是非常特定于应用程序的。

收集的目的也很重要 - 是用于查找还是只是临时存储以传递数据?它多久清理一次?它是在堆栈上还是作为对象字段?它是加载一次并在下次加载之前清理还是继续增长?

2.JDBC 批处理是正确的方法,而不是 JPA。

3.如果从 Web 服务读取数据并将数据存储在数据库中是工作的主要流程,Spring Batch API 可能更适合您的设计。

希望对你有帮助!!

【讨论】:

  • 2.JDBC 批处理是正确的方法,而不是 JPA。 >>为什么?谢谢。
  • 出于性能原因。据我所知,JPA 实现对批量操作的执行不如普通 jdbc 批处理。
  • 为什么要投反对票?答案不正确还是有什么需要改进的地方?
猜你喜欢
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 2020-04-01
  • 2011-07-30
  • 1970-01-01
  • 1970-01-01
  • 2013-01-10
相关资源
最近更新 更多