有没有办法让MySQL服务器';推动';数据库更新到客户端程序?
一个典型的场景:假设一个用户正在向MySQL提供数据,而一个客户端远程连接到MySQL。每当用户更新数据库中的字段时,我希望立即通知客户机 将此视为Blackberry的“推送邮件”功能 我不想要的是,客户端必须偶尔“ping”MySQL服务器,以查看是否有任何更新。我相信这将是昂贵的,计算明智有没有办法让MySQL服务器';推动';数据库更新到客户端程序?,mysql,database,Mysql,Database,一个典型的场景:假设一个用户正在向MySQL提供数据,而一个客户端远程连接到MySQL。每当用户更新数据库中的字段时,我希望立即通知客户机 将此视为Blackberry的“推送邮件”功能 我不想要的是,客户端必须偶尔“ping”MySQL服务器,以查看是否有任何更新。我相信这将是昂贵的,计算明智 我怎样才能实现这样的想法?是否有任何基于MySQL的回调机制?如果没有,还有其他数据库(最好是开源的)支持这种机制吗 我的建议是要么使用随机轮询数据库的计时器服务来查看任何更改,要么使用消息队列,每次队
我怎样才能实现这样的想法?是否有任何基于MySQL的回调机制?如果没有,还有其他数据库(最好是开源的)支持这种机制吗 我的建议是要么使用随机轮询数据库的计时器服务来查看任何更改,要么使用消息队列,每次队列大小大于0时,向任何应该了解它的人发送消息。对于对缓存失效技术感兴趣的主动连接客户端:
- SQL Server支持
- Oracle支持
- MySQL支持复制流,但它们与更新通知不同:它们不能为客户端动态设置和拆除,并且不能很好地监视特定应用程序感兴趣的单个行
对于对数据同步感兴趣的断开连接的客户端,所有供应商都支持某种类型的复制。没有回调机制,但是如果您提供了其他人用来进行更新的服务,那么您可以精心设计该服务以推送所需的通知。在PostgreSQL(开源)中有触发器。触发器可以用任何语言编写,并且可以向应用程序发送通知。不幸的是,我不知道现有的用于此类通知的API,但使用PostgreSQL,您可以构建自己的API。 我今天早些时候刚刚回答了有关PostgreSQL的问题。简而言之,它是: 用Java编写一个触发的存储过程,并让该过程通过套接字连接到达某个侦听套接字的外部程序 在被PostgreSQL和Java存储过程的事情弄得焦头烂额之后,我不敢去猜测MySQL是否“做”了Java存储过程。如果没有,那么您可以在存储的进程中运行其他程序来完成类似的任务。到目前为止,这是一个自己动手帮助回答。在和Interbase中,我们有一个客户端应用程序可以监听的事件。但对于MySQL来说,这样的事件并不存在