vijay vettri Ответов: 2

Страновая база данных в веб-приложении C#


Веб-приложение с MVC - >В настоящее время у меня есть база данных с данными клиентов и деталями продукта.
Приложение использовалось только в одной стране. Теперь перейдем к глобальному использованию веб-приложения.

Но клиенты не хотят, чтобы их данные о клиентах оставались за пределами их страны.
Например, если мы собираемся поддерживать две страны, то нам нужно развернуть две базы данных(по одной для каждой).

Что я уже пробовал:

Поэтому я думаю использовать WCF для получения данных из двух разных стран и отображения их в нашем веб-приложении.

У вас есть еще какие-нибудь предложения по этому поводу?
Заранее спасибо

Afzaal Ahmad Zeeshan

Где вы храните базу данных? Они тоже должны быть в разных странах?

vijay vettri

Да. Потому что данные не должны выходить за пределы страны клиента. Таким образом, у нас есть серверы с БД в каждой стране.

2 Ответов

Рейтинг:
20

Wendelius

Это очень хороший вопрос. Мало что приходит на ум:

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

Если базам данных необходимо совместно использовать небольшой объем информации, я бы использовал единую Главную базу данных, содержащую общие данные, доступ к которым осуществляется либо через связанные серверы, либо реплицируется, если надежность соединения недопустима. Остальные таблицы будут размещены в базах данных по конкретным странам.

Все становится интересным, если вам нужно получить доступ ко всем базам данных внутри одних и тех же запросов. Если это требование я бы рекомендовал провести расследование Понимание Контенте Важен Для Нас. [^]. Использование федеративного представления, скорее всего, потребует некоторых логических изменений в приложении, но если база данных будет распределена по нескольким серверам на основе клиентов, то небольших изменений, вероятно, не удастся избежать.

Конечно лазурь была бы одной из тем для обсуждения но вы написали
"Но клиенты не хотят, чтобы их данные о клиентах оставались за пределами их страны."таким образом, облачное хранилище, вероятно, не может быть и речи.

ДОПОЛНЕНИЕ:
---------
Когда два сервера находятся далеко друг от друга, мало что нужно принимать во внимание:
- Общая скорость, насколько быстро происходит соединение между серверами на самом деле
- Разница в скорости, сильно ли меняется пропускная способность
- Надежность, имеет проблемы с подключением подключения
- Потребность в ссылке, большинство запросов выполняются на основе локальных данных, даже если можно получить удаленные данные. Это относится главным образом к федеративным представлениям.

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

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

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


vijay vettri

Спасибо за предложение! Я изучил секционирование данных.(Проверьте ограничение в таблице,создайте связанные серверы,создайте представление).да. Это будет полезно. Но в случае наличия серверов баз данных в разных странах возможно ли связывание серверов? Потому что они не будут находиться в одной сети. обряд. Пожалуйста, обновите свои входные данные !

Wendelius

Пожалуйста, ознакомьтесь с обновленным ответом.

vijay vettri

Привет Венделиус, можно ли обновить данные(вставить/удалить строку) через секционированное представление в случае использования связанных серверов?

Wendelius

С некоторыми ограничениями, да. Взгляните на это Изменение данных в секционированных представлениях[^]

Рейтинг:
1

Nish Nishant

Посмотреть вверх сегментирование базы данных По сути, у вас будет база данных каталога, а затем базы данных сегментов (по одной на страну). Сервис завернул бы его так, чтобы потребителям не нужно было беспокоиться о попадании в нужную БД.