Каковы подводные камни встроенного соединения с Derby по сети?

108
11

У нас есть настольное приложение Java, которое обращается к базе данных Derby, расположенной на сетевом общем диске, а не локально.


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


Это работает довольно хорошо уже более двух лет, но иногда мы сталкиваемся с повреждением базы данных, которое мы не можем определить, является результатом ошибки программного обеспечения или из-за сети между приложением и удаленной базой данных.


Мы понимаем, что в документах Derby указано, что встроенные базы данных должны использоваться только для локальной стойкости, но может ли кто-нибудь предложить некоторые конкретные ошибки, с которыми мы могли бы столкнуться в этой конфигурации?


Спасибо заранее!


Джим

спросил(а) 2021-01-28T00:32:08+03:00 4 месяца, 3 недели назад
1
Решение
78

В частности, что касается повреждения базы данных, я считаю, что есть (по крайней мере) две фундаментальные проблемы с наличием базы данных в сетевом хранилище: (1) когда Derby пытается выделить пространство, увеличивая файл, файловая система может сообщать как успешное, хотя на самом деле диск заполнен; (2), когда Derby пытается убедиться, что запись на диске на самом деле полностью записана на диск, файловая система может сообщать данные как записываемые на диск, хотя на самом деле она все еще записывается в память.

Любая из вышеперечисленных проблем, если они происходят в нужный момент времени, может привести к повреждению базы данных.

ответил(а) 2021-01-28T00:32:08+03:00 4 месяца, 3 недели назад
63

Мы понимаем, что в документах Derby указано, что встроенные базы данных должны использоваться только для локальной стойкости, но может ли кто-нибудь предложить некоторые конкретные ошибки, с которыми мы могли бы столкнуться в этой конфигурации?



Я бы сказал, что вы должны обратить внимание на то, что говорится в документации. Люди, которые разработали Дерби, вряд ли будут давать советы, которые ограничивают применение Дерби без уважительной причины.

(И я могу понять, почему несколько экземпляров приложений, использующих встроенный Derby db, будут проблематичными. Derby предположил, что ему не нужно беспокоиться о просмотре и обновлении нескольких экземпляров и может не очищать данные в порядке, необходимом для разрешения это безопасно работать. Такая промывка не нужна... если вы не используете Derby так, как вам не нужно.)


Кроме того, почему бы вам не использовать подход Network Server версии Derby?

ответил(а) 2021-01-28T00:32:08+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема