Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Database: image file as blob or file path?

I know this question has been asked any a times.

I read this whole post but still couldn't reach to a point.

I am making a website which will allow users to download the wallpapers and songs. No one else will upload those wallpapers/songs except me. I mean to say that the users will not be uploading them. At present. Each file on an average is 6Mb(for songs).

Now, what would you prefer to do here? Store them as blob files or use file paths?

like image 654
Navneet Saini Avatar asked Aug 31 '25 17:08

Navneet Saini


2 Answers

In My opinion you should store path in instead of blob. But again it depends upon many other things - Do you have your own server? or you are hosting it on somewhere else ? Are these things really critical to put as blob in DB ? What will be your backup strategy etc..

I have my own reasoning

  • File system is there to manage files and in your case songs and images are not very critical. and imagine if your database will grow in size the performance will go down. If objects are larger than one megabyte on average, NTFS has a clear advantage over SQL Server

Also keep in mind when you have to take backup of your database it may be a big headache at some stage. On the other hand if your songs file are on disk then it will be easy.

Also if you are storing just the path in database, you can consider to keep your songs and picture on some other server (or multiple servers) as well.

In short, I can see many advantages to use file system to store songs and pictures.

like image 77
microtechie Avatar answered Sep 02 '25 17:09

microtechie


it really depends on what you're doing.

if you use file paths, then you have to have different and consistent security setup on that path. you also have to do something to enforce unique filenames, etc. you also need to set up backup for that directory as well

if you use blobs, the database handles security for you, backup should be consistent with everything else in the db.

you might store them as blobs in a different table, with a FK from the first table to the blob table. then you can avoid storing the same blob multiple times, etc.

like image 31
John Gardner Avatar answered Sep 02 '25 17:09

John Gardner