我正在用erlang写一个bittorrent跟踪器。鉴于服务的性质,我不需要绝对的一致性(即,客户端可以对稍微过时的对等列表或洪流状态非常满意)。
到目前为止,我的策略是在启用 disc_copies 的 RAM 中创建 mnesia 表,以便在日志大小超过一定大小时让 mnesia 自动将内存转储到磁盘。
如果服务器崩溃,一些信息将会丢失。没有大碍。
另一种方法是实例化两个表(仅一个内存和一个磁盘),并每分钟左右将进程从内存复制到磁盘。这更天真,但允许仅转储内存中的一部分内容,从而减少整体磁盘开销并可能完全避免使用日志(我实际上不确定最后一条语句)。
我相信还有很多其他方法可以做到这一点。你的是啥呢?
-teo