【问题标题】:How can one update an ETS table via mysql triggers如何通过 mysql 触发器更新 ETS 表
【发布时间】:2013-05-21 12:00:33
【问题描述】:

我需要根据对 mysql 表所做的更改来更新 ETS 表:可以从 erlang 应用程序中访问 mysql 表。

我在想也许我可以有一个进程等待更新 ETS 表,而 mysql 表是从某种网络应用程序更新的。

感谢任何和所有输入,如果我可以提供更多信息,请告诉我。

谢谢。

【问题讨论】:

  • true,你想让两者保持同步,你应该在 erlang 端有一个守护进程等待接收这些事件。它最好是gen_server,它是 OTP 应用程序的一部分,以便在出现故障时始终重新启动。
  • 应用程序中不同步(以毫秒为单位)数据集的成本是多少?如果答案不多或根本没有,那么在某个函数“yourapp_insert()”中的两个操作上的简单接口应该可以处理两个插入而没有任何外来的东西。另一方面,如果系统必须是完全原子的,那么您将需要锁定。锁定机制将真正取决于您系统的确切性质,并且可能会有些棘手。您可能还需要某种“事务”包装器(例外!)以避免损坏,“ets insert 成功但 mysql 失败”。干杯
  • 另外,不幸的是,您将无法从 mysql 触发器调用 erlang 进程..(跟踪二进制日志可以工作,但仍然不是原子的)

标签: mysql erlang ets triggers


【解决方案1】:

MySQL 没有通知基础设施,所以你不能自动完成,你必须通过轮询来完成。您可以创建一个包含上次更新时间的行的表,然后创建触发器,当相关行发生更改时更新此表。然后不断检查这个表,看看它是否改变了。

如果您可以切换到 PostgreSQL,它有 LISTEN/NOTIFY commands。使用 epgsql 驱动程序,您可以添加将接收这些通知的进程的 pid。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-30
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    相关资源
    最近更新 更多