Currently I have an application which is by its very nature is database intensive so through out the life-cycle flow the application has to frequently do a round trip to the database fetch values, persist data and again read back etc This works fine but our client has come up with the request of completely dismantling this database roundtrip business.
I would like to know what alternative approaches are available. One that occurs to me is having some sort of an in-memory database. If any one has done some work in this direction do post your thoughts. Also in this approach what is the max data size it can hold and ultimately what strategy to use to synch up the in-memory database with the physical datastore.
This works fine but our client has come up with the request of completely dismantling this database roundtrip business.
What is the motivation for that request?
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Though I don't have much idea. There is overall exercise of aligning all IT projects in the SOA direction. I understand making our application available as a web service so other calling apps can communicate with it in a seamless fashion. But avoiding the database roundtrip was a bit hard to digest. Essentially the idea is each application of the client will communicate with the database world (comprising of all databases belonging to different apps) via an ESB. But looking at the database intensive nature of our application I don't think routing via ESB makes much sense. The vague idea I got is to fetch all data required for the app upfront do all in-memory data processing activities and then communicate back to the database via the ESB when the application is done with one logical flow.
... so through out the life-cycle flow the application has to frequently do a round trip to the database fetch values, persist data and again read back ...
How often does the application make this "round trip to the database"? One, two, five, twenty ... [ November 06, 2008: Message edited by: James Clark ]
The problem at hand is to find an alternative to avoid those database round trips which happen as part of one application flow. The idea is to reduce those multiple database interactions and have some sort of in-memory database.
I see. Is the application and the database management system located on different machines?
An alternative to creating an object-based memory database would be reduce the number of database calls. This can be accomplished by writing more efficient SQL statements and/or using stored procedures and/or modifying the relational model. [ November 07, 2008: Message edited by: James Clark ]
An alternative to creating an object-based memory database would be reduce the number of database calls. This can be accomplished by writing more efficient SQL statements and/or using stored procedures and/or modifying the relational model.
Another option might be caching. Frankly, I'm still not sure what the reason behind wanting to reduce database access is...
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Thanks for the response. At this juncture I am not sure whether the app and the database will be collocated or on separate machines. Disregarding my current requirement I want to understand how widespread is the approach of using "an in-memory database". I got to hear a framework called "Seam" is step in that direction.
Oh sure, it's a tiny ad, but under the right circumstances, it gets bigger.