Как сделать sqlite надежным на общем диске Windows

Я знаю, что не рекомендуется использовать Sqlite на сетевом диске по двум причинам: производительность и повреждение данных из-за плохой реализации сетевых файловых систем.

Тем не менее, я хотел бы изучить возможность использования Sqlite для поддержки многопользовательского приложения с центральной базой данных. Мы уже поддерживаем Sqlite на однопользовательской машине и нескольких серверах баз данных (Oracle, PostgreSQL) для многопользовательских установок. Использование Sqlite для многопользовательской установки было бы удобно для облегчения установки в существующих ИТ-инфраструктурах с общими дисками Windows (SMB).

Мы не слишком заботимся о производительности, поэтому готовы заплатить цену, необходимую для предотвращения коррупции. квотированиеhttp://www.sqlite.org/atomiccommit.htmlраздел 9.1:

Но если вам необходимо использовать сетевой файл, систему для хранения файлов базы данных SQLite, рассмотрите возможность использования вторичного механизма блокировки для предотвращения одновременной записи в одну и ту же базу данных, даже если неисправен собственный механизм блокировки файловой системы.

Я просматриваю советы и рекомендации по реализации такого механизма или, в более общем смысле, советы, чтобы избежать проблем с Sqlite на общем диске Windows.

Например, я рассматриваю следующий тупиковый подход к блокировке: перед любым (не только для чтения) запросом SQLite попытайтесь создать пустой файл в той же общей папке и оставить его открытым до конца запроса; обычно любой другой процесс Windows, пытающийся создать файл с тем же именем, пока он еще открыт, блокируется или завершается неудачей. Будет ли это работать? Что-нибудь лучше?

Ответы на вопрос(1)

Ваш ответ на вопрос