Открыть сервис

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). Процесс включает следующие этапы:

  1. Захват изменений — на каждом узле специальный агент (SQL Remote Message Agent) отслеживает изменения в журнале транзакций СУБД.
  2. Формирование сообщений — изменения группируются в сообщения, содержащие SQL-команды (INSERT, UPDATE, DELETE) и метаданные (время, идентификатор узла).
  3. Передача сообщений — сообщения отправляются через транспортный уровень (TCP/IP, HTTP, файловую систему или электронную почту).
  4. Применение изменений — на целевом узле сообщения обрабатываются и применяются к базе данных.

Транспортные протоколы

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 →