Синхронизация распределенных баз данных SQL Express с облачным SQL Server
Существует задача организации синхронизации данных из множества удаленных торговых точек, где в качестве локальной СУБД используется SQL Express. Цель - передача данных в централизованный Microsoft SQL Server, развернутый в облаке, в режиме, максимально приближенном к реальному времени (допустимая задержка - до одного дня).
Ключевые технические ограничения и требования
При проектировании решения необходимо учесть ряд критически важных условий:
- Отсутствие CDC: В SQL Express технология Change Data Capture (CDC) недоступна, что исключает её использование для отслеживания изменений.
- Ограниченные ресурсы: Решение должно потреблять минимальный объем дискового пространства на каждой точке. Подход с использованием Shadow Tables (теневых таблиц) не подходит именно из-за высоких требований к диску.
- Сетевая архитектура: Торговые точки не имеют выделенных IP-адресов и работают за NAT. Это делает невозможным прямое подключение из облака к точке (pull-метод). Единственно возможный способ - инициировать соединение из точки (push-метод).
Направление поиска решения
Таким образом, требуется архитектура, которая:
- Обеспечивает эффективный механизм отслеживания изменений данных в SQL Express без использования CDC.
- Имеет минимальный footprint по дисковому пространству и вычислительным ресурсам.
- Работает по модели push, где каждая точка самостоятельно устанавливает соединение с облачным сервером для отправки дельты изменений.
Решение должно быть надежным, устойчивым к разрывам связи и обеспечивать консистентность данных при периодической синхронизации.