Heroku を介して Postgres で Rails アプリを実行しています。
ユーザーのコメントなど、さまざまな項目について、自分のサイトに Facebook の「いいね」のようなものを実装したいと考えています。これらを効率的かつ高速にデータベースに格納する最もスマートな方法は何ですか?
明らかな 1 つは、次のように、ユーザーとアイテムの間に類似の結合テーブルを用意することです。
user_id int
item_id int
item_type string
created_at datettime
ただし、表示されると、アイテムをプルするたびに、like テーブル全体で結合をプルする必要があり、非常に大きくなる可能性があります。
これに対する明白な対応は、進行中のいいねカウントのために、アイテムにカウンターを格納することです。ただし、アイテムの横に表示することと、ユーザーが既に気に入っているもののいいねボタンを非表示にすることの両方で、誰がアイテムを気に入ったかが重要であるため、これは機能しません。
私の計画は、すべての好感の持てるアイテムに、シリアル化された配列を格納するテキスト フィールドを追加することです。そうすれば、アイテムをプルするたびに、誰がそれを気に入ったかの完全なリストが表示されます。これを行うためのより良い方法はありますか、またはこれが推奨されるアプローチですか?