Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / February 2007

Tip: Looking for answers? Try searching our database.

Java access speed (database or arrays)

Thread view: 
Nino - 03 Feb 2007 01:38 GMT
Hello,

Quick question... well, at least it's short...

Is it quicker to constantly query the database for information, or to
query the database once, store the information into an array, and that
array into a session variable to be used through different pieces of
code?

I am using MySQL and JSP. Don't know what other information might be
pertinent as I really don't know how to test this...

Thanks for any help,
Nino Skilj
Arne Vajhøj - 03 Feb 2007 02:38 GMT
> Is it quicker to constantly query the database for information, or to
> query the database once, store the information into an array, and that
[quoted text clipped - 3 lines]
> I am using MySQL and JSP. Don't know what other information might be
> pertinent as I really don't know how to test this...

It is much faster to cache in memory.

The problems are:
* data size - do you have enough memory to use for this purpose
* getting the cached data invalidated if the data is changed in
  the database

Arne
Lew - 04 Feb 2007 00:31 GMT
Nino wrote:
>> Is it quicker to constantly query the database for information, or to
>> query the database once, store the information into an array, and that
[quoted text clipped - 3 lines]
>> I am using MySQL and JSP. Don't know what other information might be
>> pertinent as I really don't know how to test this...

> It is much faster to cache in memory.
>
> The problems are:
> * data size - do you have enough memory to use for this purpose
> * getting the cached data invalidated if the data is changed in
>   the database

JSP means Web app which means plan for concurrent access.

Tradeoffs are complicated. You can cluster/farm app servers more easily than
data stores, but data stores can be scaled pretty high and have awesome
built-in caches. One way may be somewhat slower for a given user but allow
better interleaving of concurrent users, so overall throughput improves.
Caching things in application memory may speed up a user but limit the number
of concurrent requests that fit.

Naive expectations of performance often collapse in the face of massive
concurrent access.

Optimizations can occur both horizontally, e.g., throwing more servers at the
web layer, or vertically, e.g., the proposed memory caching scheme or using a
faster JDBC driver, or follow some other pattern, e.g., throwing edge caches
into the mix.

Andre's answer also hints at the difficulties of information latency and
synchronization. How "soon" "after" a transaction should a user see the
result? (In physics, relativity shows that frames of reference in relative
motion can view events as simultaneous or not if the time interval is less
than the "speed of light" latency in any frame of reference. Something similar
pertains to information simultaneity, information latency and cognitive
information processing. Consider Java's "happens-before" thread synchrony as
an example.)

It remains a dark art.

- Lew
Lew - 04 Feb 2007 00:33 GMT
> Andre's answer
Sorry (abashed toe-scuffing) I mean Arne's answer.

- Lew
Nino - 05 Feb 2007 21:28 GMT
Thank you Arne, Zheng and Lew... I guess there really isn't just one
"right" way to do this. I guess I'll just have to figure out where it
makes sense to cache the information and where to just pull it from
the database. A lot of the data I need to access is pretty static, so
data changing in the database shouldn't be too much of a concern...

However, data size might be an issue... How can I tell how much memory
is taken up when I store the data from a database into a session
array? At what point will it be "too much"?

Nino
Arne Vajhøj - 09 Feb 2007 02:56 GMT
> However, data size might be an issue... How can I tell how much memory
> is taken up when I store the data from a database into a session
> array? At what point will it be "too much"?

Just look at how much space the true data will use. There will
be some overhead, but for something as non-exact at this I think
you can ignore it.

Arne
zhengxianfu@gmail.com - 03 Feb 2007 14:21 GMT
> Hello,
>
[quoted text clipped - 10 lines]
> Thanks for any help,
> Nino Skilj

Maybe you can check the memory database product ,google it.


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2009 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.