Insaned
@Insaned

Как лучше всего разместить sqlite базу в сети?

Необходимо разместить базу sqlite на ресурсе который подключен по сети.
Сейчас использую sshfs (выбор случаен) и сталкиваюсь с частыми поломками базы, которые пока удавалось вылечить.
Может быть какой-то другой протокол (smb, nfs что-то ещё) привнесет в мою жизнь больше стабильности? К сетевому ресурсу подключается строго один хост.
зы: Я знаю что моя такая схема не рекомендована, но в моем случае выбора нет.
  • Вопрос задан
  • 215 просмотров
Пригласить эксперта
Ответы на вопрос 7
Fragster
@Fragster
помогло? отметь решением!
>Может быть какой-то другой протокол (smb, nfs что-то ещё) привнесет в мою жизнь больше стабильности?
Не принесет
Ответ написан
Adamos
@Adamos
Вы же понимаете, что вы на самом деле не подключаетесь к базе по сети, а выкачиваете ее файл к себе, а потом закачиваете обратно? Естественно, при проблемах с сетью файл будет портиться.
Вас может спасти либо сервер БД, либо веб-сервер (обращающийся к той базе локально).
Ответ написан
gbg
@gbg
Баянист. Тамада. Услуги.
Никак. SQLite в принципе не предназначена для работы по сети.

Сетевая SQL база должна поддерживать тот или иной механизм изоляции транзакций. Читайте про ACID
Ответ написан
jamakasi666
@jamakasi666 Куратор тега Linux
Просто IT'шник.
С учетом выше написанных комментариев. В вашем случае никак не решить именно с точки зрения вашей хотелки. Возможные варианты выхода из ситуации:
- дописывайте(или наймите разраба) ПО которое работает с БД на клиент-серверную архитектуру.
- запускайте ПО работающее с БД прямо на сервере где лежит БД, и уже к серверу цепляйтесь через vnc\rdp
- решайте костылем, условно небольшой скрипт который подключается к серверу, вытягивает на локальную машину файл БД, запускает ПО, по закрытию ПО скрипт выгружает файл БД обратно на сервер и если все успешно удаляет локальную копию БД.
- smb\nfs проблему не решит но должно работать несколько лучше чем sshfs.
Ответ написан
@ComodoHacker
Попробуйте SMB.
Но документация прямо предупреждает, что при работе по сети возможны проблемы, и полностью этого не избежать.
https://sqlite.org/lockingv3.html#how_to_corrupt
Ответ написан
@dyuriev
A posteriori
Ceph, GlusterFS ну или любая другая облачная.

UPD:
из комментария ниже к данному ответу дополняю:

базу храните на инстансе, туда же и пишите обновления

после каждой записи - с помощью rsync отправляете обновление на этот удаленный хост.
ну либо по крону.

rsync - потому что вместо обычного копирования файла по сети целиком - отправляет только обновленные блоки, а не весь файл побайтово + используйте флаг -z - будет еще и сжимать отправляемые данные, а в случае с sqlite - актуально.
Ответ написан
Insaned
@Insaned Автор вопроса
интересно что SMB через интернет по результатам моего теста даёт производительность в 1.5 раза ниже чем sshfs и по скорости и по ёпсам.
Не очень важно, но просто неожиданно
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы