Словарь данных
Словарь данных — это совокупность метаданных или справочных данных, необходимых для проектирования реляционной базы данных. Словарь данных обладает особой стратегической важностью, поскольку служит общим понятийным аппаратом организации. В нём описываются такие ключевые данные, как клиенты, номенклатура продукции и услуг, справочники и другие информационные объекты. Таким образом, словарь данных является основным референтом предприятия, на который опираются принимаемые решения. Обычно он представлен в виде таблицы с четырьмя столбцами: названием, кодом, типом данных и комментариями.
Требования
Словарь данных должен соответствовать следующим требованиям:
- Все наименования должны быть однозначными и неделимыми.
- Не допускается наличие омонимов и синонимов.
- Данные группируются по сущностям.
- Идентификаторы должны быть полностью определены.
- Комментарии должны быть релевантными.
Словарь данных, или репозиторий данных, согласно определению из IBM Dictionary — это «централизованное хранилище информации о данных, их значениях, взаимосвязях с другими данными, происхождении, целях использования и формате»[1]. В определении компании Oracle словарь данных — это совокупность таблиц с метаданными. Термин может иметь несколько схожих значений, связанных с базами данных и системами управления базами данных (СУБД):
- Документ, описывающий базу данных или совокупность баз данных;
- Программный компонент СУБД, необходимый для описания её структуры;
- Часть промежуточного ПО (middleware), расширяющая или заменяющая встроенный словарь данных СУБД.
Документация
Термины «словарь данных» и «репозиторий данных» чаще обозначают универсальный программный инструмент, а не каталог. Каталог жёстко связан с программным обеспечением СУБД. Он предоставляет хранящуюся информацию пользователю и администратору базы данных (DBA), но в основном его используют внутренние программные модули самой СУБД: компиляторы DDL и DML, оптимизатор запросов, процессор транзакций, генераторы отчётов и обработчики ограничений.
В то же время словарь данных — это структура данных, содержащая метаданные, то есть структурированные данные о данных.
Отдельная прикладная программа-словари данных или репозиторий данных может взаимодействовать с модулями приложений СУБД, но чаще используется разработчиками, пользователями и администраторами информационных систем для управления информационными ресурсами. Такие системы содержат сведения о конфигурации аппаратного и программного обеспечения, документации, приложениях, пользователях и другую информацию для администрирования[2].
Если системой словаря данных пользуются только разработчики, пользователи и администраторы, а не сама СУБД, такой словарь называют «пассивным»; если же он интегрирован с СУБД, то — «активным» или просто словарём данных.
В пассивном словаре данные обновляются вручную и независимо от изменений структуры базы данных. В активном словаре сначала изменяют сам словарь, после чего соответствующие изменения автоматически вносятся в структуру базы данных.
Пользователи базы данных и разработчики приложений получают пользу от авторитетного словаря данных, который каталогизирует структуру, содержимое и соглашения одной или нескольких баз данных[3]. Обычно он включает имена и описания различных таблиц (записей, сущностей), их содержимого (полей), а также такие параметры, как тип и длина каждого элемента данных.
Ещё одним важным элементом словаря данных являются сведения о связях между таблицами. Это отражается, например, в ER-диаграммах или через зоны дескрипторов SQL, указывающие, в каком объёме участвует таблица в структуре БД.
В активных словарях данных могут быть реализованы ограничения на базовые данные. Например, задан определённый диапазон значений для числовых полей или осуществляется контроль участия записей таблиц во взаимосвязях с другими сущностями.
Кроме того, в распределённых СУБД словарь данных может содержать сведения о размещении: где физически хранятся те или иные таблицы.
Словарь данных содержит типы записей (таблиц), создаваемых в БД посредством командных файлов, генерируемых системой и соответствующих каждой поддерживаемой СУБД. В Oracle предусмотрен целый список специальных представлений для пользователя «sys», что позволяет находить нужную информацию. Командные файлы содержат SQL-запросы вида CREATE TABLE, CREATE UNIQUE INDEX, ALTER TABLE (для поддержки ссылочной целостности) и др., с использованием синтаксиса, характерного для конкретной СУБД.
Универсального стандарта детализации такого документа не существует.
Промежуточное ПО
При разработке прикладных баз данных может быть полезно внедрить дополнительный уровень — программное обеспечение-словарь данных, то есть слой middleware, взаимодействующий с базовым, «низкоуровневым» словарём данных СУБД. Высокоуровневый словарь данных обеспечивает дополнительные функции и большую гибкость по сравнению со встроенным, основная цель которого — обеспечение базовой работы СУБД, а не всех потребностей приложений. Например, такой словарь может предоставлять альтернативные модели «сущность—связь», адаптированные для решения разных задач в одной общем БД[4]. Доработки словаря данных также способствуют оптимизации запросов в распределённых базах данных[5]. Кроме того, административные функции автоматизируются с помощью инструментов перестройки данных, тесно интегрированных с активным словарём данных.
Многие фреймворки для ускоренной разработки приложений включают функции высокоуровневого словаря данных, что позволяет значительно сократить программирование при создании меню, форм, отчётов и других компонентов БД, включая саму БД. Например, PHPLens предоставляет библиотеку для PHP для автоматизации создания таблиц, индексов и внешних ключей с обеспечением портируемости между несколькими СУБД[6]. Аналогичный словарь данных на PHP, компонент инструментария RADICORE, генерирует объекты программы, скрипты и SQL-код для меню и форм с поддержкой валидации данных и сложных соединений[7]. Для ASP.NET словарь данных Base One International реализует функции, унифицирующие создание баз данных, валидацию, ускоряющие доступ (за счёт кеша и индексации), безопасность и расширения типов данных[8]. В ПО Visual DataFlex реализована возможность использовать словари данных как файловые классы, формирующие промежуточный уровень между пользовательским интерфейсом и БД. Это позволяет стандартизовать правила обеспечения целостности и бизнес-логику во всех связанных приложениях[9].
Примеры для платформ
В среде IBM System i разработчики используют спецификации описания данных (англ. DDS) для задания атрибутов данных в описаниях внешних файлов, используемых соответствующими приложениями[10]. В Oracle таблица sys.ts$ содержит сведения обо всех таблицах базы данных. Эта таблица создаётся как часть словаря данных при инициализации базы данных Oracle[11].
Содержание словаря данных
Любой каталог данных включает ряд типовых модулей и стандартных функций[12]:
- Метасловарь, позволяющий описывать каждую используемую или генерируемую предприятием единицу данных и визуализировать их взаимосвязи.
- Ясная система меток, группирующая наборы данных по категориям с помощью тегов или ключевых слов.
- Поисковый механизм, позволяющий находить нужную информацию по названию, тегу, ключевому слову и др.
- Управление доступом и правами, защищающее права на изменение записей каталога. Возможна фильтрация доступа по различным параметрам (роль, уровень иерархии и др.) с индивидуальной настройкой прав на просмотр и изменение.
Использование словаря данных
Словарь данных позволяет:
- демократизировать доступ к данным,
- обеспечить достоверность и актуальность информации,
- контролировать качество данных,
- эффективно сотрудничать благодаря единому взгляду на данные внутри организации,
- упростить принятие решений на основе интерпретируемых и применимых сведений.
Каталогизация данных помогает превратить разрозненную информацию в инструмент для принятия решений.
Примечания
Литература
- Yourdon, Structured Analysis Wiki, Data Dictionaries (Web archive)