Не так давно для свободной СУБД Firebird вышел комплексный набор инструментов работы с базами данных. Поскольку Firebird активно применяется белорусскими разработчиками в самых разных проектах, думаю, будет интересно узнать подробнее об этой полезной сборке программ.
Немного о Firebird
Для тех из наших читателей, кто заинтересовался статьёй, но не сталкивался по работе с Firebird, я решил сделать небольшой экскурс в мир этого замечательного программного продукта.
Firebird - это система управления базами данных, славящаяся своей компактностью, бесплатностью и кросс-платформенностью. Firebird полностью поддерживает SQL 92 и основную часть SQL-99. Одно из главных преимуществ этой СУБД - версионная архитектура, которая даёт серверу возможность одновременно обрабатывать различные версии одной и той же записи. При этом каждая из транзакций работает со своей собственной версией данных, не мешая всем остальным. СУБД поддерживает хранимые процедуры, которые создаются с помощью специального языка PSQL, имеется специальный вид хранимых процедур, создающих выборки, для построения отчётов.
Поддерживается также очень актуальное для практически любого вида баз данных резервное копирование "на лету". То есть, Firebird может проводить копирование (в том числе инкрементальное) базы данных, не приостанавливая при этом работу с ней. Ещё одна интересная и, главное, полезная возможность этой СУБД - UDF (User Defined Functions). Так называются специальные внешние функции, которые могут подключаться к серверу с целью расширения функциональности самой СУБД.
Большой плюс Firebird - низкая требовательность к ресурсам компьютера, что, в общем-то, выделяет её среди множества других известных СУБД. Но у всякой медали есть и обратная сторона: Firebird хуже, чем более прожорливые СУБД, подходит для крупных систем. Хотя на форуме "Компьютерных вестей" меня и пытались убедить, что это не так... В общем, конечно же, всё упирается в то, кто что считает крупным проектом. На самом же деле, пока реальных недостатков у Firebird не так уж и много: это, во-первых, отсутствие кэша результатов запросов, а во-вторых, отсутствие полнотекстовых индексов для полнотекстового же поиска. Но и с этими небольшими нареканиями Firebird - прекрасная СУБД.
Что ж, на этом, думаю, стоит завершить небольшой рассказ о Firebird, дабы перейти к рассказу уже о Firebird Developer Pack.
Всё в одной коробке
Первое, о чём нужно оговориться: в отличие от самой СУБД, пакет инструментов разработчика вовсе не является бесплатным программным продуктом. Почему? Потому что в его состав входят некоторые платные программы. Стоить для одного разработчика весь пакет будет на доллар меньше, чем 800 "баксов". Что можно получить за эти деньги?
Ну, во-первых, в Firebird Developer Pack входит, конечно же, сама СУБД Firebird: SuperServer/Classic Server; стандартные утилиты gbak, gfix, gstat; утилита FSQL. Но это всё можно получить и бесплатно. Платные компоненты - это Database Workbench Pro for Firebird, TimeToBackup, IBReplicator, IBDataPump, FBTM, FBAnalyst, FBFirstAID, FBBackupSurgeon, FBUndelete. Помимо этих утилит, в комплект входят драйверы для работы с Firebird при помощи различных технологий, компоненты для создания отчётов FastReports, а также документация по всему этому богатству. Ознакомительная версия Firebird Developer Pack будет работать в течение 30 дней, а получить её можно по адресу www.ibphoenix.ru/index.php?id=300.
Названия этих инструментов, какими бы говорящими они не были, могут сказать о сравнительно немногом. Поэтому, полагаю, стоит рассмотреть каждую из предлагаемых в рамках Firebird Developer Pack программ в отдельности.
О Database Workbench я уже когда-то рассказывал на страницах нашей газеты ("КВ" №25'2007), поэтому только кратко упомяну основные возможности этой программы. Database Workbench - многофункциональный инструмент, который позволит как осуществить дизайн архитектуры базы данных, так и создать/восстановить резервные копии, отредактировать SQL-скрипты, раздать права пользователям (и, естественно, забрать их в случае необходимости), просмотреть логи сервера, отследить все обращающиеся к данному серверу подключения и многое-многое другое. В программе присутствуют такие полезные инструменты, как редактор BLOB-полей, многоуровневый буфер обмена, инструмент побайтового сравнения двух файлов, а также инструменты для сравнения, переноса данных и построения диаграмм для баз данных. Хочу ещё раз отметить, что Database Workbench - очень качественный комплексный инструмент, имеющий удобный интерфейс и позволяющий делать очень многое с базами данных Firebird.
Однако, хоть Database Workbench и хорош, но, как видите, это не единственный инструмент, входящий в состав Firebird Developer Pack. Следующий на очереди - IBAnalyst. Уже из самого названия видно, что предназначена эта программа для проведения анализа. Какого такого анализа? Анализа разнообразной статистики, касающейся базы данных, с целью выявления возможных проблем, например, таких, как фрагментирование таблиц. Информация программой собирается с помощью встроенных средств Firebird, Service API и консольной утилиты gstat, а затем визуализируется, причём можно сразу увидеть потенциально проблемные таблицы и индексы, поскольку они выделяются цветом. Программа выдаёт рекомендации, а разработчик уже волен решать, следовать им или оставить без внимания. В общем-то, полезность подобного инструмента очевидна, и разводить демагогию на её счёт, наверное, не стоит.
Дальше идёт инструмент под названием IBBackupSurgeon. Это средство для работы с повреждёнными файлами резервных копий баз данных Firebird. Программа работает с ними не при помощи API СУБД, а собственными низкоуровневыми средствами, и позволяет извлечь из повреждённого файла хранящиеся в нём таблицы, а затем перенести их содержимое в рабочую базу данных. Можно также извлекать из базы метаданные (триггеры, хранимые процедуры, вычислимые поля) - они могут представляться как в виде текстовых данных, так и в виде SQL-запроса. Поскольку повреждение резервных копий - вещь, к сожалению, не самая редкая, то и этот инструмент имеет очевидную полезность, которая, естественно, ограничена степенью повреждений backup'а БД.
Дальше идёт инструмент под названием IBFirstAID. Если предыдущая программа была нужна для работы с повреждёнными резервными копиями, то эта работает уже с самими базами данных - повреждёнными, естественно. По словам разработчиков, использование IBFirstAID совместно со штатными для Firebird средствами восстановления баз данных даёт примерно 80%-ю гарантию того, что базу данных удастся восстановить. В особо тяжёлых случаях можно даже отослать лог диагностики на адрес поддержки программы, и тогда вам скажут, можно восстановить вашу базу данных или же нет. В случае, если сам IBFirstAID не может справиться, они обещают попробовать сделать что-нибудь руками, но, правда, не обещают, что это будет бесплатно. На официальной странице программы (www.ib-aid.com/products/developer/recovery/IBFirstAID-FBFirstAID) можно найти список ошибок, которые потенциально решаются применением этого инструмента.
Что у нас там дальше? А дальше у нас идёт Interbase DataPump - утилита для переноса данных, работающая с базами данных Interbase и Firebird. Программа умеет работать с источниками данных ADO, BDE и ODBC и поддерживает, соответственно, все СУБД, для которых есть драйверы, включая такие известные программные продукты, как dBase, Paradox, Access, MSSQL, Sybase, Oracle, DB2. Разработчики программы обещают, что таблицы в итоговой базе будут размещены в надлежащем порядке с сохранением всех имеющихся между ними связей, а также учтёт все остальные элементы базы данных (триггеры, автоинкрементные поля, индексы и т.д.), что отразится на генерируемом в результате работы программы SQL-скрипте, который уже и будет, собственно, переносчиком данных из одной базы в другую. Помимо переноса данных из баз для других СУБД, Interbase DataPump поможет обновить те базы, которые работают со старыми версиями Interbase/Firebird, причём обращаться к ним она может и без посредников в виде ADO, BDE и ODBC и драйверов для БД. Ко всему прочему, для этой утилиты есть возможность получения исходных текстов, что должно понравиться определённой категории разработчиков.
Следующая на очереди утилита - IBTransaction Monitor. Как видно из названия, эта программа позволяет проводить мониторинг и анализ транзакций. С её помощью можно определить узкие места в разрабатываемой системе, узнать скорость выполнения транзакций, а также визуализировать все полученные в результате работы программы данные для того, чтобы их могло понять и начальство. Реальная полезность этой программы - огромная, хотя её описание в статье и заняло довольно мало места.
IBUndelete - это очередная утилита из числа тех, что входят в состав Firebird Developer Pack. Название у неё тоже, в общем-то, говорящее: она поможет восстановить случайно удалённые данные даже после совершения транзакции. В ней используются те же средства доступа к данным, что и в программах IBFirstAID и IBBackupSurgeon. Как говорят авторы программы, это единственная в своём роде утилита для восстановления удалённых данных из баз Interbase/Firebird, но, правда, конечно, никто не обещает, что она восстановит всё, что вам нужно. Для успешного восстановления рекомендуется сразу после удаления отключить всех пользователей от базы данных и не производить даже чтения данных из неё; скопировать файл, в котором она физически располагается, а уже на этом файле, чтобы не задерживать работу всей системы, предпринимать попытки восстановления нужных записей.
Последняя программа из Firebird Developer Pack имеет название Time To Backup. Это планировщик расписания для автоматического создания резервных копий баз данных Interbase/Firebird, позволяющий не только выполнить резервное копирование данных в заданное время, но и одновременно сжать резервную копию, протестировать её, проверить саму базу данных перед созданием резервной копии. Time To Backup умеет самостоятельно давать "правильные" имена создаваемым резервным копиям, что, хотя и довольно тривиально, но, в общем-то, довольно важно.
Теперь пару слов насчёт драйверов и библиотек для Firebird, позволяющих работать с этой СУБД из самых разных приложений. Подробно рассказывать не буду, приведу только их список: Firebird.NET + DDEX Visual Studio .NET provider, UIB for Delphi/C++Builder, JayBird JCA/JDBC driver for JDK 1.3, 1.4 and 1.5, Firebird ODBC driver, Perl:DBD::Interbase, KinterbaseDB for Python plus eGenix mx Base Package Driver lib for Ruby, IBPP Client API C++.
Подведём итоги
После такого подробного рассмотрения всех возможностей Firebird Developer Pack можно сказать о том, что этот набор - действительно полезная для разработчика вещь. Полезная, прежде всего, своей ценой, поскольку стоимость его значительно ниже, чем суммарная стоимость входящих в него компонентов. Разработчики - народ довольно-таки экономный, а менеджеры - ещё более экономный (ну, не на себе, конечно, а на разработчиках). Так что главная заслуга Firebird Developer Pack, как мне кажется, в предоставлении практически исчерпывающего набора утилит для создания и администрирования баз данных Firebird за приемлемую стоимость. Из минусов хотелось бы отметить отсутствие Linux-версии: хотя Firebird на этой платформе активно применяется, инструментов для неё мало, а жаль. Но, думаю, создание Linux-версии - вопрос времени, потому что, если есть потребность в инструментах для этой платформы, их обязательно кто-нибудь разработает.
Вадим СТАНКЕВИЧ,
dreamdrusch@tut.by
Комментарии
Перед тем как писать подобные опусы, неплохо было бы почитать документацию.