Akasata's Page - プログラミング、ピアノ、歴史のページ
(RSS2.0) | 自己紹介 | スカウター : Akasata's Page(あかさたのページ)
あかさたの最近の仕事

2007-06-25 01:16 : Rails におけるファイルのアップロードについて このエントリーを含むはてなブックマークこのエントリーを含むはてなブックマーク


Rails を使ったアプリに限った話ではありませんが、ファイルをアップロードする機能を Web アプリにつけたときに、ファイルを DB に入れるか、Web サーバにファイルを保存するかについてです。

私は Web サーバに保存すべきと考えていました。Web サーバとアプリケーションサーバ(Rails のサーバ)を分けている場合、静的ファイルはWeb サーバが処理して、動的コンテンツはアプリケーションサーバが処理してというようなことをする場合があります。DB に入れると、アプリケーションサーバを経由しなくてはならないので、こうした構成が取れなくなります。ただ、Web サーバを複数台にする場合、ファイルアップロード時に全ての Web サーバにファイルをコピーする手間がかかるというデメリットがあります。(バックアップの手間も一手間増えます。)

もともと私は、DB に静的コンテンツをいれると、Web アプリのレスポンスが遅くなるという問題が発生すると考えていました。ただ、この問題は Rails のキャッシュ機構を使えばある程度回避できます。この場合、静的コンテンツも全てアプリケーションサーバが処理することになります。それぞれのサーバが DB からファイルを取り出してキャッシュをするので、ファイルの管理は楽になります。

もっとも、動画アップロード&配信サイトとか、データ量が多い場合は、ファイル置き場とアプリケーションサーバは分けざるを得ない(ストレージにも IO にも問題が発生する可能性があるので)ので、この方法はとりづらいですが。

所詮はケースバイケースですが、一つあたりのファイルがそれほど大きくなくて、ファイルの総容量が 100GB 以内に収まるのなら(最大容量は適当)、DB に入れるというのもアリかなと思うようになりました。Kodougu では、アイコン画像などがアップロード可能なのですが、今は DB に入れています。
[プログラミング] rails web アーキテクチャ

コメントを書く

トラックバック
この記事のトラックバック URL:
http://www.rmake-labo.com/akasata/articles/trackback/166
言及リンクのないトラックバック(このブログに触れていない記事のトラックバック)は無視されます。
Posted by あかさた(編集

検索

 

Twitter Status


follow akasata at http://twitter.com

人気エントリ

新着エントリ

カテゴリ

コンテンツ

リンク

新着コメント

トラックバック

ブログパーツ

管理者用

ToDo リスト