Hello Ilya,
  I think store files in DB has no complicated reasons, just for
convenience. For example, I might make files automatically be
backup-ed, and no budget for an independent backup solution. Thanks.
  Cui

2010/2/11 Ilya Kazakevich <kazakev...@devexperts.com>:
> Hello John,
>
> There was a joke in russian PHP club: "why strore images in database? Are
> you going to have a full text search on them?"
>
> IMHO:
> Storing files in DB is probably bad idea.
> Here are some advantages of storing files on filesystem:
> 1) Theoretically it takes more time to load data from database then to load
> it directly from filesystem if data is huge (we are not speaking about
> databases, installed on raw disks)
> 2) while storing files on fs, you can access them via web server and ftp and
> network fs and what-ever-you-like. Almost all servers for your platform
> supports filesystem, but not database.
> Yes, its possible to create script to access data from db via web, but you
> have to create it and support HTTP cache (modified-sience, e-tag and so on)
> and you also need to store modification date in db (to make this cache work)
> and so on. If you store files as files -- you have filesystem and servers to
> access them. If you use db as filesystem -- you should create servers by
> yourself. Looks like invention of wheel.
> 3) Tables with BLOB are not so flexible, i.e. HEAP tables do not support
> such fields. So, in some situation you'll have "filesort" that you cannt
> fix.
> 4) You can not easly do "SELECT *" from table with 10.000 rows if each row
> contains field with 200Kb pdf file.
>
> And there is only one disadvantage: consistency. When deleting user -- all
> her data could be deleted automatically using foreign keys, but you have to
> do it in your app if files are stored externally.
>
> If somebody knows more reasons to store files in DB -- post it here, please.
> It would be interesting. Thanks.
>
> Ilya.
>
> -----Original Message-----
> From: John G. Heim [mailto:jh...@math.wisc.edu]
> Sent: Wednesday, February 10, 2010 10:09 PM
> To: mysql@lists.mysql.com
> Subject: how things get messed up
>
> About 5 years ago, I was asked to write a php app for my department. The app
> keeps track of graduate school applicants to my department at the
> university. The main data elements are the scores each professor gives to
> each applicant. There are only about 400 applicants each year so even with
> all the personal data, scores, transcripts,  etc for each student, it's not
> much. for the first 2 years, it was under a meg of data. Well, then the
> selection committee asked me to add something so that if a student e-mailed
> the department a document, say a paper he'd written or a photo of himself,
> or whatever, it could be tacked on to the info they saw about him while
> grading the applicant.
>
> So I said, "Well, there is only going to be maybe 10 or 20 of those a year.
> And even if all 400 applicants submit a PDF of a paper they'd written, it
> would be only 400 docs. 4,000 after 10 years. Yeah, lets just create a
> documents table in the database and store them in mysql."
>
> For the first 2 years, only 2 students sent in documents to attach to their
> application. I figured I'd wasted my time. Then the next year, the graduate
> school changed their  web application form to allow students to upload
> documents. "Fine," I said, "My worst case scenario has already come true.
> But, well, this is why you plan for the worst case."
>
> Then they started taking letters of recommendation as PDF documents. In
> fact, they started requiring PDF docs. Each student has 3 to 6 letters of
> recommendation. All in all, I figure we're at about 100 times as many docs
> in our database as I originally expected and about 10x my worst case
> scenario.
>
> I should either be fired or shot.  Maybe fired *then* shot. Actually, its
> not as bad as all that. I can pretty easily write a perl script to export
> the docs to files and access them via a network mounted filesystem. After
> all, saving myself 5 hours of work 5 years ago is worth what? -- maybe
> 10hours today? It is amazing how often quick & dirty turns out just being
> dirty in the end.
>
>
>
>
> --
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:
> http://lists.mysql.com/mysql?unsub=kazakev...@devexperts.com
>
>
> --
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:    http://lists.mysql.com/mysql?unsub=rancp...@gmail.com
>
>

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql?unsub=arch...@jab.org

Reply via email to