Надежная альтернатива репликации для непрерывной синхронизации данных между двумя базами данных - PullRequest
3 голосов
/ 14 марта 2012

У меня есть одна центральная база данных и 25 клиентских баз данных, и все они имеют одинаковую схему.

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

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

С этим связаны три проблемы: -
1. Файлы теряются или поступают в беспорядочном порядке, что приводит к ошибкам в данных клиента
2. Процесс идет медленно 3. Программы иногда закрываютсяпоэтому весь поток синхронизации останавливается.

Существует ли надежная альтернатива, быстрая и безопасная?Интересно, как создаются банковские программы ... они никогда не теряют транзакции и работают быстро.

Ответы [ 3 ]

3 голосов
/ 14 марта 2012

Добавьте столбец UpdateDate ко всем объектам, которые необходимо реплицировать. На каждом клиенте добавьте linked server в центральный репозиторий. Теперь, каждые 5 минут или около того, опросите ваш центральный репозиторий на предмет изменений, используя последний UpdateDate объекта клиента, и получите дельту. Затем используйте merge или insert и update для объединения данных на клиенте. Это очень надежный способ сделать доморощенную репликацию. Чтобы отслеживать удаленные элементы, вы должны либо пометить их как удаленные, либо иметь другую таблицу для отслеживания вида объекта и его ссылки, снова в сочетании с UpdateDate для репликации.

Обновление Затем вы упоминаете транзакции и банковское программное обеспечение. Когда вы выполняете репликацию через файлы, мы не говорим ни о транзакционной репликации, ни о чем долго.

Если вам нужна согласованность транзакций, вам нужно подписаться на поток транзакций хранилища данных.

0 голосов
/ 14 марта 2012

Если у вас есть одна центральная база данных и 25 клиентов, вы можете легко сделать это с одной (да только одной) лицензией на SQL-сервер для основной базы данных.Подписчики этой базы данных могут запускать SQL Express.Пока пользователи обращаются к клиентским базам данных, вы даже не обязаны покупать клиентские лицензии SQL.

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

0 голосов
/ 14 марта 2012

Я не хочу быть бесполезным, и вы не дали никакой информации о потребностях вашего бизнеса, но вы должны решить, является ли ваш приоритет действительно «быстрым и безопасным» или действительно «дешевым». Надежная и согласованная репликация изменений между несколькими базами данных непроста (как вы знаете), и маловероятно, что вы сможете самостоятельно разработать решение, обладающее функциями, стабильностью и производительностью репликации SQL Server.

Кстати, SQL Express может быть подписчиком репликации, поэтому неясно, почему он не отвечает вашим потребностям. Но если этого не произойдет, вам следует оценить затраты вашего бизнеса (или клиента) на решение проблем, вызванных ненадежным решением: ваше время, простои в бизнесе, поиск и исправление неверных данных, жалобы клиентов, потеря бизнеса и т. Д. Затем сравните это к стоимости 25 лицензий SQL Server (вы наверняка сможете получить хорошую скидку при заказе этого тома), дополнительное оборудование (если есть) и затраты на обучение, консультации и / или обучение использованию репликации. Затем экстраполируйте эти расходы в течение 5 лет или около того. Вы можете обнаружить, что дешевле просто купить необходимое решение. И, конечно же, покупка полной версии SQL Server означает, что вы получите множество других новых функций, которые могут быть вам полезны.

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

...