典型场景:假设用户正在向MySQL提供数据,而客户端则远程连接到MySQL。每当用户更新数据库中的字段时,我希望立即通知客户端。
将此视为Blackberry的“推送邮件”功能。
我不想要的是,客户端必须偶尔“ping”MySQL服务器以查看是否有任何更新。我相信这将是昂贵的,计算明智的。
我如何实现这样的想法?有没有基于MySQL的CALLBACK机制?如果没有,是否有其他数据库(更好的是开源)支持这种机制?
答案 0 :(得分:3)
对于对缓存失效技术感兴趣的主动连接客户端:
对于对数据同步感兴趣的断开连接的客户端,所有供应商都支持某种复制。
答案 1 :(得分:2)
没有回调机制,但是如果您制作了其他人用来进行更新的服务,那么您可以制作该服务来推送您想要的通知。
答案 2 :(得分:1)
我的建议是使用一个定时服务,随机轮询数据库以进行任何更改或使用消息队列,每次队列大小大于0时,都会向任何应该发现消息的人发送消息。
答案 3 :(得分:1)
我今天刚刚回答a similar question关于PostgreSQL的问题。简而言之,它是:
用Java编写TRIGGERed存储过程,并通过套接字连接到套接字上监听的某个外部程序。
在关于PostgreSQL和Java存储过程的问题被烧毁之后,我不敢推测MySQL是否“做”了Java存储过程。如果没有,也许还有一些其他程序可以在存储过程中运行,它们将完成类似的操作。到目前为止,这是一个自己动手帮助的答案。
答案 4 :(得分:0)
在PostgreSQL(开源)中有触发器。触发器可以用任何语言编写,并可以向您的应用程序发送通知。不幸的是,我不知道现有的API用于此类通知,但使用PostgreSQL,您可以构建自己的API。 Documentation for PostgreSQL triggers
答案 5 :(得分:0)
在Firebird和Interbase中,我们有一个事件,而不是客户端应用程序可以监听的事件。但对于像这样的MySQL事件不存在。