我们的客户想知道谁在线并且目前正在使用我们为他们编写的自定义应用程序.我和他们讨论过这个问题并不一定非常准确,更多的猜测会起作用.
所以我的想法是15分钟的时间间隔来确定用户活动.我这样做的一些想法如下:
每次他们做一些击中数据库的事情时,用他们最后一次活动的日期和时间标记他们的用户记录,或者请求一个网页......这虽然可能是数据库密集型的.
从我们的软件发出"谁是在线请求",寻找响应,这可以按计划的时间间隔完成,然后在用户记录上标记我收到的每个响应的当前日期和时间.
你的想法是什么?你会如何处理这种情况?
澄清
如果可能的话,我想在Windows或Web上使用相同的架构.我有一个业务逻辑层,多个用户界面可以与之交互,可以是Windows或Web.
通过Windows,我的意思是客户端 - 服务器.
澄清
我使用的是n层架构,因此我的业务对象处理与表示层的所有交互.该表示层可以提供客户端 - 服务器Windows应用程序,Web应用程序,Web服务等.
它不是一个高流量的应用程序,因为它是为我们的客户开发的,最多可能有100个用户.
我们的解决方案是除了维护“会话”表(跟随谁在这里)之外,还要维护“事务”表(跟随所做的事情)。UPDATE,INSERT和DELETE指令均通过“ Transaction”对象进行管理,并且每条SQL指令在数据库上成功执行后,每条SQL指令均存储在“ Transaction”表中(取决于更新的表:我们有可能专门针对遵循一些表格,而忽略其他表格)。该“事务”表具有其他字段,例如transactiontType(I代表INSERT,D代表DELETE,U代表UPDATE),transactionDateTime等,以及外键“ sessionId”,最终告诉我们谁发送了指令。甚至有可能通过一些代码来确定谁在何时何地做(Gus在星期一创建了记录,
此解决方案的优点是:
您可以说出“什么人,什么时候什么”,并向用户显示!(您将需要一些代码来分析SQL语句)
如果您的数据被复制,并且复制失败,则可以通过此表重建数据库
缺点是
每月10万条数据更新意味着Tbl_Transaction中有10万条记录
最后,此表往往占数据库容量的99%
我们的选择:所有早于90天的记录都会在每天早晨自动删除