You should persist the images as bytes, in a binary field or something similar.

> 1. Because the image is large, it's not efficient to store it in
> objects(beans).

Well this depends on the Bean.  Is the bean stored in session?  If yes
then it will take up some memory.  If you dont have alot of memory I
would not recommend this.

> 2. Because I have many users(say 300), if I store all the maps(userId and
> image) in the session, the session will be huge.

Again if your requirement is low memory usage then dont store large
objects in momory for a long time

> 3. Because I have many users(say 300), if I access the db for each user's
> image, the worse case is I will have to access db for 300 times.

Well this is the trade off Memory vs Resources to Connect to a DB.
Even if the images are not stored in session they will still be held
in memory when getting them from the DB.

How often do you need to load all 300 images?  If it is forum style I
would imangine a limited number of posting per page say max 20.  So
the would be a maximum of 20 images per page load.

You could also Store the images in the hard drive of the server, and
store a URL to the image in the database.  This would reduce the
memory overhead.  Did you try to do any test to see what the impact of
retrieveing the data from the database is?

If you must use the least amount of memory as possible, persist the
images to the hard drive and store the file reference to the url in
the database.  Or even store the images as userId_avatar.gif.  That
way you can link the file to a user id and have no need to store the
url.  Use a base directory for storing the images.

Before you guess if something is a performance issue, you should test
to see what the actual cost of each method of image storing and
retrival is.

Rich

On Tue, Jun 9, 2009 at 12:49 PM, fireapple<taizhang1...@gmail.com> wrote:
>
> Firstly, I persist the portraits (images) of all users in the db as Strings
> (large one, say length 5000). Then, I want to get the String and display the
> portraits of users on the web page(like a topic in a forum). Here I know
> three solutions but none of them is efficient:
> 1. Because the image is large, it's not efficient to store it in
> objects(beans).
> 2. Because I have many users(say 300), if I store all the maps(userId and
> image) in the session, the session will be huge.
> 3. Because I have many users(say 300), if I access the db for each user's
> image, the worse case is I will have to access db for 300 times.
>
> Is there any solution (such as a design pattern or interceptor) for this
> performance issue? Many thanks!
> --
> View this message in context: 
> http://www.nabble.com/Performance-issue-with-large-data%28such-as-images%29-tp23945029p23945029.html
> Sent from the Struts - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> For additional commands, e-mail: user-h...@struts.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to