c#mongodb存储最后N条聊天消息

时间:2016-08-24 12:29:40

标签: c# mongodb signalr chat

我正处于设计阶段(尚未编写代码!)一个使用signalR的可扩展聊天应用程序。

我想限制一个聊天室文档(在mongodb中)来存储最后100条消息。

为了做到这一点,我想到以某种方式存储圆形阵列。 我考虑维护线程安全索引,假设索引,所以0< = Index< 100,所以,在给定索引中更新数据库中的数组。

现在,我有两个困境:

1,将此聊天保存在某个专用文本文件或mongodb中。

第二,假设我想要向外扩展,在几个从属服务器上保持这个索引是最新的并不会有效。

当我在这里谈到性能和效率时,我希望在用户加入聊天时花费大部分资源和时间,而不是在他已经使用它时。

有任何想法或建议吗?

(我不认为这是一个悬而未决的辩论问题,因为我提出了2个具体问题以及如何解决这些问题。)

TIA。

1 个答案:

答案 0 :(得分:1)

听起来我需要为此目的在一个特定服务器上维护数据库,在用户登录时使用SELECT TOP 100,然后为每个用户进行每日(或每周)维护到DELETE ROWNUM> 100。 / p>

就资源而言,如果您想拥有此功能,则需要专用资源。假设用户将从不同的设备登录,数据库是唯一的方法。本地TXT文件将是特定于设备的。