This behavior is used to implement a different system while taking advantage of mnesia.
It's used by mnesia itself to implement fragmentation using mnesia_frag and mnesia:activity.
mnesia_frag
mnesia:activity
@opaque id()
@type lock_item() :: {:table, atom()} | {:global, any(), [node()]}
@type lock_kind() :: :write | :read | :sticky_write
@callback all_keys(id(), any(), atom(), lock_kind()) :: [any()] | no_return()
@callback clear_table(id(), any(), atom(), any()) :: {:atomic, :ok} | {:aborted, any()}
@callback delete(id(), any(), atom(), any(), lock_kind()) :: :ok | no_return()
@callback delete_object(id(), any(), atom(), tuple(), lock_kind()) :: :ok | no_return()
@callback first(id(), any(), atom()) :: any()
@callback foldl(id(), any(), (tuple(), any() -> any()), any(), atom(), lock_kind()) :: any() | no_return()
@callback foldr(id(), any(), (tuple(), any() -> any()), any(), atom(), lock_kind()) :: any() | no_return()
@callback index_match_object(id(), any(), atom(), any(), atom() | integer(), lock_kind()) :: [any()] | no_return()
@callback index_read(id(), any(), atom(), any(), atom() | integer(), lock_kind()) :: [tuple()] | no_return()
@callback last(id(), any(), atom()) :: any()
@callback lock(id(), any(), lock_item(), lock_kind()) :: [node()] | :ok | no_return()
@callback match_object(id(), any(), atom(), any(), lock_kind()) :: [any()] | no_return()
@callback next(id(), any(), atom(), any()) :: any()
@callback prev(id(), any(), atom(), any()) :: any()
@callback read(id(), any(), atom(), any(), lock_kind()) :: [tuple()] | no_return()
@callback select(id(), any(), atom(), any(), lock_kind()) :: [any()]
@callback select(id(), any(), atom(), any(), integer(), lock_kind()) :: [any()]
@callback select_cont(id(), any(), any()) :: :"$end_of_table" | {[any()], any()}
@callback table_info(id(), any(), atom() | {atom(), atom()}, atom()) :: any()
@callback write(id(), any(), atom(), tuple(), lock_kind()) :: :ok | no_return()
@spec all_keys(id(), any(), atom(), lock_kind()) :: [any()]
@spec clear_table(id(), any(), atom(), any()) :: {:atomic, :ok} | {:aborted, any()}
@spec delete(id(), any(), atom(), atom(), lock_kind()) :: :ok | no_return()
@spec delete_object(id(), any(), atom(), tuple(), lock_kind()) :: :ok | no_return()
@spec first(id(), any(), atom()) :: any()
@spec foldl(id(), any(), function(), any(), atom(), lock_kind()) :: any() | no_return()
@spec foldr(id(), any(), function(), any(), atom(), lock_kind()) :: any() | no_return()
@spec index_match_object(id(), any(), atom(), any(), atom() | integer(), lock_kind()) :: [any()] | no_return()
@spec index_read(id(), any(), atom(), any(), atom() | integer(), lock_kind()) :: [tuple()] | no_return()
@spec last(id(), any(), atom()) :: any()
@spec lock(id(), any(), lock_item(), lock_kind()) :: [node()] | :ok | no_return()
@spec match_object(id(), any(), atom(), any(), lock_kind()) :: [tuple()] | no_return()
@spec next(id(), any(), atom(), any()) :: any()
@spec prev(id(), any(), atom(), any()) :: any()
@spec read(id(), any(), atom(), any(), lock_kind()) :: [tuple()] | no_return()
@spec select(id(), any(), atom(), any(), lock_kind()) :: [any()]
@spec select(id(), any(), atom(), any(), integer(), lock_kind()) :: [any()]
@spec select_cont(id(), any(), any()) :: :"$end_of_table" | {[any()], any()}
@spec table_info(id(), any(), atom() | {atom(), atom()}, atom()) :: any()
@spec write(id(), any(), atom(), tuple(), lock_kind()) :: :ok | no_return()