我想做私人聊天服務。現在我有一個關係數據庫(PostgreSQL)用於存儲我的消息和線程(線程 - 用戶之間的私人房間)。私人聊天的體系結構
我有以下表:
1)消息:ID,文本,日期時間,SENDER_ID,的thread_id,is_read
2)螺紋:ID
3)Thread_Participants:的thread_id,USER_ID
消息表是用螺紋通過MANY_TO_MANY關係通過Thread_Participants表相連。
在我的架構中,用戶通過WebSocets和Redis數據庫的Pub/Sub交換消息。
但在我看來,我需要在關係數據庫中存儲消息,這對安全性更好。也許我錯了。
但我有一個獲取用戶線程歷史的問題。我想請求(關係DB)以下字段:
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
但這樣的要求意味着相當困難和緩慢的請求......我怎麼能與快捷的方式得到它?或者,也許有另一種方式或消息架構?
的可能的複製[優化GroupWise的最大查詢(http://stackoverflow.com/questions/24244026/optimize-groupwise-maximum-query) –
@Jakub卡尼亞:不,我對全處建築的問題,我可以改變它。羣組最大查詢的優化是我的問題的一部分,或者只是解決方法之一。 – Anton