I'm for storing files on the file system. Some of my cons are below.
There are many others and pros for doing what you're doing, and these
items could be argued, but these are my 2 cents on why I would not store
files in a database. Others would definitely have different opinions,
I'm not sure what people with clustered .NET servers would recommend for
example. Perhaps their arguments would weigh in favour of what you're
doing. My perspective is from the simple .NET server and DB server
architecture.
1. No need for large files to be processed through .NET process space.
If you store files in your database, the files must be streamed through
the .NET framework before being returned to clients - definitely unnecessary
2. More network bandwidth consumed between your .NET application server
and DB server if they are separate machines; greater network scalability
3. Limited indexing for searching purposes versus externalized files
with external file indexing / searching tools
4. No capability to manually examine a file without programmatically
retrieving the file from the database first - can be an inconvenience
when it is necessary to do so, perhaps for support and maintenance or
debugging purposes
5. More database expertise required to effectively partition database to
support files versus simply storing on filesystem - perhaps could impact
performance of your database if not done well
Shan