2016-08-24 73 views
0

我正在設計階段(還沒有寫代碼!)一個使用signalR的可擴展聊天應用程序。c#mongodb store last N chat messages

我想限制一個聊天室文檔(用mongodb)來存儲最近的100條消息。

爲了做到這一點,我想到了以某種方式存儲圓形陣列。 我想過維護一個線程安全索引,假設索引,所以0 < =索引< = 100,所以,更新數據庫中給定索引的數組。

現在,我有2個dilemas:

月1日,無論是在一些專門的文本文件或MongoDB中保持這種聊天。

第二,假設我想擴大規模,在多個從屬服務器中保持這個索引是最新的將不會有效。

當我在這裏涉及到性能和效率時,我想花費用戶加入聊天時的大部分資源和時間,而不是當他已經使用它時。

任何想法或建議嗎?

(我不認爲它的辯論一個懸而未決的問題,因爲我問2個具體的問題以及如何解決。)

TIA。

回答

1

對我來說聽起來像你需要在一臺特定的服務器上維護一個數據庫,用戶登錄時使用SELECT TOP 100,然後每天(或每週)對每個用戶執行DELETE ROWNUM> 100。

就資源而言,如果您想擁有此功能,您需要專用這些資源。數據庫是假設用戶將從不同設備登錄的唯一方法。本地TXT文件將是設備特定的。