ElGraph.Checkpointer.Mnesia (ElGraph v0.3.0)

Copy Markdown View Source

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

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

config(server)

@spec config(GenServer.server()) :: map()

이 인스턴스의 config(테이블명 + 보존정책)를 반환한다.

setup_disc!(nodes \\ [node()])

@spec setup_disc!([node()]) :: :ok

disc_copies용 디스크 스키마를 (재)설정한다 — 호스트 앱이 부팅 전 1회 호출(node-global). Mnesia 디렉터리는 config :mnesia, :dir 또는 기본값을 따른다.

start_link(opts \\ [])