Авторизируйтесь,
чтобы продолжить
Некоторые функции доступны только зарегистрированным пользователям
Неправильный логин или пароль
Добавить софт
Мой софт

Interbase/Firebird Development Studio - не проходите мимо

Автор: Виктор Деревянко
Опубликовано: 26.08.2008
Источник: SoftKey.info

Панель управления Interbase/Firebird Development Studio

Как известно, система управления базами данных (СУБД) Interbase и ее бесплатный клон Firebird весьма популярны в среде разработчиков. Причины просты. Interbase и Firebird обладают мощной функциональностью, весьма компактны и славятся высокой надежностью. Interbase и Firebird существуют уже много лет, для них разработано большое количество драйверов и библиотек, так что с базами данных Interbase и Firebird можно работать практически из любой среды разработки и на любом языке программирования.

В общем случае процесс работы с базой данных Interbase или Firebird выглядит следующим образом. Разработчик пишет скрипт, описывающий метаданные, то есть структуру требуемой базы данных, и выполняет этот скрипт на сервере. Сервер, соответственно, создает новую базу данных. Вся дальнейшая работа с базой ведется путем подачи серверу команд, опять же в виде скриптов. Для запроса данных используется язык SQL, для описания и модификации структуры базы применяется язык определения данных (Data Definition Language, DDL).

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

  • проектирование базы данных;
  • разработка DDL-скрипта с описанием метаданных базы данных;
  • разработка и отладка триггеров и хранимых процедур;
  • разработка SQL-запросов, вызываемых из клиентского приложения;
  • анализ и оптимизация производительности базы данных;
  • редактирование метаданных базы;
  • обновление базы, установленной у клиентов, до новой версии.

Первый шаг - это проектирование и разработка базы данных. Разработчик определяет структуру метаданных: из каких таблиц будет состоять база, как эти таблицы между собой связаны, какие ограничения нужно накладывать на данные, какой код должен выполняться при внесении изменений в таблицы (триггеры), какие запросы имеет смысл оформить в виде хранимых процедур и так далее. Следующий шаг - разработка и отладка SQL-запросов к базе данных. Часть SQL-запросов разработчик встраивает прямо в структуру базы данных в виде триггеров и хранимых процедур, другую часть - прямо в код клиентского приложения.

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

Приложение готово и передано клиентам? Начинается разработка следующей версии с новыми возможностями. Новые возможности обычно требуют изменения метаданных - и разработчик вновь возвращается к стадии проектирования базы. Конечно, одновременно с разработкой новой версии разработчик выполняет сопровождение текущих версий приложения: получив сообщение об ошибке, он исправляет ошибку и высылает клиентам исправление. Исправление может включать патч к базе данных, так что в итоге, к моменту выхода следующей версии приложения, базы данных, установленные у разных клиентов, имеют слегка различающуюся структуру. И разработчику приходится решать задачу корректного обновления каждой базы отдельно - ошибки на данной стадии весьма нежелательны, так как в базах уже содержится бесценная информация, и она ни в коем случае не должна пострадать.

Естественно, существует масса программного обеспечения, позволяющего облегчить жизнь разработчикам баз данных Interbase и Firebird на различных этапах цикла разработки. Программные продукты типа IBExpert позволяют удобным образом администрировать базу данных, просматривать и редактировать ее структуру. IBAnalyst дает возможность детальным образом анализировать статистику работы баз данных и их производительность. Утилита IB Database Comparer делает возможным синхронизацию метаданных двух баз - позволяет сравнивать между собой их скрипты и генерировать скрипт с изменениями, который можно использовать для приведения структуры одной базы в соответствие со структурой другой.

Разработчики Interbase/Firebird Development Studio поставили перед собой амбициозную цель - разработать удобную среду разработки баз данных Interbase и Firebird, позволяющую проводить полный цикл разработки базы. Получившийся программный продукт содержит все необходимые средства для проектирования, редактирования, администрирования, анализа производительности и синхронизации баз данных. Самое приятное, что разработчики постарались реализовать ряд уникальных возможностей, крайне необходимых на практике и зачастую просто не имеющих аналогов. Прежде всего это касается средств проектирования, редактирования и синхронизации данных.

Как известно, для проектирования структуры базы данных удобно применять диаграммы "сущность - связь", или ER-диаграммы. Такие диаграммы позволяют визуально просматривать структуру таблиц базы данных и устанавливать связи между ними. Существует ряд программных продуктов, позволяющих чертить такие диаграммы (например, Microsoft Visio), однако их применение при проектировании баз данных Interbase и Firebird весьма проблематично. Дело в том, что желательно иметь возможность достаточно просто переходить от диаграмм к скрипту, описывающему базу данных, и обратно. Если разработчик создал ER-диаграмму, то он должен иметь возможность легко сгенерировать соответствующий ей DDL-скрипт. Если разработчик внес изменения в скрипт, то автоматически должна быть скорректирована ER-диаграмма. Без такой возможности автоматической синхронизации исходные ER-диаграммы быстро устаревают и становятся бесполезными. А поскольку язык DDL для описания структуры базы данных различается практически у всех СУБД, то общие инструменты для построение ER-диаграмм не подходят - нужен инструмент, заточенный именно под Interbase и Firebird.

Interbase/Firebird Development Studio
ER-диаграмма в дизайнере студии

Компонент "Дизайнер" програмного продукта Interbase/Firebird Development Studio как раз и является таким инструментом. Он позволяет разработчикам оперировать ER-диаграммами в проекте точно так же, как они оперируют прочими метаданными базы данных - таблицами, триггерами, хранимыми процедурами и тому подобным. Разработчик может создавать сколько угодно ER-диаграмм, помещать на них таблицы и связывать таблицы между собой. Редактирование всех метаданных ведется исключительно через графический интерфейс. При этом студия позволяет автоматизировать выполнение множества мелких рутинных операций: именование метаданных, автоинкрементирование полей, создание внешних ключей, создание таблиц аудита и так далее.

Важнейшей особенностю "Дизайнера" Interbase/Firebird Development Studio является то, что всю информацию о структуре базы данных он хранит в отдельном файле проекта, так что проектирование структуры базы ведется отдельно от конкретных баз данных. Подсоединение к базе выполняется только по команде разработчика в двух случаях: когда требуется обновить структуру базы в соответствии с внесенными в проект изменениям и когда, наоборот, необходимо из базы заново считать ее структуру и обновить файл проекта. Таким образом, процесс обновления нескольких слегка различающихся по структуре баз не составляет проблемы - для каждой базы легко сгенерировать отдельный скрипт обновления.

Interbase/Firebird Development Studio
Система контроля версий в дизайнере студии

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

Interbase/Firebird Development Studio
Пример сравнения двух версий таблицы в системе контроля версий в дизайнере студии

Другой компонент Interbase/Firebird Development Studio - "Редактор базы данных" - позволяет подсоединиться к выбранной базе данных, просмотреть и отредактировать ее структуру и содержащиеся в ней данные. По функциональности он во многом напоминает IBExpert. Его главной особенностью является наличие средств рефакторинга, которые, в частности, позволяют:

  • автоматически переименовать все вхождения выделенного объекта;
  • найти ссылки на выбранный объект в базе данных;
  • переименовать ссылки; например, можно изменить название процедуры в теле сразу всех триггеров и процедур, в которых вызывается данная процедура;
  • добавить и удалить параметры процедур; эта операция автоматически изменяет код вызова во всех зависимых процедурах, подставляя в качестве значения нового параметра значение по умолчанию;
  • выделить процедуру (эта операция эквивалентна операции Extract Method в обычных языках программирования).

Рефакторинг выполняется в следующем порядке. Пользователь дает команду на внесение изменений. Редактор отображает список объектов, которые будут изменены. По команде пользователя редактор генерирует скрипт, содержащий необходимый код для обновления всех перечисленных объектов. Скрипт доступен для редактирования, так что, если где-то автоматически сгенерированного кода недостаточно, его легко подправить вручную. Далее пользователь запускает скрипт, изменения вносятся в базу. Всё. Те, кому приходилось на практике перетряхивать огромную базу данных и вручную вносить кучу мелких однотипных изменений, без сомнения, оценят такую возможность!

Необходимо отметить, что любые изменения в структуре базы данных в "Редакторе" проводятся с помощью графического интерфейса. Даже при редактировании хранимой процедуры редактирование каждого параметра процедуры выполняется в отдельном окне. Этим интерфейс "Редактора" существенно отличается от интерфейса IBExpert, в котором при выполнении аналогичной операции все же возможны два варианта редактирования: через графический интерфейс и путем прямого редактирования текста скрипта. В Interbase/Firebird Development Studio прямое редактирование метаданных тоже возможно, однако только в компоненте "Анализатор запросов".

Следует особо обратить внимание на две любопытные возможности, предоставляемые компонентами "Редактор базы данных" и "Анализатор запросов", - интеллектуальное автодополнение кода и динамическая подсветка ошибок при наборе SQL-запросов. Интеллектуальное дополнение кода - это умная реализация функции intellisense, когда при наборе текста запроса в качестве вариантов автодополнения ключевых слов запроса предлагаются только те слова, которые действительно могут быть использованы в данном месте запроса. Динамическая подсветка ошибок в тексте заключается в том, что система анализирует текст запроса прямо в процессе его набора и подчеркивает красным те места запроса, которые содержат ошибку. Обе функции прекрасно работают и весьма удобны на практике. На сайте разработчиков приведены примеры работы этих функций.

Interbase/Firebird Development Studio
Интерфейс компонента для сравнения структуры баз данных

Одним из самых интересных компонентов Interbase/Firebird Development Studio является компонент для сравнения баз данных. Компонент реализован очень качественно и имеет удобный и интуитивно понятный интерфейс, выполненный в виде мастера. На первом шаге вам предоставляется возможность выбрать сравниваемые базы данных и явно указать, что именно в базах данных должно сравниваться. На втором шаге вы можете просмотреть общую структуру внесенных изменений: какие объекты были удалены, добавлены, изменены. Причем здесь имеется чрезвычайно удобная возможность посмотреть, что именно было изменено в выбранном объекте. На следующем шаге вы указываете порядок сохранения данных из удаляемых таблиц и полей. Далее компонент генерирует скрипт, и вам предоставляется возможность его просмотреть, отредактировать и сохранить в файл. В итоге скрипт исполняется на сервере, и вы получаете две базы с синхронизированным набором метаданных. Применение даже одного только этого компонента Interbase/Firebird Development Studio способно сэкономить море времени многим разработчикам баз данных Interbase и Firebird.

Надо сказать, что функциональность Interbase/Firebird Development Studio отнюдь не ограничивается перечисленными возможностями. Вот далеко не полный перечень других интересных функций:

  • возможность конвертировать текст SQL-запроса в код Delphi и обратно (весьма пригодится тем разработчикам на Delphi, которые предпочитают хранить тексты SQL-запросов прямо в коде приложения);
  • возможность генерировать HTML-документацию для текущей структуры базы данных;
  • поддержка встроенного списка задач, связанных с конкретными объектами метаданных;
  • возможность вести коллекцию часто используемых SQL-запросов;
  • мониторинг работы выбранной базы данных;
  • экспорт данных из таблиц в файлы (поддерживается аж два десятка различных форматов);
  • возможность записи последовательность команд, изменяющих метаданные базы, в виде макроса.

В заключение хотелось бы сказать следующее. Программный продукт Interbase/Firebird Development Studio, без сомнения, очень интересен и обладает хорошо развитой функциональностью. Каждый разработчик баз данных Interbase и Firebird обязательно найдет в нем для себя ряд полезных, а порой просто бесценных возможностей. К тому же весьма приятной особенностью продукта является то, что для жителей России и СНГ он предоставляется абсолютно бесплатно. Из недостатков продукта можно отметить, пожалуй, лишь слабо развитую поддержку кодировки UTF-8. Однако весьма вероятно, что в будущем этому вопросу разработчики уделят больше внимания.



Статистика
Всего программ 28589
Скачиваний сегодня 44
Скачиваний вчера 1936