КИРИЛЛ СУХОВ
SAP + MySQL = MaxDB
При выборе СУБД для проекта часто встаёт проблема выбора между низкой (часто нулевой) стоимостью открытых баз данных, таких как MySQL или PostgreSQL, и мощью и широтой возможностей «серьёзных» СУБД – Oracle, DB2, MS SQL. MaxDB от компании MySQL AB, наследница SAP DB – прекрасная альтернатива такому выбору. Это промышленная SABсертифицированная база данных, распространяемая под лицензией GPL.
В последних числах мая 2003 года широкие массы IT-тружеников потрясла неожиданная новость. Солидная во всех отношениях компания SAP AG, один из мировых лидеров программного обеспечения для бизнеса, заявила о планах «стратегического сотрудничества» с MySQL AB – разработчиком самой распространённой открытой СУБД – MySQL. Данное сотрудничество касалось такого известного и заслужившего уважение продукта SAP, как SAP DB – промышленного сервера баз данных, стоящего в одном ряду с гигантами – MSSQL Server, Oracle и DB2. При этом, как заявлялось, написанием кода и управлением проектом будет заниматься непосредственно MySQL AB, а внедрение системы и поддержку продукта компании планировали осуществлять совместно. Причиной такого шага SAP AG назвали желание как можно больше соответствовать запросам клиентов.
Если в MySQL-сообществе известие утвердило сдержанный оптимизм, то в среде пользователей продуктов SAB реакция была, по крайней мере, неоднозначна. И в самом деле, что может предоставить MySQL SAP, кроме… кроме огромного количества пользователей СУБД! В самом деле, причиной такого шага могло послужить желание привлечь новых пользователей за счёт огромной аудитории MySQL (если такие соображения и впрямь имели место, то, по крайней мере, на авторе этих строк план сработал). О будущем SAP DB также строились различные догадки. MySQL AB будет позиционировать SAP DB как «MySQL для взрослых», говорили также о том, что MySQL будет просто использовать код SAP DB для внедрения в свой продукт, а оригиналу суждено умереть.
Прошло более двух лет, и пока, к счастью, события опровергают обе версии. Готовящаяся к выходу MySQL 5 явно не «содрана» со своей старшей сестры, а, в свою очередь, SAP DB, под новым именем MaxDB, живет и развивается. Несмотря на смену названия нумерация версий осталась прежней: так, в начале 2004 года вышла MaxDB 7.5, а в июне 2005 года MaxDB 7.6, порадовавшая пользователей графическим инсталлятором (Installation Manager GUI), автоматическим обновлением статистических данных, автоматическим восстановлением неисправных индексов и новыми алгоритмами кэширования.
В этом же году MySQL AB выпустили PHP- и Perl-драйверы для MaxDB, расширив функциональность для разработки приложений.
Что собой представляет MaxDB сегодня?
Это полноценный, промышленный сервер баз данных, поддерживающий стандарт SQL 92 на «расширенном» уровне (хранимые процедуры, триггеры, последовательности, курсоры, роли и т. д.). В СУБД реализована поддержка UNICODE, поддержка кластерных систем, предусмотрена возможность изменения размера базы и создание резервной копии в режиме Online. Возможности MaxDB включают статистику для оптимизации стратегии построения запросов пользователем и выполнения их ядром СУБД. Программные интерфейсы, позволяющие работать с MaxDB, включают ODBC 3.5, C/C++ Precompiler (встроенный (Embedded) SQL), JDBC, версии 3.0, Perl DBI, Python, PHP и, разумеется, SQLCLI. Что ещё? Да в общем, немало, скажем, режим совместимости синтаксиса SQL СУБД. с Oracle 7.
Помимо самой СУБД в состав дистрибутива включены все необходимые приложения для администрирования и интерактивной работы с базой данных, речь о которых пойдёт ниже.
В таблице 1 приведён список поддерживаемых в настоящее время платформ и архитектур. Он не так впечатляющ, как в случае с MySQL, но все наиболее распространённые конфигурации в нём присутствуют.
Таблица 1. Платформы и архитектуры, поддерживаемые MaxDB
Операционная система
|
Архитектура
|
HP-UX
|
HP-Risc
IA64
|
IBM AIX
|
Power
|
Linux
|
X86_32
X86_64
IA64
Power
|
SUN Solaris
|
SPARC
|
Microsoft Windows 2000
|
X86_32
|
Microsoft Windows XP
|
X86_32
|
Microsoft Windows Server 2003
|
X86_32
X86_64
IA64
|
Если операционная система, на которой вы планируете работать с MaxDB, в таблице отсутствует, не отчаивайтесь. Вся необходимая информация по портированию СУБД приведена здесь: http://www.sapdb.org/develop/sap_db_cvs.htm и здесь: http://sapdb.2scale.net/moin.cgi/DevelopingSapdb. Основные технические параметры MaxDB приведены в таблице 2.
Таблица 2. Основные технические параметры MaxDB
Величина
|
Максимальное значение
|
Максимальный размер базы данных
|
32 Тб (при 8 Kб размере страниц)
|
Длина идентификатора
|
32 символа
|
Точность представления числовых данных
|
38 десятичных разрядов
|
Количество таблиц
|
Неограниченно
|
Внутренняя длина записи
|
8088 байт
|
Размер данных типа LONG
|
2 147 483 647 байт
|
Количество полей в таблице (с ключом)
|
1024
|
Количество полей в таблице (без ключа)
|
1023
|
Количество первичных ключей в таблице
|
512
|
Суммарная длина всех ключевых полей в таблице
|
1024
|
Количество индексов для одной таблицы
|
255
|
Количество полей в индексе
|
16
|
Суммарная длина всех полей, образующих индекс
|
1024
|
Количество внешних ключей для одной таблицы
|
Неограниченно
|
Количество полей во внешнем ключе
|
16
|
Количество триггеров для одной таблицы
|
3
|
Количество записей в таблице
|
Неограниченно
|
Количество результирующих полей в запросе SELECT
|
1023
|
Количество присоединяемых (join) таблиц в запросе SELECT
|
64
|
Количество полей в ORDER- и GROUP-предложении
|
128
|
Количество связанных полей в SQL-запросе
|
64
|
Количество связанных таблиц в SQL-запросе
|
16
|
Общая длина полей в ORDER- и GROUP-предложении
|
1020
|
Количество параметров в SQL-выражении
|
2000
|
Длина SQL-выражения. Зависит от конфигурационного параметра PACKET_SIZE
|
Не менее 16 000 байт
|
Количество одновременно работающих пользователей
|
Неограниченно (задается параметром конфигурации экземпляра базы данных)
|
Количество одновременно открытых сессий у одного пользователя
|
Неограниченно (значение определяется при создании пользователя)
|
Как и остальные продукты от MySQL AB, MaxDB распространяется как под коммерческой лицензией, так и под лицензией GPL, причём последний вариант СУБД ничем функционально от платной версии не отличается.
Инсталляция
Требования к ресурсам у MaxDB по нынешним меркам довольно скромны. Они напрямую зависят от объёма базы данных. Самым критичным параметром для работающего сервера является оперативная память. Для размещения ядра необходимо около 48 Мб, для каждого активного соединения понадобятся еще примерно 10 Мб ОЗУ, что по сравнению с аналогами не выглядит непомерным. Размер занимаемого дискового пространства складывается из размера файлов дистрибутива MaxDB и размера прикладной базы данных. Суммарный размер исполняемых файлов MaxDB составляет от 280 Мб для 32-разрядных систем до 700 Мб для 64-разрядных. Размер прикладной базы определяется пользователем и может в дальнейшем быть изменён без необходимости перезагрузки сервера.
Размер занимаемой MaxDB оперативной памяти можно корректировать с учетом размера базы данных и количества одновременно обрабатываемых запросов.
Все действия производились на компьютере под управлением операционной системы Windows XP Pro (SP2), под музыку группы Аквариум.
Сначала скачиваем архив с дистрибутивом MaxDB, который доступен по адресу: http://dev.mysql.com/downloads/maxdb, затем графические инструменты для работы с СУБД – DBM GUI и SQL Studio, расположенные здесь: http://dev.mysql.com/downloads/maxdb/clients.html. Распаковав дистрибутив, приступаем к установке.
Есть несколько путей для инсталляции MaxDB. Прежде всего это стандартная инсталляция. Посредством консольной утилиты SDBINST. Она достаточно удобна и информативна (рис. 1). Всё, что требуется, выбрать режим установки (я выбрал полный вариант) и размещение папок с данными, программами и ядра базы данных, а затем заинтересованно следить за ходом установки. По окончании программа порадует вас сообщением о необходимости перезагрузки (рис. 2).
Рисунок 1. Выбор инсталляционного профиля
Рисунок 2. Инсталляция завершена. Перегружаемся!
В новых версиях MaxDB доступен также вариант установки с веб-интерфейсом (требует дополнительного компонента maxdb-webtools, входящего в дистрибутив) и графический режим, на котором я и рекомендую остановиться. В отличие, например от инсталлятора MySQL, Installation Manager GUI совершенно не ограничивает возможности установки. Итак, запускаем утилиту SDBSETUP.exe (рис. 3). Если это не первая попытка установки, настоятельно советую с помощью соответствующего пункта меню снести результаты предыдущих экспериментов – различные версии СУБД и просто разные варианты установки могут конфликтовать. В начале инсталляции нам предлагают выбор конфигурации (рис. 4), причём первый пункт предполагает полную установку. Затем, после выбора режима, предлагается задать пароли привилегированным пользователям и параметры базы данных (рис. 5), после чего инсталлятор выведет подробную информацию выбранной конфигурации (рис. 6). Если внешне процесс вам напоминает установку СУБД Oracle – не смущайтесь, во-первых, у меня такие же ассоциации, а во-вторых, технологией java (против разумного применения которой я ничего не имею) там не пахнет – всё происходит довольно быстро (рис. 7). По окончании инсталляции будет предложено запустить Database Manage (рис. 8), и с этим серьёзным предложением лучше согласиться.
Рисунок 3. Installation Manager – начало работы
Рисунок 4. Берём всё!
Рисунок 5. Первые пользователи
Рисунок 6. Всё готово! (ничего не напоминает?)
Рисунок 7. Процесс инсталляции
Рисунок 8. Опять перезагружаться...
Для использования графических и веб-инструментов их необходимо инсталлировать отдельно.
На особенностях архитектуры и организации СУБД остановимся как-нибудь в другой раз, а сейчас рассмотрим основные инструменты администрирования и разработки.
Основные компоненты MaxDB
На рис. 9 приведены основные компоненты MaxDB (состав которых определяется выбранным инсталляционным профилем). Это инструменты инсталляции и администрирования СУБД, средства работы с данными и программные интерфейсы. Ниже речь пойдёт об наиболее значимых из них.
Рисунок 9. Компоненты MaxDB
Администрирование (Database Manager)
Менеджер базы данных доступен в MaxDB в трёх ипостасях, выполняющих совершенно одинаковый набор функций.
Database Manager GUI (рис. 10) представляет собой удобный графический интерфейс, посредством которого можно осуществить любые действия, связанные с администрированием СУБД. В операционной системе MS Windows он вызывается из стартового меню («Start Programs MySQL MaxDB Database Manager») или из командной строки командой dbmgui. На его примере хорошо видны основные возможности администрирования. В числе задач, решаемых с его помощью, – создание и инициализация экземпляров баз данных (Instance, в терминах MaxDB), управление пользователями и операторами баз данных, установка прав доступа и параметров авторизации. С помощью DBM осуществляется запуск и остановка экземпляров БД, создание объектов БД, установка значений и индексов, управление сессиями. Кроме того – резервное копирование (рис. 11), восстановление данных из резервных копий, мониторинг, диагностика системы и многое другое. Даже обновление программ и системных таблиц удобно делать именно из этой среды.
Рисунок 10. Database Manager (GUI) – начало работы
Рисунок 11. Database Manager (GUI) – резервное копирование
Database Manager CLI, в отличие от своего графического коллеги, доступен во всех поддерживаемых операционных системах. Работа с DBMCLI может быть легко автоматизирована с помощью администраторских сценариев. Функции менеджера доступны также из приложений, написанных на Java, Python, Perl, PHP, через соответствующие программные интерфейсы. Полный список команд доступен во входящей в дистрибутив документации, можно также вызвать dbmcli с параметром help (рис. 12).
Рисунок 12. DBMCLI – работаем в консоли
Web DBM входит в инструментарий Web Tools, в официальной документации декларируется, что эти утилиты, позволяющие управлять сервером через обычный браузер, корректно работают в следующих конфигурациях (см. таблицу 3).
Таблица 3. Поддержка Web Tools для различных платформ и браузеров
Операционная система
|
Архитектура
|
Обозреватель
|
aix
|
ppc
|
Mozilla 1.1
|
linux
|
i386
|
Mozilla 1.1, Konqueror 3.0.3
|
solaris
|
sparc
|
Mozilla 1.1
|
tru64
|
alpha
|
Mozilla 1.1
|
hpux
|
hppa
|
Mozilla 1.1
|
win
|
i386, ia64
|
Internet Explorer 6.0, Mozilla 1.1
|
От себя могу добавить, что при использовании браузера Mozilla Firefox (1.0.4) проблем не возникало, а вот с Opera 7.0 были (это касается и остальных Web Tools).
Работа с данными (SQL Studio)
Следующие три инструмента предназначены для доступа к данным и каталогам экземпляров MaxDB с использованием SQL-запросов.
SQL Studio (GUI), имеющаяся только для ОС MS Windows, представляет собой удобную среду разработки, с графическим интерфейсом (рис. 13). SQL Studio позволяет оперировать данными, создавать объекты базы данных и управлять ими. SQL Studio (GUI) имеет окно навигации, средства просмотра таблиц и, разумеется, средства управления SQL-кодом. Такое сочетание различных функций в одной оболочке позволяет комфортно решать такие задачи, как создание таблиц, индексов, последовательностей, процедур и т. д., создание и исполнение SQL-запросов, непосредственное редактирование данных с помощью визуальных таблиц.
Рисунок 13. SQL Studio (GUI) – пишем запрос
Web SQL Studio основана на веб-интерфейсе, имеет сходные с графическим вариантом возможности по управлению данными. Меньший комфорт работы в ней компенсируется платформенной независимостью данного инструмента.
Преимущества консольного клиента SQLCLI заключаются в возможности использования его команд внешними сценариями, в том числе написанными на языках, имеющих интерфейс доступа к MaxDB.
Мониторинг (Database Analyzer)
Крайне полезный инструмент, Database Analyzer (рис. 14), представляет собой полноценную экспертную систему для мониторинга MaxDB. Сущность его работы заключается в снятии и оценке данных о состоянии системы, через определённые интервалы времени (задаваемые настройками). Полученные сведения дифференцируются по классам – служебная информация, предупреждения (три различных уровня) и сообщения об ошибках. Все полученные сообщения проходят стандартную обработку и дешифровку. Более того, Database Analyzer берёт на себя существенную часть анализа информации, предлагая в стандартных ситуациях типовое разрешение возникших затруднений.
Рисунок 14. Лог DBAnalyzer
Database Analyzer облегчает выявление ошибок в случае проблем с производительностью или пропускной способностью сервера MaxDB. Это помогает, например, выявить проблемы, относящиеся к конфигурации базы данных, синхронизации (блокировка, критические секции), оптимизации запросов базы данных (стратегия обработки данных, индексирование, оптимизация статистики) или конфигурации оборудования. Рекомендации Database Analyzer могут предложить создать добавочные индексы или повысить размер кэша БД.
Репликация (Synchronization Manager)
Основное назначение этого инструмента – различные виды репликации данных MaxDB. Синхронизировать мобильные или удалённые экземпляры баз данных с центральным сервером БД – достаточно типовая задача, и Synchronization Manager достаточно хорошо с ней справляется.
Репликация в MaxDB осуществляется централизованно, с выделением одного главного экземпляра БД, в котором записываются настройки репликации и произведённые изменения, которые затем объединяются в ходе очередной синхронизации.
Сервер сообщений Synchronization Manager – это выделенный экземпляр MaxDB, который не зависит от мастера и клиентов. Он буферизирует все изменения до того, как их прохождение завершится. Таким образом, Synchronization Manager отделяет работоспособность мастера и клиентов от времени синхронизации.
Узким местом является двунаправленная репликация – в этом случае существует вероятность возникновения конфликтов, которые необходимо разрешать вручную.
Импорт и экспорт данных (Loader)
Последнее, о чём я хотел рассказать в этой статье, это утилита Loader, позволяющая импортировать данные приложений из файлов данных в экземпляр базы данных, или экспортировать данные из MaxDB в файлы. Благодаря поддержке большого количества различных форматов и структур записей, Loader часто может заменять специализированные программы для загрузки и выгрузки данных. Благодаря прямому соединению с экземпляром MaxDB, Loader обычно помогает достичь существенного преимущества в производительности.
Более того, Loader поддерживает перенос любых данных из одного экземпляра MaxDB в другой, даже в том случае, когда исполняется на различных архитектурах и операционных системах. По выбору администратора могут быть загружены отдельные таблицы, все таблицы, относящиеся к определенному пользователю БД, или даже полное содержание базы данных.
В этой статье я ограничился обзором основных средств и возможностей MaxDB, совершенно не упомянув о таких вещах, как Standby/Hot Standby конфигурации, снимках (Snapshots), кэшировании, автоматическом распределении пространства и многом другом. Также я совершенно не касался вопросов архитектуры администрирования и разработки. Если вы проявите интерес, я продолжу рассказ о данной СУБД в дальнейшем.
Приложение
Краткая история SAP DB
11 мая 1999 года известный разработчик ERP-систем, немецкая компания SAP AG, объявила о приобретении у фирмы Software AG неисключительных прав на СУБД Adabas D. Мотивы этого действия были очевидны, основной (более 75%) платформой для EPR-системы R/3, выпускаемой компанией была СУБД Oracle, продукт ближайшего конкурента на рынке ERP-систем. Таким образом, SAP AG практически прямо финансировала Oracle Applications, продукт, конкурировавший с их собственной разработкой – R/3.
В 2000 году купленное решение оформилось в самостоятельный продукт – SAP DB и дальнейшие разработки, предлагаемые компанией (R/3 и открытая платформа mySAP) базировались на ней.
5 октября 2000 года SAP AG объявила выход СУБД под лицензией GPL, сделав её таким образом первой Open Source СУБД такого класса. Промышленная, многоплатформенная база данных, с открытым исходным кодом стала доступна разработчикам. Её версия, на тот момент была 7.2. За последующие года SAP DB стремительно развивалась, находя применение как самостоятельно, так и в качестве встроенной СУБД.
СУБД развивалась, обрастая новыми возможностями, утилитами и интерфейсами. Вокруг неё складывалось сообщество разработчиков. В начале 2003 года SAP AG пошла ещё дальше, объявив Open Source свою уникальную разработку – технологию LiveCache (объектно-ориентированное расширение реляционной системы баз данных SAP DB, предоставляющее возможность более легкого и эффективного отображения структур и потоков данных), что ещё больше привлекло к ней внимание.
В мае 2003 года SAP AG объявила о стратегическом партнёрстве с MySQL AB, и передачи последней СУБД (достигшей к тому времени версии 7.4) для разработки и продвижении решений на рынопк. С 31 марта 2004 года SAP полностью прекратила самостоятельное распространение SAB DB, ограничившись поддержкой своих старых партнёров.