Синхронизация удаленных баз данных приложения .NET Mysql

Мы разрабатываем настольное приложение .NET, которое будет интегрировано с веб-сайтом, используя MySQL. У каждого клиента программного обеспечения будет веб-сайт. Нам необходимо синхронизировать базу данных клиента с соответствующей базой данных, работающей на нашем сервере. У нас будет одна база данных, работающая на нашем сервере для каждого клиента. Эта информация будет отображаться на веб-сайте клиента.

Синхронизация должна производиться в короткие промежутки времени. Мы не хотим иметь устаревший сайт.

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

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

Мы могли бы запустить несколько экземпляров MySQL, по экземпляру на каждого клиента. Но нам нужно открывать порт для каждого экземпляра, и это звучит небезопасно.

Наконец, мы подумали открыть порты и запретить неклиентский доступ с помощью брандмауэра.

Как бы вы решили эту проблему? Мы хотели бы услышать ваше мнение. Спасибо.


person fabriciofreitag    schedule 23.02.2012    source источник


Ответы (2)


У меня есть аналогичная программа, я использую базу данных CQL CE/MS SQL. Что я делаю, так это на главном сервере, в каждой из таблиц, которые мне нужны для отправки обновлений в клиентские базы данных, я добавляю поле даты обновления. Базы данных клиентов будут иметь таблицу, содержащую дату последнего обновления их базы данных. Поэтому, когда что-то изменяется на сервере, дата обновления устанавливается на текущую дату, затем клиентская программа сверяет дату последнего обновления с веб-службой, чтобы узнать, нужно ли ей делать какие-либо обновления.

person Jonah Kunz    schedule 23.02.2012

Я немного думал об этом в прошлом.

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

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

person Void    schedule 23.02.2012