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