2017-04-06 11 views
3

プロフィール写真とカバー写真にpaperclipカラムを使用するアプリケーションが9つあります。Rails - パフォーマンスにポリモーフィズムを使用するかどうかを指定します。

私は(少なくとも私の限られた理解から)2つのオプション

  1. を持っているが、他の9つのモデルに関連付けられている多型モデルProfilePictureを持っています。
  2. 各モデルのプロフィール写真とカバー写真のフィールドを追加します。

合計で、9モデルには約30Mレコードがあります。

多態性を使用したり、通常のワークフローを進める方がパフォーマンスが良いでしょうか。または、私が逃しているより良い選択肢がありますか?

答えて

1

パフォーマンスは重要ですが、常に最も重要な側面ではありません。理論的には、列とロジックを9つの異なるモデルに複製する必要があります。多相ルートを使用する場合、ロジックは1か所にありますが、すべてのユーザーに関連するレコードをロードする必要があります。私は多態性に行き、ユーザとの関連付けをキャッシュします。これを行うにはIdentityCacheのようなものを使用できます。 ProfilePictureテーブルのpicturable_idpicturable_typeをインデックスする限り、ルックアップは非常に高速になります。

関連する問題