设计方法:过程还是Java与海量数据?

设计方法:过程还是Java与海量数据?,java,stored-procedures,Java,Stored Procedures,考虑一个层次结构: 品牌->产品->项目->数量 假设有不同的表,如上图所示链接,有10000多行。 我希望通过以下方式获取所有数据: 品牌-与他们的-产品-与他们的-项目-与他们的-数量 我想到了这种方法 在非常基本的映射中从过程中获取所有记录 b在这些映射上迭代并用Java链接它们 因为这需要很多时间,有没有比这更好的方法 提前感谢看起来您是在连接关系数据库中的表,因此使用SQL很自然。Java是错误的工具,您可能会遇到许多错误 如果查询返回的数据太多,请尝试使用LIMIT,或者根据朋友的建

考虑一个层次结构:

品牌->产品->项目->数量

假设有不同的表,如上图所示链接,有10000多行。 我希望通过以下方式获取所有数据:

品牌-与他们的-产品-与他们的-项目-与他们的-数量

我想到了这种方法 在非常基本的映射中从过程中获取所有记录 b在这些映射上迭代并用Java链接它们

因为这需要很多时间,有没有比这更好的方法


提前感谢

看起来您是在连接关系数据库中的表,因此使用SQL很自然。Java是错误的工具,您可能会遇到许多错误

如果查询返回的数据太多,请尝试使用LIMIT,或者根据朋友的建议,向查询中添加参数以选择整个结果集中的特定块


如果客户机真的需要一次性完成全部工作,您可以开始流式传输响应,我假设您正在编写某种web服务,然后再使用光标从数据库中读取。但是这需要付出很大的努力,如果您的服务器无法处理数据,那么客户端也可能无法处理。

您需要如何处理生成的对象?也许延迟检索数据或逐块检索数据是有意义的,这样就不用将整个集合加载到内存中了?数据是否经常更改?如果没有,您可以使用类似ehcache的东西来缓存它。我看到ehcache可以轻松地处理100000多个对象,而不会出现任何性能问题。您是否尝试分析您的解决方案以了解a或b需要花费大量时间?然后我们可以讨论如何加快速度。创建一个服务,第三方在其中一次过请求所有数据。值得添加到您的服务参数中,使第三方能够逐页检索数据。例如,您可以在服务查询中添加参数start和count,将计数限制在1000条记录以内,因此像start=1000&count=100这样的请求将返回1000到1100之间的结果。有了它,第三方仍然能够检索所有数据,但您和第三方都不需要立即将整个数据加载到内存中。