sqlite через сетевой ресурс для аварийного переключения

В продолжение этого вопроса: /questions/45230110/sqlite-cherez-setevoj-resurs

Если я поставлю SQlite DB на сетевой ресурс, но не получу к ней доступ одновременно с разных машин. У меня есть только база данных SQLite, хранящаяся на общем ресурсе, поэтому кластер отказоустойчивых компьютеров может занять место, где остановился один компьютер.

Есть ли присущие этому подходу проблемы?

1 ответ

Интересуюсь знанием вашего опыта (через 5 лет). За полезную подсказку Эрика Гранджа:

  • "SQLite использует консультативные блокировки POSIX для реализации блокировки в Unix"... "Консультативная блокировка POSIX, как известно, глючит или даже не реализуется во многих реализациях NFS"... "Ваша лучшая защита - не использовать SQLite для файлов в сетевой файловой системе". ".

  • Сказав это, если ваш сервер NFS надежен (например, NetApp), а ваши клиенты надежны (то есть, вероятно, не Linux; см., Например, http://nfsworld.blogspot.co.at/2006/10/ обзор-оф-почему-NFS-отстой-бумажно-from.html).

  • Консультативная блокировка POSIX через NFS также зависит от имплементации: из статьи Википедии о блокировке файлов: "В Linux до 2.6.12 вызовы flock для файлов NFS будут действовать только локально. В ядре 2.6.12 и выше реализованы вызовы flock для файлов NFS с использованием Блокировки диапазона байтов POSIX. Эти блокировки будут видны другим клиентам NFS, которые реализуют блокировки POSIX в стиле fcntl, но невидимы для тех, кто этого не делает. " Если есть сомнения, вы можете использовать nfstrace определить, что ваша ОС пытается сделать.

  • Что произойдет, если узел A начал транзакцию, заблокировал файл таблицы, а затем упал? Увидит ли узел B консультативную блокировку и откажется от записи в файл?

Другие вопросы по тегам