我想做私人聊天服务。现在我有一个关系数据库(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 连接。
在我的架构中,用户通过 WebSocets 和 Redis 数据库的 Pub/Sub 交换消息。
但在我看来,我需要将消息存储在关系数据库中,这样更安全。也许我错了。
但是我在获取用户线程的历史记录时遇到了问题。我想请求(关系数据库)以下字段:
线程 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
但是这样的请求意味着相当艰难和缓慢的请求......我怎样才能用快速的方式得到它?或者也许还有另一种消息方式或架构?