Mnesia 기반 내구 체크포인터 — BEAM 내장 분산 DB. 외부 인프라 0.
DETS가 단일 파일·단일 노드인 것과 달리, Mnesia는 disc_copies로 디스크 영속 + 멀티노드
복제(분산 재개)까지 BEAM 런타임만으로 제공한다. ElGraph의 분산 스토리(:pg, libcluster)와
자연스럽게 맞물린다.
# (호스트 앱 부팅 전 1회 — disc 스키마 준비, node-global)
ElGraph.Checkpointer.Mnesia.setup_disc!()
children = [{ElGraph.Checkpointer.Mnesia, copies: :disc_copies}]
cp = {ElGraph.Checkpointer.Mnesia, ElGraph.Checkpointer.Mnesia.config(pid)}테이블은 ordered_set(키 = {:cp|:wr, thread_id, step}) — step 정렬/:latest가 키 순서로 나온다.
쓰기는 dirty 연산(단일 레코드라 원자적이고 빠름) — disc_copies면 디스크에 영속된다.
keep: {:last, n}으로 오래된 체크포인트를 정리한다.
Summary
Functions
Returns a specification to start this module under a supervisor.
이 인스턴스의 config(테이블명 + 보존정책)를 반환한다.
disc_copies용 디스크 스키마를 (재)설정한다 — 호스트 앱이 부팅 전 1회 호출(node-global).
Mnesia 디렉터리는 config :mnesia, :dir 또는 기본값을 따른다.
Functions
Returns a specification to start this module under a supervisor.
See Supervisor.
@spec config(GenServer.server()) :: map()
이 인스턴스의 config(테이블명 + 보존정책)를 반환한다.
@spec setup_disc!([node()]) :: :ok
disc_copies용 디스크 스키마를 (재)설정한다 — 호스트 앱이 부팅 전 1회 호출(node-global).
Mnesia 디렉터리는 config :mnesia, :dir 또는 기본값을 따른다.