RE: File Storage - Database vs. File System

2003-12-11 Thread Jim Davis
1) It depends - but in my experience most enterprises spend more money/time
on data backup/restore than webserver backup/restore.  This dependon your
company of course.  I don't find it any harder to restore files than data
however - and with the data you've got referential integrity helping out to
ensure that you've got everything you need as well.

 
2) You might want a file server - but now you've added another piece of
hardware and its associated issues.  To me having a file server or serving
the file from the DB doesn't have much of a difference.  Either solution
will work fine - but with the DB you have some other benefits.

 
3) It depends on your infrastructure completely.  In many enterprises web
servers, being "public" are in the DMZ and are not accessible by any
internal machines (and are SEVERELY limited in what internal machines they
can access).  Data servers on the other hand are almost always maintained in
a more protected area (the "Bastion") and can be accessed by the DMZ (within
strict limits) and the internal network.

 
In other words in most enterprises a file path is the least of your worries
- it's getting the firewalls cooperating.

 
Like I said - all of this depends on your architectures.  In general however
I consider most files like this "data" and so should be in the database.
That's an opinion however.

 
But don't minimize the benefits from having referential integrity maintained
automatically.  A DB with a file path can't stop somebody (or something)
from deleting a file.  If that file were in the DB (and the proper rules
were set up) you can, very easily.

 
Still it all depends on circumstances.

 
Jim Davis

  _  

From: Calvin Ward [mailto:[EMAIL PROTECTED] 
Sent: Thursday, December 11, 2003 5:50 AM
To: CF-Talk
Subject: Re: File Storage - Database vs. File System

 
For 1, isn't it often simpler to restore single files than it is to restore
single rows?

For 2, ideally, even if you are storing the file path in the db, wouldn't
you want that file to exist in one place only and have the cluster access
the 'file server'?

For 3, wouldn't that be a non-issue if the file path is stored in the db? In
that case the db knows where the file is and can be used to reference the
file regardless of application. 

- Calvin

  - Original Message ----- 
  From: Jim Davis 
  To: CF-Talk 
  Sent: Wednesday, December 10, 2003 11:25 PM
  Subject: RE: File Storage - Database vs. File System

  The nice thing about storing the file in the DB is that all your data is
  maintained in one place.  This has many benefits some of which are:

  1) One data store, one clean backup, one clean restore.

  2) No issues with cluster redundancy: the file is only stored in one place
  regardless of whether 1 or 20 servers use it.

  3) The data can be leveraged for more than CF if need be.

  4) You can leverage the databases built in referential integrity to great
  effect.

  That being said this does (among other things):

  1) Place more stress on your DB environment.  This can also depend on the
  types of files - are we talking small photos for photo IDs or 100 megabyte
  video files?

  2) Make for more complex application code (although as always - build it
  right and it won't be complicated).

  3) Use more (potentially very expensive) storage on the DB.

  4) Potentially make your application slower.

  I've generally found that storing the information in the DB is great - but
  in use can be slow.  So when performance counts and storage isn't an issue
I
  store the information in the database and cache the file on the web server
  for use.  The code first checks to see if the file exists and is the same
  date as the file in the DB - if not it pulls it form the DB and writes it
to
  the web server. 

  You can choose not to cache or handle the cache in any way you like - but
if
  you've got the space the cache gives you best of both worlds.

  Jim Davis

    _  

  From: Jeff Chastain [mailto:[EMAIL PROTECTED] 
  Sent: Wednesday, December 10, 2003 10:11 PM
  To: CF-Talk
  Subject: File Storage - Database vs. File System

  I am working on an application where the user will have the option to
upload
  files to the server.  The project specifications are open in terms of
  storage of the files, so I am wondering  what are the benefits or
  downsides of storing a file in the database vs. storing it in the file
  system?  I have in the past stored files in a file system and used
cfcontent
  to push the file back to the user, thereby hiding the file structure to
the
  end user.  However, this always runs into issues with duplicate file
names.

  Suggestions?

  Thanks
  -- Jeff
    _
  _
 [Todays Threads] 
 [This Message] 
 [Subscription] 
 [Fast Unsubscribe] 
 [User Settings]




Re: File Storage - Database vs. File System

2003-12-11 Thread Calvin Ward
For 1, isn't it often simpler to restore single files than it is to restore single rows?

For 2, ideally, even if you are storing the file path in the db, wouldn't you want that file to exist in one place only and have the cluster access the 'file server'?

For 3, wouldn't that be a non-issue if the file path is stored in the db? In that case the db knows where the file is and can be used to reference the file regardless of application. 

- Calvin

  - Original Message - 
  From: Jim Davis 
  To: CF-Talk 
  Sent: Wednesday, December 10, 2003 11:25 PM
  Subject: RE: File Storage - Database vs. File System

  The nice thing about storing the file in the DB is that all your data is
  maintained in one place.  This has many benefits some of which are:

  1) One data store, one clean backup, one clean restore.

  2) No issues with cluster redundancy: the file is only stored in one place
  regardless of whether 1 or 20 servers use it.

  3) The data can be leveraged for more than CF if need be.

  4) You can leverage the databases built in referential integrity to great
  effect.

  That being said this does (among other things):

  1) Place more stress on your DB environment.  This can also depend on the
  types of files - are we talking small photos for photo IDs or 100 megabyte
  video files?

  2) Make for more complex application code (although as always - build it
  right and it won't be complicated).

  3) Use more (potentially very expensive) storage on the DB.

  4) Potentially make your application slower.

  I've generally found that storing the information in the DB is great - but
  in use can be slow.  So when performance counts and storage isn't an issue I
  store the information in the database and cache the file on the web server
  for use.  The code first checks to see if the file exists and is the same
  date as the file in the DB - if not it pulls it form the DB and writes it to
  the web server. 

  You can choose not to cache or handle the cache in any way you like - but if
  you've got the space the cache gives you best of both worlds.

  Jim Davis

    _  

  From: Jeff Chastain [mailto:[EMAIL PROTECTED] 
  Sent: Wednesday, December 10, 2003 10:11 PM
  To: CF-Talk
  Subject: File Storage - Database vs. File System

  I am working on an application where the user will have the option to upload
  files to the server.  The project specifications are open in terms of
  storage of the files, so I am wondering  what are the benefits or
  downsides of storing a file in the database vs. storing it in the file
  system?  I have in the past stored files in a file system and used cfcontent
  to push the file back to the user, thereby hiding the file structure to the
  end user.  However, this always runs into issues with duplicate file names.

  Suggestions?

  Thanks
  -- Jeff
    _
 [Todays Threads] 
 [This Message] 
 [Subscription] 
 [Fast Unsubscribe] 
 [User Settings]




RE: File Storage - Database vs. File System

2003-12-10 Thread Jim Davis
The nice thing about storing the file in the DB is that all your data is
maintained in one place.  This has many benefits some of which are:

 
1) One data store, one clean backup, one clean restore.

 
2) No issues with cluster redundancy: the file is only stored in one place
regardless of whether 1 or 20 servers use it.

 
3) The data can be leveraged for more than CF if need be.

 
4) You can leverage the databases built in referential integrity to great
effect.

 
That being said this does (among other things):

 
1) Place more stress on your DB environment.  This can also depend on the
types of files - are we talking small photos for photo IDs or 100 megabyte
video files?

 
2) Make for more complex application code (although as always - build it
right and it won't be complicated).

 
3) Use more (potentially very expensive) storage on the DB.

 
4) Potentially make your application slower.

 
I've generally found that storing the information in the DB is great - but
in use can be slow.  So when performance counts and storage isn't an issue I
store the information in the database and cache the file on the web server
for use.  The code first checks to see if the file exists and is the same
date as the file in the DB - if not it pulls it form the DB and writes it to
the web server. 

 
You can choose not to cache or handle the cache in any way you like - but if
you've got the space the cache gives you best of both worlds.

 
Jim Davis

 
  _  

From: Jeff Chastain [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, December 10, 2003 10:11 PM
To: CF-Talk
Subject: File Storage - Database vs. File System

 
I am working on an application where the user will have the option to upload
files to the server.  The project specifications are open in terms of
storage of the files, so I am wondering  what are the benefits or
downsides of storing a file in the database vs. storing it in the file
system?  I have in the past stored files in a file system and used cfcontent
to push the file back to the user, thereby hiding the file structure to the
end user.  However, this always runs into issues with duplicate file names.

Suggestions?

Thanks
-- Jeff
  _
 [Todays Threads] 
 [This Message] 
 [Subscription] 
 [Fast Unsubscribe] 
 [User Settings]




RE: File Storage - Database vs. File System

2003-12-10 Thread Jeff Garza
Use a dual approach... store the actual file somewhere on the Server,
doesn't matter where and name it whatever you want (id number, guid, etc...)
then store the file information in the DB (true file name, size, location on
server, etc...).  You pull the info from the DB and then you can cfcontent
it out to the user.  Then you can tie access to the file to whatever
authentication schema you use in the DB...

 
Make sense?

 
Cheers,

 
Jeff Garza

  _  

From: Jeff Chastain [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, December 10, 2003 8:11 PM
To: CF-Talk
Subject: File Storage - Database vs. File System

I am working on an application where the user will have the option to upload
files to the server.  The project specifications are open in terms of
storage of the files, so I am wondering  what are the benefits or
downsides of storing a file in the database vs. storing it in the file
system?  I have in the past stored files in a file system and used cfcontent
to push the file back to the user, thereby hiding the file structure to the
end user.  However, this always runs into issues with duplicate file names.

Suggestions?

Thanks
-- Jeff 
  _
 [Todays Threads] 
 [This Message] 
 [Subscription] 
 [Fast Unsubscribe] 
 [User Settings]