我是Elixir的新手,正在从事分布式系统的开发。该系统共享几个全局表。对该表的写入非常频繁,因此它们应该非常快。现在,有时我必须处理一个完整的表并从中生成一些JSON,但我需要按将它们插入数据库的顺序来处理该表中的记录。 (我不需要不需要任何硬保证。不常见的错误是可以容忍的,例如两个交换记录甚至单个丢弃的记录。)
不幸的是,mnesia afaik没有像SQL的auto_increment
之类的东西,现在我很难自己实现此功能。
我能想到的解决方案:
答案 0 :(得分:0)
如果您想自己实现它,那么就像@Aleksei提到的,dirty_update_counter/3
是可行的方法。
但是,如果您可以使用外部库,则Memento
和Amnesia
都支持自动递增的自定义实现。这是在《回忆录》中的样子:
defmodule MyTable do
use Memento.Table,
attributes: [:id, :title, :content, :status, :author],
type: :ordered_set,
autoincrement: true
end
此外,Mnesia有一个最终一致性模型,因此,尽管它非常快,但它并不能立即保证一致性。无论您选择哪种实现自动增量的方法,都肯定会影响性能。
全面披露:我是《纪念品》的作者