Синхронизация распределенных баз данных SQL Express с облачным SQL Server

Существует задача организации синхронизации данных из множества удаленных торговых точек, где в качестве локальной СУБД используется SQL Express. Цель - передача данных в централизованный Microsoft SQL Server, развернутый в облаке, в режиме, максимально приближенном к реальному времени (допустимая задержка - до одного дня).

Ключевые технические ограничения и требования

При проектировании решения необходимо учесть ряд критически важных условий:

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

Направление поиска решения

Таким образом, требуется архитектура, которая:

  1. Обеспечивает эффективный механизм отслеживания изменений данных в SQL Express без использования CDC.
  2. Имеет минимальный footprint по дисковому пространству и вычислительным ресурсам.
  3. Работает по модели push, где каждая точка самостоятельно устанавливает соединение с облачным сервером для отправки дельты изменений.

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