In this new post to his CodeDiesel site Sameer Borate looks at something that's been a controversial topic with developers (not just PHP) about storing binary data, like images, in a database instead of on the local file system.
There is much discussion and argument with no final say on the issue. In one of my recent project the same issue was raised; the client and myself discussing the benefits and drawback of storing the images into a database. The project needed storing around 50,000 images, so it was important to get the question resolved satisfactorily. After much deliberation we settled on using the file system. The major factor in the decision was that we needed the database and images decoupled as we would be having multiple databases using the same set of images.
He goes on to talk about some of the things you should consider when you're deciding if storing images in the database is the right thing for your application including:
- The bloat that can come with storing binary data (larger database size)
- Updating images requires two operations - updating the database and updating the cached image locally
- Images usually serve faster when they come from the filesystem through the web server
- BLOB (a common type for binary data storage) is variable-width and can degrade performance
You can read the rest of the reasons (and get more detail on the ones above) in the rest of the post.