What is the best way to isolate my application from an untrustworthy database?

I have a Java SOAP data service that sits on top of a Sybase database which, for reasons beyond my control, has unreliable performance. The database is part of a vendor package that has been modified by an internal team, and most problems are caused by slow response times at certain times of the day.

The SOAP service provides data for the computational grid, and when I request data, I need the response time to be fast and consistent. The service provides basic CRUD functions, but the read to write ratio is approximately 100: 1.

What is the best strategy to isolate yourself from unreliable database performance and ensure that the SOAP service is fast and reliable?

+4
source share
6 answers

I have seen this problem several times, usually with the provider database.

If it is on Windows, you can create a Windows service as an intermediary between the SOAP service and the database. Then put a message queue (either MSMQ or a JMS implementation such as the MQ Series) between the SOAP service and the Windows service for asynchronous communication. Thus, database performance problems will no longer affect the SOAP service. This solution, however, is associated with an increase in complexity.

Note that the .NET web service can be called and respond asynchronously to its clients. I'm not sure if this is possible using the Java SOAP service.

If this is due to some flavor of Unix, I assume that it has similar functionality for a Windows service - possibly a daemon.

+3
source

Why not use a stream? Thus, the application can wait quietly, even if the database is slow.

+1
source

RoadWarrior answer directly to. Requests for any operation are queued. The user comes once to make a request, and once to receive a request. This is actually what happens on sites such as Expedia, where it is an unreliable service (backend). The user's browser checks the server until the red light turns green.

+1
source

What about caching responses from the web service (either on the client that is causing the WS request, or through the proxy intermediary service)?

0
source

You can cache the results from the database if the database is not too large.

0
source

Get another internal command to configure this database so that all users take advantage of the application. I like some indexes!

0
source

All Articles