На этом шаге мы рассмотрим создание защищенной базы данных.
Если вы вводите много новой информации в базу данных, то важно удостовериться, что она не будет утеряна при возможной аварии в системе. Покажем, как это сделать, путем ведения журнала изменений в другом файле.
Внесение изменений включает обновление базы данных и заполнение ее. Если операция завершится успешно, система сама записывает изменения в журнал изменений. Это значит, что в каждый момент времени лишь один файл является недописанным на диске. Если файл с базой данных становится непригодным (например из-за аварии в системе перед его заполнением), вы можете реставрировать его, пользуя журнал изменений и дубликат исходной базы данных. Если же файл изменений становится непригодным, то придется создать новый дубликат базы данных и новый файл изменений.
Если вы записываете дату и время и файле изменений имеете со старыми величинами данных, подвергшимися изменению или удалению, то привести базу даннных к тому состоянию, в котором она была в определенный момент времени, достаточно просто.
domains
logdom=insert(relation,dbdom,ref);
replace(relation,dbdom,ref,dbdom);
erase(relation,ref,dbdom)
predicates
logdbchange(logdom)
clauses
logdbchange(Logterm):-
chain_insertz(logdba,logchain,logdom,Logterm,_),
db_flush(logdba).
На следующем шаге мы рассмотрим обновление базы данных.