SQL Remote¶
SQL Remote — это программный продукт компании Sybase (ныне часть SAP), предназначенный для организации двусторонней репликации данных между удалёнными базами данных (БД) на основе асинхронного обмена сообщениями. SQL Remote относится к классу систем репликации на уровне записей (row-level replication) и ориентирован на работу в условиях нестабильных или низкоскоростных каналов связи, а также при необходимости автономной работы мобильных и удалённых узлов.
¶История
Разработка SQL Remote началась в начале 1990-х годов в рамках проекта Sybase Replication Server. Первоначально продукт был создан как облегчённая альтернатива для малых и средних предприятий, не требующих синхронной репликации в реальном времени. Первая версия SQL Remote была выпущена в 1994 году для СУБД Sybase SQL Anywhere (ранее Watcom SQL). В 1995 году Sybase представила SQL Remote как часть пакета Sybase Adaptive Server Anywhere (ASA).
В 2000-х годах SQL Remote был интегрирован в Sybase SQL Anywhere Studio, а после приобретения Sybase компанией SAP в 2010 году — в SAP SQL Anywhere. Начиная с версии 12 (2010 год), SQL Remote поддерживает репликацию не только между базами SQL Anywhere, но и с внешними СУБД через ODBC-драйверы. Последняя значительная версия — SQL Remote 17 (2020 год), входящая в состав SAP SQL Anywhere 17.
¶Архитектура
¶Основные компоненты
SQL Remote использует архитектуру «главный узел — удалённые узлы» (hub-and-spoke). В системе выделяются:
- Главный узел (hub) — центральная база данных, которая хранит эталонную копию данных и управляет процессом репликации.
- Удалённые узлы (remote nodes) — автономные базы данных, которые синхронизируются с главным узлом по расписанию или по событию.
Каждый узел работает с собственной копией данных, что позволяет продолжать работу даже при потере связи с главным узлом.
¶Механизм репликации
SQL Remote реализует асинхронную репликацию на основе журналов транзакций (transaction logs). Процесс включает следующие этапы:
- Захват изменений — на каждом узле специальный агент (SQL Remote Message Agent) отслеживает изменения в журнале транзакций СУБД.
- Формирование сообщений — изменения группируются в сообщения, содержащие SQL-команды (INSERT, UPDATE, DELETE) и метаданные (время, идентификатор узла).
- Передача сообщений — сообщения отправляются через транспортный уровень (TCP/IP, HTTP, файловую систему или электронную почту).
- Применение изменений — на целевом узле сообщения обрабатываются и применяются к базе данных.
¶Транспортные протоколы
SQL Remote поддерживает несколько способов передачи сообщений:
- TCP/IP — прямое соединение между узлами (по умолчанию).
- HTTP/HTTPS — через веб-сервер (для работы через корпоративные прокси).
- Файловая система — обмен файлами через сетевые папки или FTP.
- Электронная почта — через SMTP/POP3 (устаревший, но поддерживаемый в версиях до 16).
¶Классификация
¶По типу репликации
- Однонаправленная — данные реплицируются только от главного узла к удалённым (например, для распространения справочников).
- Двунаправленная — изменения возможны на любом узле, конфликты разрешаются по правилам, заданным администратором.
¶По режиму синхронизации
- Периодическая — синхронизация запускается по расписанию (например, каждые 15 минут).
- По событию — синхронизация инициируется при наступлении определённого события (например, при изменении ключевого поля).
- Ручная — администратор запускает синхронизацию вручную.
¶Применение
¶Типичные сценарии
SQL Remote используется в следующих областях:
- Мобильные приложения — синхронизация данных между центральным сервером и устройствами сотрудников, работающих в полевых условиях (например, торговые представители, курьеры).
- Распределённые филиалы — поддержка актуальности данных в офисах, связанных через нестабильные каналы связи (например, в регионах с плохим интернетом).
- Автономные системы — резервное копирование и восстановление данных в условиях отсутствия постоянного сетевого подключения.
- Интеграция с устаревшими системами — репликация данных между современными базами SQL Anywhere и старыми СУБД (например, dBASE, FoxPro) через ODBC.
¶Примеры реализации
- Розничная торговля — сеть магазинов использует SQL Remote для синхронизации кассовых данных с центральным сервером. Каждый магазин работает автономно, а раз в сутки отправляет отчёты о продажах.
- Логистика — система управления складом: мобильные терминалы сборщиков заказов синхронизируются с сервером при подключении к Wi-Fi.
- Медицина — поликлиники с удалёнными отделениями: данные о пациентах реплицируются с центрального сервера в местные базы для работы в офлайн-режиме.
¶Преимущества и недостатки
¶Преимущества
- Автономность — каждый узел может работать независимо, что критично для мобильных и удалённых систем.
- Асинхронность — не требуется постоянное соединение, синхронизация происходит по мере возможности.
- Масштабируемость — поддержка сотен и тысяч удалённых узлов.
- Низкие требования к каналу — передаются только изменения, а не полные копии данных.
- Интеграция с SQL Anywhere — глубокая встроенная поддержка, не требующая дополнительных лицензий.
¶Недостатки
- Зависимость от SQL Anywhere — SQL Remote работает только с базами данных SQL Anywhere (или совместимыми через ODBC).
- Сложность настройки — для больших систем требуется тщательная настройка правил репликации и разрешения конфликтов.
- Задержка синхронизации — при асинхронной репликации данные могут быть устаревшими на время между сеансами синхронизации.
- Конфликты — при двунаправленной репликации возможны конфликты, которые требуют ручного разрешения или сложных алгоритмов.
¶Критика
Основные критические замечания в адрес SQL Remote связаны с его ограниченной совместимостью: продукт не поддерживает репликацию с Microsoft SQL Server, Oracle Database или PostgreSQL напрямую (только через ODBC-мосты, что снижает производительность). Также отмечается, что в версиях до 12 отсутствовала поддержка репликации больших объектов (BLOB/CLOB), что ограничивало применение в системах с мультимедийными данными. Некоторые пользователи указывают на сложность администрирования при большом количестве узлов (более 500), что требует выделенного сервера для управления сообщениями.
¶Интересные факты
- SQL Remote был одним из первых коммерческих продуктов, реализовавших асинхронную репликацию на уровне записей для мобильных устройств.
- В 2003 году Sybase SQL Anywhere с SQL Remote использовалась в системе управления железнодорожными перевозками Deutsche Bahn для синхронизации данных между диспетчерскими пунктами.
- В версии 16 (2015 год) была добавлена поддержка репликации через веб-сокеты, что позволило использовать SQL Remote в облачных средах.
¶Источники
- Sybase SQL Remote User’s Guide, Sybase Inc., 1994.
- SAP SQL Anywhere 17 Documentation, SAP SE, 2020.
- «Replication in SQL Anywhere: A Technical Overview», Sybase Technical White Paper, 2005.
- «Mobile Database Replication with SQL Remote», Journal of Database Management, 2008.
- «SQL Anywhere Studio: Architecture and Performance», Sybase Developer Network, 2012.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


