ACID требует не только возможности откат изменений при сбое одной из операций, но и изоляция от другой транзакции.Как только вы сохраняете данные в файл, изменения становятся видимыми для других.Любая фиксация базы данных до или после является нарушением правил ACID.
Однако вы все равно можете найти решение для реальной проблемы, которую вам нужно решить.Например, путем синхронизации доступа к файлам с данными базы данных (например, имена файлов и данные о готовности готовы).
Также рассмотрите возможность хранения данных в большом двоичном файле вместо файла.
Еще один более сложныйОдним из способов является блокировка доступа к данным файловой системой, поэтому при записи транзакции все остальные блокируются от чтения и записи файла и соответствующих данных базы данных одновременно.Например, используйте пустой файл блокировки (original-filename.lock), который блокирует чтение / запись данных в этом файле другими пользователями.Это работает только в том случае, если у вас есть отношение «1: 1» к данным базы данных, и если вы не выполняете сложных запросов (вы не должны читать данные, пока они заблокированы).И, конечно, это работает, только если вы контролируете все, что обращается к файлу или базе данных.Это может быть не очень эффективно.Вам все еще нужно реализовать механизм отката для изменений файла (обычно это копирование-переименование).
Существует несколько других решений или обходных путей, в зависимости от вашей конкретной системы.Этот вопрос, вероятно, "слишком широкий".