Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc Web应用程序执行时间长_Spring Mvc_Web Applications_Tomcat7 - Fatal编程技术网

Spring mvc Web应用程序执行时间长

Spring mvc Web应用程序执行时间长,spring-mvc,web-applications,tomcat7,Spring Mvc,Web Applications,Tomcat7,您好,我正在编写一个web应用程序,它连接到700个数据库并执行一个基本的SELECT查询 例如: 有一个按钮可以检索每个分支的经理。 一家公司有700个分支机构,每个分支机构的详细信息都存储在单独的数据库中。 Select query从每个数据库检索1条记录,并返回该分支的管理器。 所以执行这段代码需要很长时间。 我不能让用户等到这样的时间(30分钟) 由于内存限制,我无法使用多线程 注意:此web应用程序使用SpringMVC。服务器Tomcat7 任何可能的解决方案?由于要查询的数据库太多

您好,我正在编写一个web应用程序,它连接到700个数据库并执行一个基本的SELECT查询

例如:

有一个按钮可以检索每个分支的经理。 一家公司有700个分支机构,每个分支机构的详细信息都存储在单独的数据库中。 Select query从每个数据库检索1条记录,并返回该分支的管理器。 所以执行这段代码需要很长时间。 我不能让用户等到这样的时间(30分钟)

由于内存限制,我无法使用多线程

注意:此web应用程序使用SpringMVC。服务器Tomcat7


任何可能的解决方案?

由于要查询的数据库太多,我能看到的唯一可能的解决方案是缓存。如果不考虑实时性(请注意,30分钟的执行时间将使您脱离实时性),那么您可以探索以下可能性,所有这些都需要将数据集中到单个逻辑或物理数据库中:

  • 集群:将数据库服务器放在一个巨大的集群中,该集群为性能而配置,因此在内部使用缓存。根据许可证成本,此解决方案可能过于不切实际,甚至过于昂贵

  • 将数据推送到中央数据库:700个数据库服务器中的所有服务器都会将您需要的数据推送到您的应用程序将使用的中央数据库中。您可以使用数据库服务器的复制功能(如MSSQL或PostgreSQL)或定时数据传输。此方法需要对数据库服务器进行管理访问,以配置复制或删除脚本以按计划运行

  • 从中央数据库主机提取数据:让中央主机将所需数据提取到本地数据库中,本地数据库的表通过定时数据传输进行更新。这是最简单的方法。它的缺点是不可能进行实时查询

仅传输所需数据是关键。使select语句尽可能窄以限制执行时间


如果资源紧张,中央数据库可以是web应用程序服务器,也可以是独立的机器。我发现PostgreSQL与MSSQL的兼容性非常好,几乎不费吹灰之力。没有进一步的信息,很难更准确。Nasha,这是一个被考虑并会考虑的解决办法。我曾经想过,使用JQUERY JSON是否是开箱即用的soln在应用程序本身中处理它的一个选项。例如,假设100个数据库的JSON块将执行并返回一个结果并存储它,然后再存储100个,以此类推。在此期间,用户可以执行其选择的任何操作。执行后,结果将在右下角进行整理。如果需要30分钟才能获取数据,您很可能不会获得太多收益,而不是将等待转移到客户端。如果用户只想获取所有数据(用户要求,这是合法的),那么使用JSON无论如何也不会及时完成。我想说这一切都取决于你从用户的角度所期望的。700个数据库并不意味着700个服务器。除此之外,将所需数据(经理)整合到一个地方是一个好主意。老实说,这是唯一可行的选择。