Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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
Java 如何最好地将应用程序与不可靠的数据库隔离?_Java_Database_Soap_Sybase_Reliability - Fatal编程技术网

Java 如何最好地将应用程序与不可靠的数据库隔离?

Java 如何最好地将应用程序与不可靠的数据库隔离?,java,database,soap,sybase,reliability,Java,Database,Soap,Sybase,Reliability,我有一个JavaSOAP数据服务,它位于Sybase数据库之上,由于我无法控制的原因,Sybase数据库的性能不可靠。该数据库是供应商软件包的一部分,该软件包已由内部团队修改,大多数问题都是由于一天中某些时间的响应速度慢造成的 SOAP服务向计算网格提供数据,当我请求数据时,我需要快速且一致的响应时间。该服务提供基本的CRUD功能,但读写比约为100:1 将自己与数据库不可靠的性能隔离开来并确保SOAP服务快速可靠的最佳策略是什么?我已经多次看到这个问题,通常是在供应商数据库中 如果这是在Win

我有一个JavaSOAP数据服务,它位于Sybase数据库之上,由于我无法控制的原因,Sybase数据库的性能不可靠。该数据库是供应商软件包的一部分,该软件包已由内部团队修改,大多数问题都是由于一天中某些时间的响应速度慢造成的

SOAP服务向计算网格提供数据,当我请求数据时,我需要快速且一致的响应时间。该服务提供基本的CRUD功能,但读写比约为100:1


将自己与数据库不可靠的性能隔离开来并确保SOAP服务快速可靠的最佳策略是什么?

我已经多次看到这个问题,通常是在供应商数据库中

如果这是在Windows上,您可以创建一个Windows服务作为SOAP服务和数据库之间的中介。然后在SOAP服务和Windows服务之间放置一个消息队列(MSMQ或JMS实现,如MQ Series),用于异步通信。这样,数据库性能问题将不再影响SOAP服务。然而,这种解决方案确实以增加复杂性为代价

请注意,.NETWeb服务可以由其客户端调用并异步响应。我不确定使用JavaSOAP服务是否可以做到这一点


如果这是在某种风格的Unix上,我假设它具有与Windows服务类似的功能—可能是守护进程。

如何缓存来自web服务的响应(在调用WS请求的客户端上,或者通过在两者之间设置代理web服务)?

如果数据库不是太大,您可以缓存数据库的结果。

为什么不使用线程?这样,即使数据库运行缓慢,应用程序也可以缓慢地等待。

RoadWarrior的响应是正确的。执行任何操作的请求都会被放入队列中。用户进来一次是为了发出请求,一次是为了接收请求。事实上,像Expedia这样的网站正在与一个不可靠的服务(后端)进行对话,这就是事实。用户的浏览器正在ping服务器,直到红灯变绿。

让其他内部团队调整该数据库,这样每个使用该应用程序的人都会受益。我真的很爱我

这是内部应用程序吗?数据库是另一个集团所有的吗?你说的不可靠是什么意思?偶尔慢一点?给出错误?破坏信息?删除更新?细节会影响什么样的解决方案是合适的。你能更具体地说怎么做吗?我们能控制的,已经很好地调整了。但是,它是一个供应商应用程序,许多查询在应用程序中是硬编码的,不能更改。