人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

SNSのアルゴリズム、ロジックに関する質問です。
自分のFriendの更新情報が一覧できるページ(Home Page, Mypage的な)を効率的に表示するロジックについて言及されたページ、または書籍などを教えてください。


何も考えずに作ると以下のようになると思いますが、これだとユーザー数の増加に比例して、かなり負荷が高くなることが想像できます。

(1)自分のFriendのIDを全て取得
(2)取得した全IDで、日記などのレコードを検索
(3)更新日付が降順になるようソート
(4)表示


ある程度はバッチなどで回避できると思いますが、mixiなどは体感的に半リアルに近い更新速度のような気がします。このように高速でなおかつ負荷の低いロジックを教えてください。


●質問者: munyaX
●カテゴリ:インターネット ウェブ制作
✍キーワード:FRIEND HOME mixi SNS アルゴリズム
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● hijk05
●16ポイント

http://itpro.nikkeibp.co.jp/article/NEWS/20060330/233820/

◎質問者からの返答

ありがとうございます。

なつかしいですね、この記事はリアルタイムで見ていました。


良い記事ではあるのですが、いかんせんサイト全体のインフラの話に重点がおかれて、質問事項のロジックの話まで到達していないです。引き続きよろしくお願いします。


2 ● rutta888
●32ポイント

SNSということで、相互に繋がっていることを認識できるという前提の下でしたら

閲覧側が更新を取るのではなく、更新側が教えてあげればよいかなと思います。

日記を例にすると。

1. Aが日記を更新。

2. Aのフレンドリストのユーザーを取得

3. 取得したユーザーに更新を通達

4-a. 更新通達を受けた時点でユーザーのページを更新

4-b. 更新通達を受けたユーザーがログインしたら更新

こうすることで、最低限必要な場所のみが参照されるようになると思います。

裏づけが書籍やwebでほしいということでしたらごめんなさい。

◎質問者からの返答

ありがとうございます。

#裏付けはあればよし、無ければ処理フローを教えていただければ全く問題ないです。


>閲覧側が更新を取るのではなく、更新側が教えてあげればよいかなと思います。

確かに。

掲示板などでもそうですが、更新者よりも閲覧者が多い環境下では、この方法は確かに有効な気がします。更新者が最低でも1回は見ますものね。

ありがとうございます!

他にもあればよろしくお願いします。


3 ● australiagc
●32ポイント

これって、単に自動作成型のダイナミックRSSフィードを使ってるんじゃないですか・・・?

(1)Friendが日記などを更新 > friendのRSSがアップデートされる

(2)自分がログイン > 自分のFriendのIDを全て取得

(2)取得した全IDに該当するRSSフィードを取得

(3)フィードリーダーが順序、表示件数の設定に基づいて取得したRSSフィードを組み直す

(4)表示


参考文献で良いのがなかったのですが・・・こんな感じ?

http://www.tarosite.net/2005/06/snsrss.html

◎質問者からの返答

これはクライアント側(JavaScriptなど)で処理する前提でしょうか?

であれば、ある程度の規模まで絞り込んだデータを送信して、後はクライアントまかせという考え方は、サーバ側の負荷の軽減にはなりそうですね。


> (1)Friendが日記などを更新 > friendのRSSがアップデートされる

> (2)自分がログイン > 自分のFriendのIDを全て取得

この仕様だと1,000人Friendがいた時、1RSS1人分の更新情報だと1回アクセスしただけで1,000回分のリクエストが走ることになりますから、サーバには優しくないというか、結構厳しいかもしれません。現実的には自分のIDを渡すと、Friend全員の更新情報が一定量返却されるとか、そんな仕様になるかもしれませんね。


面白い提案ありがとうございます!

イマジネーションが膨らみました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ