2012-03-09 10 views
1

私は疑似社会的なアプリです。
は、我々は3つのテーブルを持っている:タイムラインを処理する(MySQL)

Users: _id_, username, password, email 
Movies: _id_, title, synopsis 
Followers: __(#user_id1, #user_id2)__, timestamp 
U_Movies: __(#user_id, #movie_id)__, rating, timestamp 

私たちは、最近の活動で、我々のアプリ、シンプルなタイムラインにタイムラインを追加したいです。私たちはカスタムタイムライン(メッセージなし)、活動のみを望んでいません。

このタイムラインを「作成」するにはどうすればよいでしょうか?
すべてのアクティビティ(INSERT INTO followersU_Moviesがある場合はINSERT INTO timelineを実行します)を作成するか、MySQLとJOIN ONの最新のフォロワーのアクティビティ(タイムスタンプを使用していると思います多くのエントリーとユーザーが多い場合は重い)、そして別のアドバイスはありますか?

ありがとうございました!

答えて

1

私は最近同様のことをしました。新しいテーブルにデータを追加する(トリガーや別の挿入物のいずれかを使用)

テーブル上であなたがしていないことや更新や削除を推測すると、かなり拡大するはずです。日付範囲に基づいてMySQLのテーブルを分割することもできます。これは数年後のパフォーマンスを維持します(私の最初のバージョンは4年間で140millionの行を持ち、それでも素早い)

編集 - 変更を検出します。

TRIGGERルート - Before updateを使用すると、列を比較してから、タイムラインに挿入して履歴の変更を加えることができます。

CREATE TRIGGER upd_check BEFORE UPDATE ON account 
    FOR EACH ROW 
    BEGIN 
    IF NEW.rating != OLD.rating THEN 
     INSERT INTO timeline .. 
    END IF; 
END; 
+0

TRIGGERS良いアイデアであると思わ最高(および/または2つのインサート)のようですが、事は、私は変更を追跡する必要がありますということです。たとえば、「評価」だけでなく「レビュー」もありません。誰かがデータを変更したい場合、クライアントは「評価= INT&review = TEXT」を送信し、DBを更新します。同じデータ。どの欄が更新されたか知る方法はありますか?次に、タイムラインにタイプ、新しいレーティング/レビューを挿入します...ありがとうございます。 – Max13

1

変更時に3番目のテーブルに挿入するTRIGGERを作成できます。

mysql docs onlineのTRIGGERSを参照してください。

+0

おかげで、(私が発見されます) – Max13

関連する問題