【发布时间】:2015-07-10 05:13:52
【问题描述】:
我需要将 erlang pid 存储在 sql 数据库 (postgresql) 中。
我可以使用 varchar(N) 但 pid 在结构上似乎是三个整数的序列,所以我认为可能会有更好的东西。 erlang应用很可能是分布式的,所以pid的node部分不会一直为零。
是否值得创建一个复合类型,如下所示:
CREATE TYPE pid AS (
a integer,
b integer,
c integer
);
这是否会在尝试跨节点识别 pid 时产生问题(例如,如果节点写入和节点读取 db 不一样)?还是其他问题?
这是不是太大惊小怪了,我只是使用 varchar(N)?什么情况下有最大字符串长度?
感谢和祝福
伊万
ps 我已经阅读了这两个问题:
【问题讨论】:
-
我不明白您为什么要将 Pid 存储在数据库中。您能解释一下为什么需要将内部进程 ID 存储到后备存储中吗?
-
在持久存储中存储 pid 很愚蠢,因为 pid 在 VM 终止时会失效。
-
您是否尝试过使用 ets 或 mnesia 代替?
-
谢谢大家。我现在可以看到存储 pid 是一个坏主意。正如 Marc Worrell 在其他地方所建议的那样,我将尝试使用 gen_tracker(基于 ets):github.com/erlyvideo/gen_tracker
标签: postgresql erlang