我正在开发一个.NET数据记录应用程序,它需要接受来自大量客户端的数据并将其存储在数据库中。
客户端向服务器发送启动事件,然后发送心跳事件,从而导致更新数据的上次活动时间。我无法使用结束事件,因为客户端应用程序可能会关闭而无法发送此类事件。
一个简单的方法是在start事件上执行db插入,然后在每个heartbeat上执行db更新,但这将是非常数据库密集型的,每隔几秒钟就会有大量客户端的心跳。随着数据库表变大,更新也会变得昂贵。
因此,我正在考虑在内存中缓存数据,然后在客户端停止发送心跳时将其刷新到数据库。
所以我需要一个合适的数据结构和策略:
我正在考虑内存中哈希表的内容,它会被定时器触发的事件周期性地迭代,以检查超时会话。
这是否有意义或是否有更好的解决此类问题的方法?
答案 0 :(得分:0)
根据日志的性质,支持的标准方法(因为大多数日志记录应用程序需要支持保持日志非常重要或法律要求的方案)是日志尽可能快地写入硬盘(独立系统的奖励积分,仅从记录的应用程序环境的角度编写。
以较低优先级处理,汇总或分析日志。
当然,您的使用案例可能有所不同。