Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法让MySQL服务器';推动';数据库更新到客户端程序?_Mysql_Database - Fatal编程技术网

有没有办法让MySQL服务器';推动';数据库更新到客户端程序?

有没有办法让MySQL服务器';推动';数据库更新到客户端程序?,mysql,database,Mysql,Database,一个典型的场景:假设一个用户正在向MySQL提供数据,而一个客户端远程连接到MySQL。每当用户更新数据库中的字段时,我希望立即通知客户机 将此视为Blackberry的“推送邮件”功能 我不想要的是,客户端必须偶尔“ping”MySQL服务器,以查看是否有任何更新。我相信这将是昂贵的,计算明智 我怎样才能实现这样的想法?是否有任何基于MySQL的回调机制?如果没有,还有其他数据库(最好是开源的)支持这种机制吗 我的建议是要么使用随机轮询数据库的计时器服务来查看任何更改,要么使用消息队列,每次队

一个典型的场景:假设一个用户正在向MySQL提供数据,而一个客户端远程连接到MySQL。每当用户更新数据库中的字段时,我希望立即通知客户机

将此视为Blackberry的“推送邮件”功能

我不想要的是,客户端必须偶尔“ping”MySQL服务器,以查看是否有任何更新。我相信这将是昂贵的,计算明智


我怎样才能实现这样的想法?是否有任何基于MySQL的回调机制?如果没有,还有其他数据库(最好是开源的)支持这种机制吗

我的建议是要么使用随机轮询数据库的计时器服务来查看任何更改,要么使用消息队列,每次队列大小大于0时,向任何应该了解它的人发送消息。

对于对缓存失效技术感兴趣的主动连接客户端:

  • SQL Server支持
  • Oracle支持
  • MySQL支持复制流,但它们与更新通知不同:它们不能为客户端动态设置和拆除,并且不能很好地监视特定应用程序感兴趣的单个行

对于对数据同步感兴趣的断开连接的客户端,所有供应商都支持某种类型的复制。

没有回调机制,但是如果您提供了其他人用来进行更新的服务,那么您可以精心设计该服务以推送所需的通知。

在PostgreSQL(开源)中有触发器。触发器可以用任何语言编写,并且可以向应用程序发送通知。不幸的是,我不知道现有的用于此类通知的API,但使用PostgreSQL,您可以构建自己的API。

我今天早些时候刚刚回答了有关PostgreSQL的问题。简而言之,它是:

用Java编写一个触发的存储过程,并让该过程通过套接字连接到达某个侦听套接字的外部程序

在被PostgreSQL和Java存储过程的事情弄得焦头烂额之后,我不敢去猜测MySQL是否“做”了Java存储过程。如果没有,那么您可以在存储的进程中运行其他程序来完成类似的任务。到目前为止,这是一个自己动手帮助回答。

在和Interbase中,我们有一个客户端应用程序可以监听的事件。但对于MySQL来说,这样的事件并不存在