【发布时间】:2016-03-31 11:05:16
【问题描述】:
我想做私人聊天服务。现在我有一个关系数据库(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 交换消息。
但在我看来,我需要将消息存储在关系数据库中,这样更安全。也许我错了。
但是我在获取用户线程的历史记录时遇到了问题。我想请求(关系数据库)以下字段:
thread_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
但是这样的请求意味着相当困难和缓慢的请求......我怎样才能用快速的方式得到它?或者也许还有另一种消息的方式或架构?
【问题讨论】:
-
@Jakub Kania:不,我关于整个建筑的问题,我可以改变它。分组最大查询的优化是我的问题的一部分,或者只是解决方法之一。
标签: postgresql chat groupwise-maximum