Database design 报警系统设计

Database design 报警系统设计,database-design,alarm,Database Design,Alarm,我被要求设计一个报警系统,允许一些用户创建报警,而其他用户则可以监听这些报警并执行他们需要执行的任何操作。 启动警报的用户希望有一个快捷方式(他们的系统运行的是Windows XP),因此监听可能警报的人会自动获得相应的信号 也就是说,如果用户按下组合键,则自动向安全人员发出请求 我曾想过通过创建一个数据库来开发它,该数据库将包含系统中所有用户的位置信息,并且还将具有报警历史记录。我在考虑为用户启动的每个警报创建一个新行,然后让安全人员查找生成的新警报。基本上是这样的: 在报警表中创建新行的快

我被要求设计一个报警系统,允许一些用户创建报警,而其他用户则可以监听这些报警并执行他们需要执行的任何操作。 启动警报的用户希望有一个快捷方式(他们的系统运行的是Windows XP),因此监听可能警报的人会自动获得相应的信号

也就是说,如果用户按下组合键,则自动向安全人员发出请求

我曾想过通过创建一个数据库来开发它,该数据库将包含系统中所有用户的位置信息,并且还将具有报警历史记录。我在考虑为用户启动的每个警报创建一个新行,然后让安全人员查找生成的新警报。基本上是这样的:

  • 在报警表中创建新行的快捷方式启动脚本
  • Cron或安全人员定期检查新警报的预定任务
我对设计这种系统还很陌生,我在想这是不是一个好办法。另外,如果有人知道如何将脚本启动分配给Windows下的系统快捷方式,我将不胜感激


感谢您的帮助,如果需要更多信息,请告诉我。

我强烈建议您使用消息队列。您可以使用一个简单的控制台应用程序(桌面上有一个快捷方式)向队列提交新邮件

“侦听”系统将立即收到通知,您将在此时执行相应的操作

Microsoft的内置队列非常有效:

或者您可以使用RabbitMQ,它更健壮,但更难开箱即用

这将省去不断点击数据库进行更新的所有麻烦

编辑:


当然,您还需要将所有通话记录在数据库中,以便保存记录。

谢谢您的回答。我是开发Windows应用程序的新手,所以我更喜欢其他解决方案。尽管如此,这看起来很干净,我要去看看。听力系统如何工作?它应该是一个一直在运行的进程,当出现警报时,会弹出一个窗口,但通过消息传递可以做到这一点吗?谢谢。你可以使用一个每分钟都可以查询的数据库。消息队列的好处是它可以非常快地通知收件人。大多数其他方法都有延迟。您可以使用直接套接字,但这要困难得多。您可以用很少的代码通过队列发送消息,因此,即使它看起来令人望而生畏,您也会惊讶地发现,您能够如此快速地接收到消息。在谷歌上搜索“c#message queue tutorial”,你会发现大量信息可供使用。侦听计算机会“订阅”队列,消息到达后会立即通知它们,以便它们可以处理。根据您的设置方式,您可以只让一台计算机拾取它,所有计算机都拾取它,等等。RabbitMQ通过这种方式比Microsoft队列更具可自定义性,但可以使用任何一种方式完成。这是非常好的信息。我来自web开发领域(PHP、MYSQL),我相信这就是为什么这个“Microsoft消息队列”让我害怕的原因。我要尝试学习,如果有更多的疑问,我会回来的。感谢:)在这种情况下,RabbitMQ可能更适合您的需要。它与其他语言更友好。它是免费的,所以如果微软似乎没有按照您想要的方式进行集成,请查看它。@Raj More:我做错了什么吗?有人投票关闭了,我想知道为什么。@Raj More:哦,好的。我对这一点很陌生,我知道这种“理论性”的问题在某种程度上可能看起来很模糊,但我相信这是一个设计问题……到目前为止还没有编写任何代码。谢谢