WordPressのデータの保存先は、なぜ、WordPressと、MySQLに分かれているのしょう?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2014/10/28 19:03:33
id:torimaki

たとえば...「テーマ」や「プラグイン」がWordPress側に保存されるのは、なんとなく、うなづけるのですが、「画像ファイル」は「記事」等が保存されるMySQL側で保存されても良いような...保存に関するWordPressの立て付けが、ちょっと、引っかかるというか...

ベストアンサー

id:fiwa No.2

回答回数1200ベストアンサー獲得回数253

CMSの設計思想について詳しいわけではないですが、WordPressに限らず画像ファイル等はデータベースではなく、ファイルシステムで管理する仕組みになっているものが多いのではないかと思います。
画像ファイルをデータベースに格納しない理由は、パフォーマンスの問題が大きいのではないでしょうか。

結論から言ってしまうと、高速化を考えるなら画像のDB保存は避けた方が無難です。
DB保存のメリットとデメリットを挙げるとこんな感じでしょうか。

DBに保存するメリット

  • セキュリテイ上の優位性。認証をパスした人だけに表示・DLさせるといったことが容易。
  • ファイルとレコードが常に一致しているので、レコードはあるのにファイルがない(※もしくはその逆)…といった不整合が発生しない。
  • ファイルとレコードが常に一致しているので、バックアップ・リストアも容易。

DBに保存するデメリット

  • DB保存よりWebサーバの方がキャッシュに優れている。
  • データベースへの負荷が増える。
  • 表示方法によっては動作が遅い。

ブログのレスポンスを高速化する為に行った7つの施策 | 14時の間食


一方で画像ファイルをデータベースに入れるタイプのCMSも存在していて、例えばPloneというCMSの場合、以前のバージョンでは画像ファイルもデータベースに格納されるのがデフォルトだったようです。もっとも、Ver.4以降ではファイルシステムに保存されるようなったそうですが……。

Ploneは、ZODBと言われるデータベース(DB)が内包しています。オブジェクト型データベースで非常に使いやすい物になっています。そのこともあり、コンテンツ類はすべてこのDB内に保存します。コンテンツとは、文書やHTMLはもちろん、PDFファイルや画像ファイルなども同じDBに入れることになります。
コンテンツデータがすべて、データベースに入ると言うことは、データの可搬性が非常に高く、移設やテストなど非常に便利です。しかし、大型ファイルが多くなるとパフォーマンスが低下することがあります。
Ploneで大型ファイルを扱う ? 株式会社CMSコミュニケーションズ

他2件のコメントを見る
id:Sampo

画像をDBに保存する保存するメリット・デメリットの記事は、今年書かれたものながら知識としてはやや古く感じます。

まず、DBサーバに置かない場合にはファイルとしてWebサーバに置くとしてしまっている点。
この場合、Webサーバにファイルとして置くことの最大の問題点が、「Webサーバを並行稼働させられない」点です。
アクセスが増え、一台のWebサーバでリクエストをさばくことができなくなった場合、同じDBシステムを参照するWebサーバを複数立てて負荷を分散する必要が出てきます。
ところがアップロードされたファイルをWebサーバ内に直接ファイルとして保存するなら、アップロードを受け付けたサーバ以外では画像が表示されないことになってしまいますね。

ファイル直接保存では、アクセス増にサーバ増で対応できないのです。

ではどうするか。DBに保存するのは1つの方法です。takiponさんの回答は誤りで、MySQLに限らずDBは画像データを受け入れ可能です。しかしパフォーマンス上の悪影響はやはり問題。
そこで現在よくある方法は、Amazon S3に代表されるオブジェクトストレージに保存する方法です。保存したデータにはURLが付くので、データベースにはそのURLさえ保存すれば十分。DBに保存するような権限制御はできませんが、十分複雑なURLにしておくことで知らない人は開きようがないという体制にすればまあ十分制御できると言えるでしょう、という管理をfacebookなんかもしています。

2014/10/27 12:19:24
id:torimaki

現在は、WordPressのユーザーが多いのですが、これから、どうなっていくのか。。。データー保存の方法から目配りしていくことも、必要であると。

2014/10/27 14:00:13

その他の回答1件)

id:takipon No.1

回答回数175ベストアンサー獲得回数10

MySQLはデータベースなので、データを格納します。画像は格納出来ないです。

他1件のコメントを見る
id:fiwa

まぁ別に出来なくはないでしょうけど。
http://www.itmedia.co.jp/enterprise/0309/24/epn25.html

2014/10/26 11:01:32
id:torimaki

添付して頂いたURLのサイト、拝見しました。(内容は理解できないのですが)MySQLでも、写真が格納できるという。。。また、モヤモヤしてまいりました。

2014/10/26 12:52:29
id:fiwa No.2

回答回数1200ベストアンサー獲得回数253ここでベストアンサー

CMSの設計思想について詳しいわけではないですが、WordPressに限らず画像ファイル等はデータベースではなく、ファイルシステムで管理する仕組みになっているものが多いのではないかと思います。
画像ファイルをデータベースに格納しない理由は、パフォーマンスの問題が大きいのではないでしょうか。

結論から言ってしまうと、高速化を考えるなら画像のDB保存は避けた方が無難です。
DB保存のメリットとデメリットを挙げるとこんな感じでしょうか。

DBに保存するメリット

  • セキュリテイ上の優位性。認証をパスした人だけに表示・DLさせるといったことが容易。
  • ファイルとレコードが常に一致しているので、レコードはあるのにファイルがない(※もしくはその逆)…といった不整合が発生しない。
  • ファイルとレコードが常に一致しているので、バックアップ・リストアも容易。

DBに保存するデメリット

  • DB保存よりWebサーバの方がキャッシュに優れている。
  • データベースへの負荷が増える。
  • 表示方法によっては動作が遅い。

ブログのレスポンスを高速化する為に行った7つの施策 | 14時の間食


一方で画像ファイルをデータベースに入れるタイプのCMSも存在していて、例えばPloneというCMSの場合、以前のバージョンでは画像ファイルもデータベースに格納されるのがデフォルトだったようです。もっとも、Ver.4以降ではファイルシステムに保存されるようなったそうですが……。

Ploneは、ZODBと言われるデータベース(DB)が内包しています。オブジェクト型データベースで非常に使いやすい物になっています。そのこともあり、コンテンツ類はすべてこのDB内に保存します。コンテンツとは、文書やHTMLはもちろん、PDFファイルや画像ファイルなども同じDBに入れることになります。
コンテンツデータがすべて、データベースに入ると言うことは、データの可搬性が非常に高く、移設やテストなど非常に便利です。しかし、大型ファイルが多くなるとパフォーマンスが低下することがあります。
Ploneで大型ファイルを扱う ? 株式会社CMSコミュニケーションズ

他2件のコメントを見る
id:Sampo

画像をDBに保存する保存するメリット・デメリットの記事は、今年書かれたものながら知識としてはやや古く感じます。

まず、DBサーバに置かない場合にはファイルとしてWebサーバに置くとしてしまっている点。
この場合、Webサーバにファイルとして置くことの最大の問題点が、「Webサーバを並行稼働させられない」点です。
アクセスが増え、一台のWebサーバでリクエストをさばくことができなくなった場合、同じDBシステムを参照するWebサーバを複数立てて負荷を分散する必要が出てきます。
ところがアップロードされたファイルをWebサーバ内に直接ファイルとして保存するなら、アップロードを受け付けたサーバ以外では画像が表示されないことになってしまいますね。

ファイル直接保存では、アクセス増にサーバ増で対応できないのです。

ではどうするか。DBに保存するのは1つの方法です。takiponさんの回答は誤りで、MySQLに限らずDBは画像データを受け入れ可能です。しかしパフォーマンス上の悪影響はやはり問題。
そこで現在よくある方法は、Amazon S3に代表されるオブジェクトストレージに保存する方法です。保存したデータにはURLが付くので、データベースにはそのURLさえ保存すれば十分。DBに保存するような権限制御はできませんが、十分複雑なURLにしておくことで知らない人は開きようがないという体制にすればまあ十分制御できると言えるでしょう、という管理をfacebookなんかもしています。

2014/10/27 12:19:24
id:torimaki

現在は、WordPressのユーザーが多いのですが、これから、どうなっていくのか。。。データー保存の方法から目配りしていくことも、必要であると。

2014/10/27 14:00:13

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません