1 Введение
1.1 Глоссарий
Метаданные – данные, которые описывают объекты базы данных, а также позволяют упростить способ доступа к ним и управления ими. Метаданные включают определения записей, элементов данных, а также другие объекты, представляющие интерес для пользователей или необходимые для работы СУБД.
DDL – описательный язык, подмножество языка SQL. Позволяет администратору БД или пользователю описать и именовать сущности и атрибуты, необходимые для работы некоторого приложения. Кроме того, DDL позволяет описывать связи, имеющиеся между различными сущностями, ограничения целостности и защиты.
1.2 Описание предметной области
Конец XX века стал временем бурного роста популярности различных СУБД и их распространении среди различных компаний и организаций. Однако, так как со временем компания не остаётся неизменной, меняются и требования, предъявляемые ей к своей БД. Эти требования, в частности, затрагивают структуру (схему) БД. Так же компании может потребоваться перейти от использования одной БД к другой, так что возникла необходимость в создании программ, которые будут автоматически изменять схему БД по запросу пользователя. Существуют разные способы хранения схем БД, один из них – с помощью набора операторов SQL DDL, в той или иной мере поддерживается всеми производителями СУБД. Преобразования в схеме БД можно осуществлять, пользуясь средствами SQL, в той или иной форме поддерживаемом производителями СУБД, но это практически невозможно по ряду причин: каждый производитель предлагает свой синтаксис SQL; при достаточно больших и сложных схемах БД определить количество и порядок действий становится очень сложно; это требует специальной подготовки, и не каждая компания может экономически позволить себе такого специалиста. В свою очередь, такие программы кроме устранения этих недостатков позволяют производителям ПО использующим БД просто присылать программу для исполнения вместо того, чтобы пересоздавать БД заново при выпуске очередной версии, а также избежать при этом потери уже накопленных данных, которые обычно представляют большую коммерческую ценность. При разработке таких программ можно привязываться к конкретным СУБД, но это сильно снижает гибкость таких программ. Также в последние годы стало набирать силу Open Source движение, которое позволяет расширять и адаптировать программы самому пользователю для его конкретной ситуации, так что целью данного проекта является построение не зависящей от конкретной СУБД легко расширяемой программы для автоматического изменения схемы БД.
1.3 Неформальная постановка задачи
Таким образом, необходимо спроектировать и реализовать приложение, позволяющее:
• Принимать через интерфейс командной строки файлы, содержащие схемы исходной и требуемой БД;
• Выдавать список операторов DDL, преобразующих исходную схему в требуемую схему.
В качестве средства разработки данного проекта выбран язык Perl. Данный выбор обусловлен тем, что данный проект предназначен, прежде всего, для Open Source систем и Web приложений. Язык Perl предоставляет огромные возможности для разработчиков в этой области.
Рис 1. Диаграмма вариантов использования.
1.4 Обзор существующих методов решения
В рамках написания данной работы автором было рассмотрено несколько уже существующих решений как коммерческих, так и имеющих Open Source лицензию.
1.4.1 Коммерческие продукты
Их можно разбить на два подкласса: ориентированные на одну конкретную СУБД или на несколько СУБД. К плюсам первых можно отнести достаточно полную функциональность по изменению схемы БД, а также визуальный интерфейс, к минусам – высокую цену, а также обычно невозможность расширения на несколько СУБД. Главный минус второй категории – отсутствие полноты решения проблемы, а также цена их на порядок выше цены предыдущих. Наиболее мощный представитель этой категории – программа Full Convert Enterprise Edition ¬¬– плохо работает с составными ключами.
1.4.2 Open Source продукты
В этой части ПО сейчас нет систем, полностью решающих данную проблему, в частности решающих проблему взаимодействия с внешними ключами (foreign key). В этой области можно выделить программы MySQL::Diff, Sync Database.
2 Требования к окружению
2.1 Требования к аппаратному обеспечению
Требования к аппаратному
|