Я полазил по данном вопросу и пришёл к выводу, что роль серверной части заключается в основном синхронизации работы клиентских частей и взятию на себя основной обработки данных. По этому, собственно, ничего кроме управляющих (синхронизирующих) команд с приложения-сервера и не должно передаваться на приложение-клиента. Приложение-клиент может вполне забирать результат обработки данных приложением-сервер прямо с сервера БД. Например с помощью виртуальных таблиц если результат хранить не надо.
Например: приложение-клиент хочет отредактировать запись. Посылается запрос в приложение-сервер на выделение записи для редактирования. Приложение-сервер смотрит свободна ли запись, блокирует ее и разрешает редактирование приложению-клиенту. При этом считывание и обновление записи происходит с клиента прямо на сервер БД. После успешного редактирования на приложение-сервер посылается команда об отмене блокировки записи. Также приложение-сервер должно известить остальные клиенты о том, что запись изменилась.
По моему так проще и быстрее чем пробрасывать данные через приложение-сервер.
Остаётся вопрос об уязвимости открытого порта сервера БД. Но думаю, что здесь всё можно решить авторизацией и тунелированием данных (что-то типа VPN) между хостами.