sqlite через сетевой ресурс для аварийного переключения - PullRequest
1 голос
/ 11 апреля 2010

В продолжение этого вопроса: sqlite-over-a-network-share

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

Существуют ли присущие этому подходу проблемы?

1 Ответ

2 голосов
/ 02 марта 2017

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...