Сценарий использования
Приложения, используемые торговыми представителями или другими работниками на местах – курьеры службы доставки, выездные медсёстры, сотрудники клининговых компаний и т.д., предназначены для сбора информации на местах с последующей отправкой её в центр обработки данных. Кроме того, периодически необходима обратная связь, т.е. отправка данных обратно от центра обработки к конкретным исполнителям на местах.
Например, каждый раз, когда медсестра осуществляет визит к пациенту, она делает отметку о визите на мобильном устройстве. По итогам рабочего дня, вся информация отправляется в централизованную базу данных больницы. После этого, они могут синхронизировать свои мобильные устройства с центром обработки данных, чтобы получить актуальную информацию о своих пациентах или узнать список новых посещений, который они должны осуществить на следующий день.
В любом подобном сценарии использования основная потребность – это постоянный обмен данными между мобильными устройствами на местах и общим хранилищем данных.
Как можно решить подобные задачи
1. Репликация SQL Server. С помощью репликации вы можете осуществлять синхронизацию удалённых баз данных между собой путём копирования данных. Но у неё (репликации SQL Server) есть ряд ограничений:
- Только более дорогие редакции SQL Server Standard и Enterprise могут выступать в роли издателя (Publisher), поэтому если вы используете бесплатную редакцию SQL Express, то вам придётся обновиться.
- Конфигурация из издателя (Publisher) SQL Server 2005 и подписчика (Subscriber) SQL Server 2008 не поддерживает web-репликацию.
- Версия распространителя (Distributor) должна быть строго равна или выше версии издателя (Publisher).
- В репликации транзакций (Transactional Replication) версия подписчика (Subscriber) не должна отличаться от издателя (Publisher) больше, чем на две версии SQL Server, т.е. издатель SQL Server 2000 не может работать с подписчиком SQL Server 2012.
- В репликации слиянием (Merge Replication) версия подписчика (Subscriber) должна быть меньше или равна версии издателя (Publisher), т.е. подписчик SQL Server 2012 не сможет работать с издателем SQL Server 2008.
2. Sync Framework – API, которое позволяет создавать приложения для синхронизации данных между разными базами данных. Эта платформа более гибкая для решения подобных задач, но требует дополнительной разработки, что повышает стоимость и сроки реализации.
3. ApexSQL Data Diff – инструмент SQL Server для поиска различий в данных и синхронизации их между собой. Этот инструмент позволяет находить различия не только между базами данных, но и анализировать резервные копии БД, как обычные, так и сжатые. В результате анализа можно получить подробный отчёт о найденных расхождениях и файл синхронизации, который можно выполнить.
Как это сделать
Представьте себе, что у вас есть единое хранилище данных больницы (Central) и базы данных посещения (Visits) на мобильном устройстве медсестры. В больнице создаются записи в таблице посещения (Visits) и каждое утро медсёстры синхронизируют свои устройства, чтобы узнать свой маршрут на предстоящий день. В течении дня медсёстры на мобильных устройствах желают пометки о посещениях в таблице VisitReports.
- Запустите ApexSQL Data Diff
- В качестве источника (Source) укажите базу данных (Database). Далее укажите сервер БД и имя вашей центральной БД.
-
В качестве назначения (Destination) укажите так же базу данных (Database). В качестве сервера укажите удалённое мобильное устройство медсестры и БД, которую необходимо синхронизировать.
-
Нажмите кнопку сравнить (Compare).
После поиска различий вы получите результирующую таблицу (Main grid) с расхождениями по каждому объекту в ваших БД.
Записи, вставленные в таблицу посещения (Visits) в больнице, показаны на вкладке отсутствующих записей (Missing).
-
Укажите таблицы, которые вы хотите синхронизировать
-
Нажмите синхронизировать (Synchronize) на вкладке главная (Home).
- На шаге направления синхронизации (Synchronization direction) мастера синхронизации (Synchronization wizard) нажмите далее (Next).
-
В параметрах вывода результата (Output options) мастера синхронизации (Synchronization wizard) выберите в качестве действия синхронизировать базу данных (Synchronize a database).
- Нажмите далее (Next).
-
Просмотрите сводку действий, которые будут выполнены и вероятные предупреждения (Summary and warnings).
- Нажмите синхронизировать (Synchronize) на вкладке главная (Home).
-
В диалоговом окне уведомления нажмите ОК.
После завершения синхронизации вы увидите следующее уведомление
- Нажмите кнопку сохранить (Save) на вкладке главная (Home), чтобы сохранить все настройки синхронизации в виде проекта, тем самым в следующий раз вы сможете легко и быстро выполнить подобную синхронизацию.
Для обратной синхронизации всех изменений, которые совершили медсёстры в течении дня необходимо выполнить похожие действия:
-
В качестве источника (Source) укажите БД с мобильного устройства, а в качестве назначения (Destination) – центральное хранилище поликлиники.
- Нажмите сравнить (Compare).
-
Выберите таблицу, в которую были добавлены записи в течении дня, все новые значения можно увидеть на вкладке отсутствий (Missing):
- В основном меню нажмите кнопку синхронизировать (Synchronize).
- С помощью мастера синхронизации (Synchronization wizard) укажите записи, которые необходимо добавить в центральное хранилище поликлиники.
- Нажмите кнопку сохранить (Save) на вкладке главная (Home), чтобы сохранить все настройки синхронизации в виде проекта, тем самым в следующий раз вы сможете легко и быстро выполнить подобную синхронизацию.
Теперь рассмотрим, как автоматизировать процесс синхронизации, при наличии проектов синхронизации.
-
Сохраните следующую команду в виде bat-файла E:\Test\Morning.bat, который будет выполнять ранее созданный проект Morning_Central_Nurse.axdd:
"C:\Program files (x86)\ApexSQL\ApexSQLDataDiff2014\ApexSQLDataDiff.com" / pf:D: \Test\Morning_Central_Nurse.axdd / of:D: \Test\MorningSync.sql / sync / bu:D: \Test / v / f
Он создаст в папке D:\Test скрипт MorningSync.sql, который добавит данные из центральной БД в базы данных медсёстр. В папке D:\Test создайте полную резервную копию БД медсестры и вставьте недостающие записи.
- Запустите SQL Server Management Studio
-
В Object Explorer раскройте SQL Server Agent и правой кнопкой мыши по Jobs создайте новое задание (New job).
-
Укажите имя задания.
- На вкладке Steps нажмите New, чтобы создать новый шаг задания.
- Дайте имя новому шагу, в качестве типа укажите “Operating system (CmdExec)” и нажите кнопку открыть (Open).
-
Select the saved batch file D:\Test\MorningSync.bat
- Нажмите кнопку OK.
-
На вкладке Schedules укажите расписание, по которому должна происходить синхронизация данных.
Для вечерней синхронизации повторите шаги с 3 по 9, чтобы создать ещё одно задание.
С помощью приложения ApexSQL Data Diff вы можете легко настроить синхронизацию ваших удалённых БД SQL Server с центральным хранилищем. При этом вы не привязаны к какой-то конкретной версии или редакции SQL Server, от вас не потребуется дополнительного времени на разработку, при этом вы осуществляете полный контроль над всеми вашими данными до единой записи.
Переводчик: Алексей Князев
November 20, 2015