コンテキストを提供するために、Pusher(Websocket Service over cloud) を使用してリアルタイム チャット アプリケーションに取り組んでいます。ここでは、各メッセージがサーバーに記録されてから、Websocket サーバーにプッシュされ、データがクライアントにプッシュされます。メッセージの保存に MySQL を使用しています。
そのようなテーブルの 1 つが私のメッセージで、次のフィールドがありますid,chat_payload,message_time,user_id,room_id
。
最初のチャットルームにデータを入力するには、メッセージ履歴を取得する必要があります。各メッセージ オブジェクトには が含まれます。username,useravatar,chat_payload,timestamp
ただし、テーブルuseravatar,username
はそれぞれテーブルに格納されます。したがって、テーブルが非常に急速users, user_meta
に拡大するため、結合を使用して実行時にデータを取得すると、明らかにコストがかかるように見えます。ユーザー名、ユーザーアバターをテーブルに保存することは、更新の問題を引き起こすため、正しくないようです。user_meta
messages
上記のシナリオを考慮して、適切なDB /アプリケーション設計を提案してください。