Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email email@example.com
From: Scott Haneda (talklistsnewgeo.com)
Date: Wed May 27 2009 - 12:40:30 CDT
Unless you have very good reason to store binary data like an image in
your database, do not. It may work well for a time, but always be
prepared that your system will grow. If it grows a good deal relative
to your hardware, and users, and connections etc, you will always be
in a race to "throw more hardware" at the problem.
In a simplistic terms, an image is a file, files should be stored on a
You can do some very nice and simple things later on to distribute
image loads. If you store the path to the image, so example, "images/
date/time.jpg", and then need to grow your serving needs, you could
adjust your code in the http request to call images.example.com as the
hostname. You could set images.example.com to return round robin DNS
Now all you have to do is mirror or sync your images directory to any
number of high performance http servers.
That is just one example of how I have avoided dealing with binary
file load in MySql, or any database for that matter. Even a reltively
small image stored in a database can become a lot of data very fast.
You will also find it can be inefficient to fetch that data and show
it to the end user. At the very least, you have to request the data,
read it, rebuild it into a form that can be displayed to a user, which
is a lot of work, compared to no work at all if just calling it from
the file system.
Your question about which is faster, always will be on disk binary
storage, with the exception of deletes. Deletes will happen in near
the same time, though you do have to locate the record to delete.
This probably still has no impact, since you will locate on an index.
Hope that was helpful.
On May 27, 2009, at 9:50 AM, Pete Wilson wrote:
> I am new to MySQL and just laying out what I hope will be just one
> db that holds all the info for a list of forged or machined metal
> Let's say there are 10,000 such parts, each with a unique part
> number. That part number is the primary index.
> Each part has at least one, and maybe several, accompanying photos.
> And each part has at least one, and perhaps as many as five, human-
> language descriptions. These descriptions might be as long as 5,000
> characters each.
> I believe I have the choice of:
> 1. Storing everything -- photos and descriptions included -- in the
> database; or
> 2. Holding some info in the database; and storing photos and
> descriptions in normal-type disk files apart from the database, with
> names based on part numbers.
> So my questions:
> 1. Which scheme is faster and less resource-hogging in reading,
> updating, adding, and deleting?
> 2. I understand there are problems in storing photos in the db. Can
> one overcome these problems somehow?
Scott * If you contact me off list replace talklists with scott *
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql