プライベートチャットサービスをしたいです。これで、メッセージとスレッド (スレッド - ユーザー間の個室) を格納するための関係データベース (PostgreSQL) ができました。
次のテーブルがあります。
1) メッセージ: id、text、datetime、sender_id、thread_id、is_read
2) スレッド: id
3) Thread_Participants: thread_id、user_id
Message テーブルは Thread_Participants テーブルを介して Many_to_Many の関係で Thread と接続されます。
私のアーキテクチャでは、ユーザーは Redis データベースの WebSocets と Pub/Sub を介してメッセージを交換します。
しかし、私の意見では、メッセージを関係データベースに保存する必要があるため、安全性が向上します。多分私は間違っています。
しかし、ユーザーのスレッドの履歴を取得するのに問題があります。次のフィールド (リレーション DB) をリクエストしたいと思います。
スレッド ID、
last_message_in_this_thread、
count_of_messages_in_this_thread、
datetime_of_last_message_in_this_thread、
username_of_last_message_in_this_thread
しかし、そのような要求は非常に困難で遅い要求を意味します...どうすれば高速な方法で取得できますか? それとも、メッセージの別の方法またはアーキテクチャがあるのでしょうか?