Я знаю, что не рекомендуется использовать Sqlite на сетевом диске по двум причинам: производительность и повреждение данных из-за плохой реализации сетевых файловых систем.
Тем не менее, я хотел бы изучитьвозможность использования Sqlite для поддержки многопользовательского приложения с центральной базой данных.Мы уже поддерживаем Sqlite на однопользовательской машине и нескольких серверах баз данных (Oracle, PostgreSQL) для многопользовательских установок.Использование Sqlite для многопользовательской установки было бы удобно для облегчения установки в существующих ИТ-инфраструктурах с общими дисками Windows (SMB).
Мы не слишком заботимся о производительности, поэтому мы готовы заплатить ценунеобходимо, чтобы избежать коррупции.Цитирование http://www.sqlite.org/atomiccommit.html, раздел 9.1:
Но если вам необходимо использовать сетевую файловую систему для хранения файлов базы данных SQLite, рассмотрите возможность использования вторичного механизма блокировки для предотвращения одновременной записи в одну и ту же базу данных, даже еслиНеисправности механизма блокировки собственной файловой системы.
Я ищу советы и рекомендации по реализации такого механизма или, в более общем плане, советы, чтобы избежать проблем с Sqlite на общем диске Windows.
Например, я рассматриваю следующий тупиковый подход к блокировке: перед любым (не только для чтения) запросом SQLite попытайтесь создать пустой файл в той же общей папке и оставить его открытым до концазапрос;обычно любой другой процесс Windows, пытающийся создать файл с тем же именем, пока он еще открыт, блокируется или завершается неудачей.Будет ли это работать?Что-нибудь лучше?