САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Математико-механический факультет
Кафедра системного программирования
Наговицына Полина Александровна
Создание сервиса синхронизации разнородных баз данных
Допущена к защите
зав. кафедрой:
д.ф.м.н., профессор Терехов А.Н.
Научный руководитель:
доцент Графеева Н.Г.
Рецензент:
Санкт-Петербург
2008
Содержание
2.1 Характеристики баз данных. 4
2.2 Готовое программное обеспечение. 6
2.3 Способы синхронизации баз данных. 7
3. Описание приложения «SyncManager». 12
4. Практическая реализация приложения «SyncManager». 14
Со времени изобретения письменности перед человечеством стояла задача хранения данных. Поддержка записей имеет долгую историю и очень актуальна сегодня.
C развитием IT-инфраструктуры увеличиваются объемы информации, которые необходимо хранить в базах данных. Масштабы их возрастают настолько, что зачастую требуется распределение нагрузки на несколько серверов. Использование Интернет сильно повысило значение и важность технологии БД. Как только ранние статические веб-страницы уступили дорогу динамическим, а большие организации начали использовать Интернет для публикации своих данных, все большее и большее информационное пространство стало зависеть от баз данных. Стало необходимым расширение возможностей одновременного доступа к данным нескольких пользователей. Основной проблемой распределенных систем является проблема поддержания синхронного состояния источников данных на разных узлах. Эту проблему призваны решать системы репликации. Репликация — это механизм синхронизации содержимого нескольких копий объекта, процесс, под которым понимается копирование данных из одного источника на множество других и наоборот. При репликации изменения, сделанные в любой из копий объекта, могут быть распространены во все копии. То, как система репликации производит выборку данных, подлежащих синхронизации, напрямую влияет на производительность системы. Репликация необходима, когда технические требования проекта информационной системы предполагают многократный поиск, вставку, обновление и удаление данных из разнородных источников. Например, при ведении бухгалтерского учета при помощи 1С, когда одна и та же таблица может содержаться в нескольких базах данных.
Проблема синхронизации данных по нескольким источникам информации представляет собой довольно нетривиальную задачу с весьма неоднозначным решением. Как это ни странно, учитывая, что подобные проблемы возникают довольно часто, но универсального решения такой задачи на текущий момент практически нет. Почти все готовые репликаторы данных работают с существенными ограничениями по структуре и способам накопления и изменения данных в таблицах базы данных. Большинство производителей БД имеют собственные инструменты синхронизации. В основном это синхронизация по требованию (то есть не постоянный контроль различий между копиями данных) структур (но не содержимого) двух баз данных. Также существуют приложения, работающие с разнородными источниками, при этом производители БД конкретизированы, и возможности расширения списка синхронизируемых баз нет.
Поэтому, когда возникла задача перманентной синхронизации нескольких элементов баз данных, одной из которых является Progress database, мы столкнулись с отсутствием в информационной сфере приемлемого решения.
Необходимо написать приложение, обеспечивающее синхронизацию связанных между собой разнородных баз данных: Progress и другой произвольной базы. Так как процесс репликации разнородных данных очень индивидуален, и для каждой пары БД существует множество особенностей и зависимостей, проводить исследование необходимо на примере двух конкретных систем.
Таким образом, необходимо:
· изучить особенности синхронизируемых баз данных
· изучив то, что уже существует в данной области, понять достоинства и недостатки
· проанализировать все возможности и способы репликации, чтобы выбрать наиболее подходящий вариант
· сформировать модель всего приложения, исходя из полученных данных и конкретизировать детали
Рассматриваемы в данной работе базы данных имеют следующие характеристики:
СУБД Progress
· БД большого объема (до 80 000 Тб)
· Многопользовательский режим работы с данными
· Возможность on-line администрирования для критических БД
· Поддержка промышленных стандартов:
o операционные системы
o сетевые протоколы
o пользовательские интерфейсы
o SQL ANSI92, ODBC, JDBC
· Переносимость приложений между платформами
· Поддержка физической и логической целостности на уровне БД
· Поддержка распределенных БД
· Гибкие возможности по организации распределенной обработки данных:
o клиент/сервер
o N-уровневая архитектура
o Web-архитектура
СУБД MySQL
MySQL — свободная система управления базами данных. MySQL является собственностью компании MySQL AB, осуществляющей разработку и поддержку приложения. Распространяется под GNU General Public License и под собственной коммерческой лицензией, на выбор. Помимо этого компания MySQL AB разрабатывает функциональность по заказу лицензионных пользователей, именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.
MySQL является решением для малых и средних приложений. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.
Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре, в СУБД MySQL постоянно появляются новые типы таблиц.
Несмотря на то, что версия 4.0 является устаревшей, она всё ещё имеет значительное распространение. Основные возможности этой версии:
· Практически полная реализация ANSI SQL-99, плюс расширения
· Межплатформенная совместимость
· Независимые механизмы хранения (MyISAM для быстрого чтения, InnoDB для транзакций и ссылочной целостности)
· Транзакции
· Поддержка SSL
· Кеширование запросов
· Репликация: один головной сервер на одного подчинённого, много подчинённых на одного головного
· Полнотекстовая индексация и поиск с использованием механизма MyISAM
· Внедрённая библиотека базы данных
· Поддержка Юникода (UTF-8)
· Таблицы InnoDB обеспечивают соответствие требованиям ACID
· Встроенный сервер, позволяющий включать MySQL в автономные приложения.
В MySQL 5.0 значительно расширена функциональность, которая ставит MySQL в один ряд с коммерческими СУБД. Если раньше СУБД MySQL обвиняли в недостаточной поддержке стандарта SQL, то с появлением пятой версии этой популярной базы данных, появилась практически полная поддержка стандарта SQL.
MySQL 5.0 содержит следующие нововведения:
· хранимые процедуры и функции
· обработчики ошибок
· курсоры
· триггеры
· представления
· информационная схема (так называемый системный словарь, содержащий метаданные)
Версия MySQL 5.1 продолжает путь к стандарту SQL2003. MySQL 5.1 содержит следующие нововведения:
· планировщик заданий
· сегментирование
· изменено поведение ряда операторов, для обеспечения большей совместимости со стандартом SQL2003
· значительные изменения в работе MySQL Cluster, такие как, например, возможность хранения табличных данных на диске
· row-based репликация
· реализация парсера полнотекстового поиска в виде plug-in
Версия MySQL 6.0 пока находится в стадии альфа-тестирования. Первоначально было принято решение о создании версии 5.2, однако вскоре эта версия была переименована в 6.0.
Одно из главнейших нововведений версии 6.0 — новый механизм хранения данных Falcon, разработанный компанией MySQL AB, в качестве потенциальной замены для InnoDB компании InnoBase, приобретённой компанией Oracle.
2.2 Готовое программное обеспечение
Многие производители баз данных имеют широкий ассортимент средств поддержки своих продуктов. Ниже приведен обзор инструментов для синхронизации баз данных Progress, MySQL, MSSQL.
Progress® DataXtend™ RE (Replication Edition) предоставляет инструменты синхронизации и репликации, которые делают приложения более мобильными и доступными для разработчиков как в режиме on-line, так и off-line.
Progress® DataXtend® Semantic Integrator (SI) позволяет поставщикам коммуникационных услуг более эффективно синхронизировать свои разнородные распределенные данные благодаря новой функциональной возможности обнаружения изменений в данных (Сhange Data Capture, CDC), позволяющей определить момент, когда в базе данных произошло изменение данных. В настоящее время, Progress DataXtend Semantic Integrator 8.3 поддерживает в качестве источников данных базы данных Oracle. Следующие версии будут поддерживать базы данных других производителей.
DBTyP.NET 2008 позволяет анализировать, сравнивать и синхронизировать и схему, и содержимое баз данных. Упрощает управление изменениями баз данных. Кросс-платформенные технологии, которые используются в DBTyP.NET, обеспечивают возможность работы с базами данных от разных производителей: SQL Server, Oracle, MySQL. Следующие версии должны поддерживать PostgreSQL, Informix, DB2 и другие. Приложение имеет 2 модуля: Database Schema Comparison и Database Data Comparison.
Database Schema Comparison сканирует обе БД и отображает схемы в виде деревьев, помечая цветом все различия. В то же время, он создает оба скрипта для синхронизации баз данных и предоставляет возможность наблюдать изменении на уровне скриптов.