3

概要

Facebook を使用してログインする Ruby on Rails Web サイトを作成しています。

ユーザーごとに、Facebook ユーザー ID とその他の基本情報を格納するデータベース エントリがあります。

Facebook からユーザーのフレンドリストを取得するために Koala gem も使用していますが、このデータをどのように保存すればよいかわかりません...

オプション1

ユーザーの友達をシリアル化されたハッシュとしてテーブルに保存しUser、現在のユーザーのすべての友達のリストを表示したい場合は、このハッシュを取得して、次の行に沿って何かを実行できます。SELECT FROM Users WHERE facebook_user_id IN hash

ユーザーがログインするたびに、このフィールドを更新して最新の友達リストを保存できます。

オプション 2

Friend テーブルを作成し、User が多くの Friends を持っているここに友情情報を格納できます。したがって、友情ごとに行 (User1およびUser2列) があります。次に、現在のユーザーの友達のリストを表示するには、次のようなことができますSELECT User2 FROM Friends WHERE User1 = current_user

これは私にとってより良い選択肢のように思えますが...

多くの行があるという欠点があります... 100,000 人のユーザーがいて、それぞれに 100 人の友達がいる場合、Friends テーブルには 10,000,000 行になります。

また、ユーザーがログインするたびに、Koala を使用して返された Facebook の友達リストをループし、友達リストの誰かが User テーブルにあり、Friends に対応するエントリがない場合は、Friend レコードを作成する必要があることも意味します。テーブル。ユーザーが 1000 人の Facebook 友達を持っている場合、これは遅くなるように見えますか?

これを達成するための最善の方法についてのガイダンスをいただければ幸いです。

言葉遣いの悪い質問をお詫びします。すぐに言い直して整理します。

事前に助けてくれてありがとう。

4

1 に答える 1