0
我正在寫消息聊天系統,類似於FB消息。我沒有找到方法,如何有效地存儲會話列表(每行不同的用戶與上次發送的最後一條消息)。如果我列出從該表中的對話:Cassandra cql - 按時間排序唯一ID
CREATE TABLE "conversation_list" (
"user_id" int,
"partner_user_id" int,
"last_message_time" time,
"last_message_text" text,
PRIMARY KEY ("user_id", "partner_user_id")
)
我可以從任何USER_ID此表對話選擇。當發送新消息時,我們可以簡單地更新該行:
UPDATE conversation_list SET last_message_time = '...', last_message_text='...' WHERE user_id = '...' AND partner_user_id = '...'
但它是按聚類鍵排序當然。我的問題:如何創建會話列表,按last_message_time排序,但partner_user_id對於給定的user_id將是唯一的?
如果last_message_time被聚集鍵,我們刪除該行並插入新(保持partner_user_id唯一的),我會在表中多那麼多的thumbstones。
謝謝。
謝謝你帕特里克!也許我沒有描述得很好。我知道,如何管理聊天(1對話)。但是我需要列出最後一條消息的所有聯繫人。然後用戶可以選擇一個對話(聊天)並將其打開。我需要獲得一份**最後一條消息**的時間排序的用戶(聯繫人)列表。 –
從一個用戶或任何聊天的角度來看是這樣嗎? –
如果您點擊頂部的郵件圖標,我想列出像facebook一樣的最後對話。您可以查看按時間排序的最後X個對話(頂部爲舊),每個對話爲1行(即使有更多的消息)。點擊列表中的一個對話後,您將打開與當前用戶的一對一聊天(很容易)。 –