我有一个主管,启动许多gen_server.每个gen_server都有很多数据加载需要花费很多时间.我想知道错误发生的时间,存储在gen_server状态的数据及其进程dict是否会保留下次启动,所以我不需要再次启动它们?
我正在尝试官方的mongodb erlang驱动程序.我阅读了文档,还有一些我无法理解的东西.希望有人能告诉我使用它的正确方法是什么:
每次我做出一个动作,我都会写下如下内容:
{ok, Conn} = mongo:connect ({localhost, 27017}).
mongo:do (safe, master, Conn, test, fun() ->
mongo:save (foo, {'_id', 1, bbb,22, y,2}),
mongo:save (foo, {'_id', 4, bbb,22, y,2}) end).
mongo:disconnect().
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?每次我完成数据库操作,Conn似乎都死了.或者我应该保留Conn而不是断开它以便下次重复使用它?没有全局变量可以保留,Conn所以我能想出的唯一方法是使用类似的东西gen_server并保持Conn其状态以便重用.这是正确的方法吗?
我也看到有一种connect_factory方法.但我无法弄清楚处理它的正确方法.是connect_factory一种比连接处理大量数据库操作更好的方法吗?以及如何Conn使用connect_factory?
这是一个与mongodb无关的问题.我想在访问时给每个用户一个唯一的号码.所以我在db中保存了一个计数器,当用户访问时,计数器加1并作为唯一编号返回给用户.但我总是担心两个用户同时阅读db会得到相同的数字.如何使用mongodb将一个独特的计数器增加1?
非常感谢!