首页 / MYSQL / 侦听MySQL中的数据库更改
侦听MySQL中的数据库更改
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了侦听MySQL中的数据库更改,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1998字,纯文字阅读大概需要3分钟。
内容图文
我有一个网页,并且使用CRUD操作在MySQL表中进行了一些数据操作.桌面客户端应用程序有许多正在运行的实例,它们与同一个数据库进行通信,每次我通过网页对该数据库进行更改时,都需要将这些更改通知所有这些客户端.我真的不知道如何处理此问题的最佳方法.桌面客户端应用程序用C#编写.我也知道,没有办法至少使用ADO.NET提供程序异步通知桌面客户端有关数据库中发生的更改,至少在MySQL中.
当客户端应用程序定期创建数据库连接并检查MySQL表的更改时,有一个选项.但是,如果我们有1000个正在运行的实例,并且每个实例都创建连接并每2秒读取同一张表,该怎么办?这不是很消耗数据库服务器资源吗?
同样,我们可以在插入/更新/删除上编写触发器,该触发器将填充另一个有关所做更改的表,然后我们将轮询该新的“ changes_made”表.
还有一个创建套接字服务器的选项,该服务器轮询“ changes_made”表,如果进行了更改,则将更改数据发送到所有在此上下文中为套接字侦听器的桌面客户端.因此,我们将摆脱客户端的轮询,并显着减少数据库连接的总量和数据库的负载.
在这里,我想知道解决这些任务的最正确和可扩展的方法是什么.
解决方法:
嗯,虽然没有内置的解决方案,但也不是完全不可能将数据库所做的更改通知客户端.
在mysql中,您可以在C/C++中创建编译的用户定义函数(UDF).这些几乎可以按照您想要的任何方式扩展mysql的功能-例如通过网络发送消息.您可以创建自己的UDF或使用mysqludf.org上可用的库通过网络发送消息.您可以首先使用mysqludf.org上的STOMP库发送STOMP消息.由于STOMP与语言无关,因此您也可以在.NET环境中使用它,请参阅this SO topic(如果在Internet上搜索.net STOMP服务器,则会发现更多示例).
客户端应用程序必须实现STOMP服务器,该服务器能够从服务器接收STOMP消息.
在数据库中,您需要创建一个订阅表,该表包含哪个客户端为哪些通知订阅以及如何与之连接的信息(最少IP地址/主机名和端口号).
您还需要在所有要发送通知的表和事件上创建触发器.
我还将创建一个存储过程或函数,以接收修改后的数据或某些表已从触发器中更改的事实,检查订阅表,创建STOMP消息,然后调用将STOMP消息发送给所有订阅的客户.触发器将调用此存储过程或函数,而不是在每个触发器中实现所有这些功能.
需要修改客户端以处理通知并采取进一步的措施或提示用户.
免责声明:我不认为这是针对您的特定情况的最适当和可扩展的解决方案.但是,通过这种方式,您可以自己实现一个通知系统,而无需轮询数据库.
内容总结
以上是互联网集市为您收集整理的侦听MySQL中的数据库更改全部内容,希望文章能够帮你解决侦听MySQL中的数据库更改所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。