В данный момент я пишу систему, которая должна копировать данные из базы данных SQL, размещенной на локальном сервере клиента, в базу данных размещенного сервера. Большая часть данных в локальной базе данных копируется в оперативную, хотя были сделаны оптимизации для уменьшения объема фактических данных, необходимых для отправки.
Каков наилучший способ отправки этих данных из одной базы данных в другую? На данный момент я вижу несколько возможных вариантов, но ни один из них пока не выделяется в качестве основного кандидата.
- Репликация, хотя она не идеальна, и мы не можем ожидать, что она будет поддерживаться в версии SQL, которую мы используем в размещенной среде.
- Связанный сервер, прямое копирование данных - медленный и несколько небезопасный метод
- Веб-сервисы для передачи данных
- Экспорт данных, которые нам требуются, в формате XML и передача на сервер для массового импорта.
Скопированные данные попадают в копии таблиц без полей идентификации, поэтому данные могут быть вставлены / обновлены без каких-либо нарушений в этом отношении. Эта передача данных не обязательно должна выполняться на уровне базы данных, это может быть сделано из .net или других средств.
Дополнительная информация
Частота обновлений будет полностью зависеть от того, как часто обновляются записи. Но основная идея заключается в том, что если запись изменяется, то пользователь может опубликовать ее в оперативной базе данных. В качестве альтернативы мы запишем изменения и отправим их партиями с настраиваемой частотой.
Количество записей, о которых мы говорим, составляет около 4000 строк на таблицу для основных таблиц (каталог продуктов) на данный момент, но это полностью зависит от клиента, на котором мы его развертываем, поскольку у каждого будет свой каталог продуктов. В диапазоне от 100 до 1000 продуктов. Чтобы уточнить, каждый клиент находится в отдельной комбинации локальной / размещенной базы данных, они не объединены в одну систему.
Наряду с отдельной публикацией элементов нам также потребуется полная повторная синхронизация данных по требованию.
Другим аспектом системы является то, что некоторые данные, копируемые с локального сервера, хранятся во вторичной базе данных, поэтому мы эффективно объединяем данные из двух баз данных в одну живую базу данных.