У меня очень ограниченный опыт программирования баз данных, и мои приложения для доступа к базам данных простые :). До сих пор :(. Мне нужно создать настольное приложение среднего размера (оно называется rich client?), Которое будет использовать базу данных в сети для обмена данными между несколькими пользователями. Скорее всего, я буду использовать C # и MSSQL / MySQL / SQLite.
Я выполнил несколько тестов дисков и обнаружил, что в сетях низкого качества доступ к базе данных не так гладок. В локальной сети одной компании большое количество данных передается по сети, а серверы находятся в постоянной нагрузке, поэтому обычная ситуация, когда простой SQL-запрос INSERT или SELECT может занять 1-2 минуты или даже потерпеть неудачу из-за тайм-аута / сетевой ошибки.
Есть ли лучшие практики для решения таких ситуаций? Конечно, я могу разделить свое приложение на поток GUI и поток DB, чтобы проблемы с сетью не привели к зависанию GUI. Но что делать с большим количеством сетевых ошибок? Отображать их пользователю слишком часто будет не очень хорошо :(. Я думаю об автоматическом создании локальной копии базы данных на каждом компьютере, на котором работает мое приложение: сначала обновите локальную базу данных и синхронизируйте ее в фоновом режиме, просто повторите попытку при сетевых ошибках. Это позволит приложению функционировать при возникновении значительных задержек / проблем в сети.
Какие-нибудь подсказки и модные слова, на что я могу посмотреть? Может быть, это уже некоторые лучшие практики, которые я не знаю :)