我正处于设计阶段(尚未编写代码!)一个使用signalR的可扩展聊天应用程序。
我想限制一个聊天室文档(在mongodb中)来存储最后100条消息。
为了做到这一点,我想到以某种方式存储圆形阵列。 我考虑维护线程安全索引,假设索引,所以0< = Index< 100,所以,在给定索引中更新数据库中的数组。
现在,我有两个困境:
1,将此聊天保存在某个专用文本文件或mongodb中。
第二,假设我想要向外扩展,在几个从属服务器上保持这个索引是最新的并不会有效。
当我在这里谈到性能和效率时,我希望在用户加入聊天时花费大部分资源和时间,而不是在他已经使用它时。
有任何想法或建议吗?
(我不认为这是一个悬而未决的辩论问题,因为我提出了2个具体问题以及如何解决这些问题。)
TIA。
答案 0 :(得分:1)
听起来我需要为此目的在一个特定服务器上维护数据库,在用户登录时使用SELECT TOP 100,然后为每个用户进行每日(或每周)维护到DELETE ROWNUM> 100。 / p>
就资源而言,如果您想拥有此功能,则需要专用资源。假设用户将从不同的设备登录,数据库是唯一的方法。本地TXT文件将是特定于设备的。