Ruby on Rails で、画像をサーバにアップロードする場合、アップロードされた画像をファイルとして保存して、そのファイルへのパスをDBに保存する方法と、画像データ自体をDBへ保存する方法とあると思います。


この二つの方法の良し悪しを教えてください。

また、Rails の plugin で、flicker や Picasa 等の外部サービスに簡単に画像を保存して検索してURLを取り出せるようなものがあれば、教えてください。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/11/23 12:39:02
  • 終了:2010/11/28 07:34:40

回答(2件)

id:babie No.1

ばびー回答回数4ベストアンサー獲得回数02010/11/23 14:13:57

ポイント35pt

■ ファイルへのパスをDBに保存する方法

利点:

  • Rails のコントローラーを通さないのでリクエストを返すのが速い
  • DBサーバーに負荷がかからない

欠点:

  • Webサーバーのスケールアウト時にNFSを使うなどして工夫しなければならない

■ 画像データ自体をDBへ保存する方法

利点:

  • Webサーバーのスケールアウトが容易

欠点:

  • Rails のコントローラーを通すのでリクエストを返すのが遅い
  • DBサーバーに負荷がかかる

1と2の折衷案として、

  1. 画像をDBに保存する
  2. 画像がリクエストされた際に、ファイルの有無を調べ、
    1. ファイルがなかったら、DBからファイルへ書き出し、ファイルへのパスを返す
    2. ファイルがあったら、ファイルへのパスを返す

という Rails のヘルパーも書けると思います。


■ Rails のプラグイン

外部サービスにデータを保存する際は、Flicker や Picasa 等ではなく、Amazon S3 等に保存するのが普通です。

ファイルアップロードプラグインは、

などが有名です。

この2つは、DBとして保存、ファイルとして保存、Amazon S3 に保存ができます。

URLも簡単に取得できるメソッドがあります。

id:norisuke3

Amazon S3 か。

全然考えてもみなかった。EC2 は使ったこと有ったんだけど。

貴重な意見ありがとう!!

2010/11/23 14:17:22
id:k-tan2 No.2

k-tan2回答回数401ベストアンサー獲得回数482010/11/23 14:48:28

ポイント35pt

Ruby wrapper for Picasa api

http://code.google.com/p/picasaonrails/

id:norisuke3

おお!!まさに探していたものです。

ありがとうございます!!

2010/11/24 03:48:24

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません