8f152643

SQL Anywhere имеет продуманную



SQL Anywhere имеет продуманную языковую поддержку. При создании каждой базы данных
указывается, в частности, порядок сортировки символов. Эта информация используется при
выполнении сортировки ORDER BY, сравнения символов без учета регистра, использовании
символов для написания идентификаторов объектов базы данных, обработке фразы LIKE и
различных строковых функций.

Кроме встроенных языков и кодовых страниц (включая русский), SQL Anywhere позволяет
создавать определенные пользователем новые конфигурации. Для этого описание вводится в
текстовом виде и затем преобразуется специальной утилитой.

Очень важны весьма невысокие требования продукта к ресурсам. Он может запускаться при 1Мб
свободной оперативной памяти и работать в минимальной по памяти конфигурации
Windows.

С другой стороны, с выходом SQL Anywhere группы разработчиков могут использовать этот
продукт с уверенностью в том, что при необходимости возможен переход на более мощные
аппаратные и программные платформы (RISC-станции и Sybase SQL Server).

Действительно, включение SQL Anywhere в состав линии продуктов Sybase придало новые
качества продукту и сделало его выбор для рабочих групп еще более привлекательным не только
по цене, но и по наиболее важным характеристикам:




  • собственная репликация данных - SQL Remote;
  • поддержка системы репликации Sybase Replication Server;
  • графический инструмент администрирования SQL Central;
  • поддержка Transact-SQL;
  • поддержка ODBC 2.1;
  • повышение производительности и мониторинг производительности;
  • расширения языка Watcom SQL;
  • универсальный серверный интерфейс SQL Anywhere Open Server.

SQL Anywhere поддерживает два различных механизма репликации.

База данных SQL Anywhere может участвовать в схеме репликации Sybase Replication Server. Это
мощная, сложная и высокопроизводительная компонента, тиражирующая данные между
разнородными СУБД, описана выше (рис.8). Для интеграции с Replication Server используется
специальный шлюзовой компонент - Open Server Gateway для SQL Anywhere, который
"транслирует" стандартный для продуктов Sybase интерфейс Open Client/Server в интерфейс SQL
Anywhere.

Для отслеживания изменений в базе данных SQL Anywhere предусмотрена компонента Replication
Agent.

Другой механизм репликации (SQL Remote) - это система репликации только между базами
данных SQL Anywhere. Это менее гибкая система, чем Replication Server; например, в ней жестко
требуется, чтобы имена объектов тиражирования были одинаковыми во всех базах данных. Зато
SQL Remote легко администрируется, пригоден для широкого использования в том числе и в
случаях, когда базы данных не имеют прямого соединения друг с другом.




Службы сообщений используют адрес получателя для сохранения и передачи сообщений к пункту
назначения. Например, система электронной почты может сохранять сообщение на сервере до тех
пор, пока соответствующий пользователь не подключится к системе.

В отличие от режима сессии, многие системы, основанные на сообщениях, не гарантируют ни
обязательной доставки сообщения, ни определенного порядка прихода нескольких сообщений.
Поэтому SQL Remote реализует специальный протокол, который гарантирует проведение
обновлений в правильном порядке.

Публикация - это объект, описывающий тиражируемые данные. Удаленные пользователи
оформляют подписки на публикации для получения этих данных.

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

Система репликации администрируется централизованно в консолидированной БД средствами
графического инструмента SQL Central.

Публикация может быть использована несколькими подписчиками.

В SQL Remote реализована поддержка систем передачи сообщений MAPI, VIM, SMTP и
файлового обмена.

При проектировании любой схемы репликации, где происходит обновление в нескольких БД,
следует учитывать возможность возникновения и разрешения конфликтов. Рассмотрим очень
кратко, как эта проблема решается в SQL Remote.


  • Два пользователя добавляют в таблицу строку с одинаковым первичным
    ключом (ПК). В этом случае второй INSERT закончится неудачно. Этой
    ситуации можно избежать при правильном проектировании БД. Например,
    включить колонку - идентификатор БД, где происходит обновление, в
    первичный ключ такой таблицы.
  • Два пользователя обновляют одну и ту же колонку в таблице (не ПК). Если
    в системе требуется обеспечить пользователям такую потенциально опасную
    возможность, то SQL Anywhere предоставляет средство обнаружить и
    разрешить конфликт с помощью специального типа триггера (RESOLVE
    UPDATE).



Имеется гибкий механизм
конфигурирования так называемых функциональных строк (function strings), которые
переопределяют любую операцию на макроязыке с возможностью подстановки параметров.

В одной базе данных могут содержаться как первичные данные, так и данные-копии. Приложение-
клиент, работающее со своей СУБД, может вносить изменения напрямую (операторами INSERT,
DELETE, UPDATE) только в первичные данные. Для изменения копии данных предназначен
механизм асинхронного вызова процедур.

Для работы механизма асинхронного вызова процедур в нескольких базах данных создаются
процедуры с одинаковым именем и параметрами, но, возможно, с различным текстом. В одной
базе данных процедура помечается как предназначенная к репликации. Вызов этой процедуры
вместе со значениями параметров передается через журнал и механизм репликации к узлам-
подписчикам. Затем в базах данных подписчиков вызывается одноименная процедура с теми же
значениями параметров.

Таким образом, для обновления "чужих" для узла данных (копии данных) прикладная программа-
клиент вместо выполнения оператора UPDATE вызывает заранее определенную в этом узле
хранимую процедуру и передает ей параметры (например, значение первичного ключа и новые
значения для обновляемых колонок). Тело этой процедуры пустое и она не выполняет никаких
действий, однако ее вызов записывается в журнал. Механизм репликации обеспечивает вызов на
узле, содержащем первичные данные, одноименной процедуры с подстановкой параметров. В теле
этой процедуры может быть записан оператор UPDATE, обновляющий первичные данные. Тот же
механизм репликации передаст изменения в данных узлу, инициировавшему операцию.

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

СУБД, хранящая вторичные данные, может быть любой СУБД, доступной через шлюз, в том числе


Oracle, Informix, Ingres, DB2, RMS, ISAM, или даже приложение Open Server.

СУБД, хранящая первичные данные, требует наличия для нее RA. Сейчас RA имеется для Sybase
SQL Server, Oracle, DB2, Sybase SQL Anywhere. Готовятся RA и для других СУБД. Интерфейс RA
открыт и возможно создание RA для нестандартных источников данных.

Некоторые применения тиражирования данных:


  • сервер, выполняющий активное обновление данных (OLTP), разгружается
    от сложных запросов, связанных с поддержкой принятия решений (DSS);
  • консолидация данных от подразделений в центре;
  • обмен данными по медленным и/или ненадежным линиях связи;
  • поддержание резервной базы данных;
  • построение сети равноправных узлов, обменивающихся данными.

Важно, что репликационный сервер тиражирует транзакции, а не отдельные изменения в базе
данных. Метод тиражирования транзакций гарантирует целостность внутри транзакции, и, как
следствие, невозможность нарушения ссылочной целостности. Схема обновления первичных
данных и копий данных исключает возможность возникновения конфликтов (конфликты могут
быть вызваны только неправильным проектированием системы или сбоем).


Содержание раздела