Это действительно зависит:
- Объем, размер, сложность модели данных / данных,
- частота, срочность обновлений,
- доступное соединение (онлайн 24/7 или время от времени подключено против ночного сеанса синхронизации) и пропускная способность,
- существующие механизмы хранения данных,
- количество программного обеспечения, которое вы можете / можете / хотите установить на клиентах,
- доступный бюджет,
- допустимое время разработки
- ресурсы и организация, доступные для работы системы
- план жизненного цикла (ожидаемый срок службы) системы,
- значимость миссии (критически важная система, которая может убить жизни против «просто» информационной системы менеджера)
- это все факторы, которые вы должны упомянуть или хотя бы оценить. В зависимости от этих аспектов решение может варьироваться от «дешевого» веб-сервиса и плоских файлов, синхронизируемых посредством тривиального кода Java, до полностью плоской распределенной базы данных.
Несколько лет назад я обнаружил, что Sybase SQL Anywhere является хорошим решением для небольших и средних требований и бюджетов, если требуется «настоящая» СУБД SQL или она уже присутствует на серверной стороне сервера. Он предлагает мощную, но прозрачную (при разумном использовании) методологию публикации и подписки на уровне SQL, которая работает хорошо, если вы не можете быть уверены, что все клиенты в сети 24/7.
Для онлайновых (или почти онлайн) полноценных решений Oracle предлагает варианты репликации базы данных в Интернете, которые, однако, довольно дороги.
Для небольших решений пользовательский код Java, обращающийся к удаленным ссылкам базы данных (функция Oracle), обычно работает, но поиск узких мест в производительности может быть кошмаром. (И вам требуются стабильные сетевые ссылки и «настоящая» база данных Oracle на всех узлах.)