Сохранить данные в таблице мнезий локально
Я использую mnesia для хранения данных из приложения chicago_boss. Я создаю таблицу и храню данные следующим образом:
mnesia:create_table(connection, [{record_name, connection},
{storage_properties, [{ets, [compressed]}, {dets, [{auto_save, 5000}]} ]}]).
mnesia:dirty_write(#connection{pid=WebSocketId, name=EventType}).
Моя информация о Мнезии:
(sample_app@blanes-mbp-2)6> mnesia:info().
---> Processes holding locks <---
---> Processes waiting for locks <---
---> Participant transactions <---
---> Coordinator transactions <---
---> Uncertain transactions <---
---> Active tables <---
connection : with 0 records occupying 305 words of mem
schema : with 2 records occupying 554 words of mem
===> System info in version "4.11", debug level = none <===
opt_disc. Directory "/Users/blane/erlang/sample_app/Mnesia.sample_app@blanes-mbp-2" is NOT used.
use fallback at restart = false
running db nodes = ['sample_app@blanes-mbp-2']
stopped db nodes = []
master node tables = []
remote = []
ram_copies = [connection,schema]
disc_copies = []
disc_only_copies = []
[{'sample_app@blanes-mbp-2',ram_copies}] = [schema,connection]
4 transactions committed, 0 aborted, 0 restarted, 0 logged to disc
0 held locks, 0 in queue; 0 local transactions, 0 remote
0 transactions waits for other nodes: []
ok
Моя проблема - каждый раз, когда я останавливаю свой босс-сервер, данные в моей таблице исчезают. Как мне сохранить эти данные локально, чтобы они оставались там, когда я запускаю / останавливаю свой сервер?
1 ответ
{disc_copies, Nodelist}, где Nodelist - это список узлов, где эта таблица должна иметь копии диска. Если реплика таблицы имеет тип disc_copies, все операции записи в этой конкретной реплике таблицы записываются на диск, а также в копию таблицы RAM.
Можно иметь реплицированную таблицу типа disc_copies на одном узле и другого типа на другом узле. Значением по умолчанию является [].
Вы можете добавить это {disc_copies, [node()]}
когда создать таблицу.