たとえば...「テーマ」や「プラグイン」がWordPress側に保存されるのは、なんとなく、うなづけるのですが、「画像ファイル」は「記事」等が保存されるMySQL側で保存されても良いような...保存に関するWordPressの立て付けが、ちょっと、引っかかるというか...
CMSの設計思想について詳しいわけではないですが、WordPressに限らず画像ファイル等はデータベースではなく、ファイルシステムで管理する仕組みになっているものが多いのではないかと思います。
画像ファイルをデータベースに格納しない理由は、パフォーマンスの問題が大きいのではないでしょうか。
結論から言ってしまうと、高速化を考えるなら画像のDB保存は避けた方が無難です。
DB保存のメリットとデメリットを挙げるとこんな感じでしょうか。
DBに保存するメリット
- セキュリテイ上の優位性。認証をパスした人だけに表示・DLさせるといったことが容易。
- ファイルとレコードが常に一致しているので、レコードはあるのにファイルがない(※もしくはその逆)…といった不整合が発生しない。
- ファイルとレコードが常に一致しているので、バックアップ・リストアも容易。
DBに保存するデメリット
- DB保存よりWebサーバの方がキャッシュに優れている。
- データベースへの負荷が増える。
- 表示方法によっては動作が遅い。
一方で画像ファイルをデータベースに入れるタイプのCMSも存在していて、例えばPloneというCMSの場合、以前のバージョンでは画像ファイルもデータベースに格納されるのがデフォルトだったようです。もっとも、Ver.4以降ではファイルシステムに保存されるようなったそうですが……。
Ploneは、ZODBと言われるデータベース(DB)が内包しています。オブジェクト型データベースで非常に使いやすい物になっています。そのこともあり、コンテンツ類はすべてこのDB内に保存します。コンテンツとは、文書やHTMLはもちろん、PDFファイルや画像ファイルなども同じDBに入れることになります。
コンテンツデータがすべて、データベースに入ると言うことは、データの可搬性が非常に高く、移設やテストなど非常に便利です。しかし、大型ファイルが多くなるとパフォーマンスが低下することがあります。
Ploneで大型ファイルを扱う ? 株式会社CMSコミュニケーションズ
MySQLはデータベースなので、データを格納します。画像は格納出来ないです。
まぁ別に出来なくはないでしょうけど。
http://www.itmedia.co.jp/enterprise/0309/24/epn25.html
添付して頂いたURLのサイト、拝見しました。(内容は理解できないのですが)MySQLでも、写真が格納できるという。。。また、モヤモヤしてまいりました。
CMSの設計思想について詳しいわけではないですが、WordPressに限らず画像ファイル等はデータベースではなく、ファイルシステムで管理する仕組みになっているものが多いのではないかと思います。
画像ファイルをデータベースに格納しない理由は、パフォーマンスの問題が大きいのではないでしょうか。
結論から言ってしまうと、高速化を考えるなら画像のDB保存は避けた方が無難です。
DB保存のメリットとデメリットを挙げるとこんな感じでしょうか。
DBに保存するメリット
- セキュリテイ上の優位性。認証をパスした人だけに表示・DLさせるといったことが容易。
- ファイルとレコードが常に一致しているので、レコードはあるのにファイルがない(※もしくはその逆)…といった不整合が発生しない。
- ファイルとレコードが常に一致しているので、バックアップ・リストアも容易。
DBに保存するデメリット
- DB保存よりWebサーバの方がキャッシュに優れている。
- データベースへの負荷が増える。
- 表示方法によっては動作が遅い。
一方で画像ファイルをデータベースに入れるタイプのCMSも存在していて、例えばPloneというCMSの場合、以前のバージョンでは画像ファイルもデータベースに格納されるのがデフォルトだったようです。もっとも、Ver.4以降ではファイルシステムに保存されるようなったそうですが……。
Ploneは、ZODBと言われるデータベース(DB)が内包しています。オブジェクト型データベースで非常に使いやすい物になっています。そのこともあり、コンテンツ類はすべてこのDB内に保存します。コンテンツとは、文書やHTMLはもちろん、PDFファイルや画像ファイルなども同じDBに入れることになります。
コンテンツデータがすべて、データベースに入ると言うことは、データの可搬性が非常に高く、移設やテストなど非常に便利です。しかし、大型ファイルが多くなるとパフォーマンスが低下することがあります。
Ploneで大型ファイルを扱う ? 株式会社CMSコミュニケーションズ
画像をDBに保存する保存するメリット・デメリットの記事は、今年書かれたものながら知識としてはやや古く感じます。
まず、DBサーバに置かない場合にはファイルとしてWebサーバに置くとしてしまっている点。
この場合、Webサーバにファイルとして置くことの最大の問題点が、「Webサーバを並行稼働させられない」点です。
アクセスが増え、一台のWebサーバでリクエストをさばくことができなくなった場合、同じDBシステムを参照するWebサーバを複数立てて負荷を分散する必要が出てきます。
ところがアップロードされたファイルをWebサーバ内に直接ファイルとして保存するなら、アップロードを受け付けたサーバ以外では画像が表示されないことになってしまいますね。
ファイル直接保存では、アクセス増にサーバ増で対応できないのです。
ではどうするか。DBに保存するのは1つの方法です。takiponさんの回答は誤りで、MySQLに限らずDBは画像データを受け入れ可能です。しかしパフォーマンス上の悪影響はやはり問題。
そこで現在よくある方法は、Amazon S3に代表されるオブジェクトストレージに保存する方法です。保存したデータにはURLが付くので、データベースにはそのURLさえ保存すれば十分。DBに保存するような権限制御はできませんが、十分複雑なURLにしておくことで知らない人は開きようがないという体制にすればまあ十分制御できると言えるでしょう、という管理をfacebookなんかもしています。
現在は、WordPressのユーザーが多いのですが、これから、どうなっていくのか。。。データー保存の方法から目配りしていくことも、必要であると。
画像をDBに保存する保存するメリット・デメリットの記事は、今年書かれたものながら知識としてはやや古く感じます。
2014/10/27 12:19:24まず、DBサーバに置かない場合にはファイルとしてWebサーバに置くとしてしまっている点。
この場合、Webサーバにファイルとして置くことの最大の問題点が、「Webサーバを並行稼働させられない」点です。
アクセスが増え、一台のWebサーバでリクエストをさばくことができなくなった場合、同じDBシステムを参照するWebサーバを複数立てて負荷を分散する必要が出てきます。
ところがアップロードされたファイルをWebサーバ内に直接ファイルとして保存するなら、アップロードを受け付けたサーバ以外では画像が表示されないことになってしまいますね。
ファイル直接保存では、アクセス増にサーバ増で対応できないのです。
ではどうするか。DBに保存するのは1つの方法です。takiponさんの回答は誤りで、MySQLに限らずDBは画像データを受け入れ可能です。しかしパフォーマンス上の悪影響はやはり問題。
そこで現在よくある方法は、Amazon S3に代表されるオブジェクトストレージに保存する方法です。保存したデータにはURLが付くので、データベースにはそのURLさえ保存すれば十分。DBに保存するような権限制御はできませんが、十分複雑なURLにしておくことで知らない人は開きようがないという体制にすればまあ十分制御できると言えるでしょう、という管理をfacebookなんかもしています。
現在は、WordPressのユーザーが多いのですが、これから、どうなっていくのか。。。データー保存の方法から目配りしていくことも、必要であると。
2014/10/27 14:00:13