Назад | Перейти на главную страницу

Богатый интерфейс базы данных - как правильно обрабатывать сети низкого качества?

У меня очень ограниченный опыт программирования баз данных, и мои приложения, которые обращаются к базам данных, простые :). До сих пор :(. Мне нужно создать настольное приложение среднего размера (оно называется многофункциональным клиентом?), Которое будет использовать базу данных в сети для обмена данными между несколькими пользователями. Скорее всего, я буду использовать C # и MSSQL / MySQL / SQLite.

Я провел несколько драйв-тестов и обнаружил, что в сетях с низким качеством доступ к базе данных не такой гладкий. В локальной сети одной компании по сети передается много данных, а серверы постоянно загружены, поэтому обычная ситуация, когда простой SQL-запрос INSERT или SELECT занимает 1-2 минуты или даже завершается ошибкой с тайм-аутом / сетевой ошибкой.

Есть ли какие-либо лучшие практики для решения таких ситуаций? Конечно, я могу разделить свое приложение на поток GUI и поток DB, чтобы проблемы с сетью не привели к зависанию GUI. Но что делать с множеством сетевых ошибок? Слишком частое отображение их пользователю будет не очень хорошо :(. Я думаю об автоматическом создании локальной копии базы данных на каждом компьютере, на котором работает мое приложение: сначала обновите локальную базу данных и синхронизируйте ее в фоновом режиме, просто повторите попытку при сетевых ошибках. Это позволит приложению функционировать, если в сети есть большие задержки / проблемы.

Какие-нибудь подсказки и словечки, на что я могу заглянуть? Может быть, это уже есть лучшие практики, которых я не знаю :)

Возможно, вы действительно захотите выяснить, почему внутренняя сеть работает так медленно. Если выполнение простого оператора select занимает 1-2 минуты, это звучит так, как будто что-то серьезно не так с конфигурацией сети.

Что касается вашей лучшей практики, мощность на сервере базы данных будет хорошей вещью. Чем быстрее процессор, чем больше памяти, тем лучше он справляется с рабочей нагрузкой по обработке данных. Большинство баз данных запускают запрос один раз, а затем после этого он сохраняет план выполнения для того же запроса, поэтому для всех после этого он будет быстрее.

Если вы ничего не можете сделать с настройками сети, вы всегда можете работать в среда отключенного типа. Вероятно, это не лучший вариант, если будет много манипуляций с данными. Изучите использование Наборы данных для хранения ваших данных после их извлечения из базы данных.

Это много информации, надеюсь, она кому-то поможет.

Если у вас есть

очень ограниченный опыт программирования баз данных

и это

распространенная ситуация, когда простой запрос INSERT или SELECT SQL займет 1-2 минуты или даже завершится ошибкой с тайм-аутом / сетевой ошибкой.

тогда ваши проблемы, вероятно, не в сети. Я бы хотел получить больше опыта в работе с базами данных, оптимизации запросов и практике кодирования, прежде чем возникнут проблемы с сетью. ИМХО намного проще собрать достаточно надежную сеть (практически без опыта), чем собрать вместе рабочую программу с доступом к БД.