Для чего используется словарь данных
Словарь данных
Словарь данных, описанный в Словаре вычислений от IBM (IBM Dictionary of Computing) как «центральное хранилище информации о данных, такой как значение, взаимосвязи с другими данными, их иcточник, применение и формат.» [1] Термин может иметь одно из близких по смыслу значений, относясь к базам данных и СУБД:
Содержание
Документация словаря данных
Пользователи баз данных и разработчики приложений могут получить выгоду от единого стандартизированного документа словаря данных, который перечисляет организацию, содержимое, соглашения по одной или более баз данных. [2] Это обычно включает в себя имена и описания различных таблиц и полей в каждой базе данных, дополнительные детали такие, как тип и длина каждого элемента данных. Не существует универсального стандарта, описывающего уровень детализации в подобном документе, но есть основное описание метаданных о структуре базы данных, а не о самих данных. Документ словаря данных также может включать в себя дополнительную информацию, описывающую кодирование элементов данных. Одним из преимуществ хорошо спроектированного документа словаря данных является то, что он помогает упорядочить структуру базы данных или большого комплекса распределенных баз данных. [3]
Словарь данных как промежуточное ПО
В области создания приложений для баз данных, может быть полезным добавление дополнительного программного слоя словаря данных, то есть подпрограммного ПО, который будет взаимодействовать с нижележащим словарем данных СУБД. Такой «высокоуровневый» словарь данных может обеспечить дополнительные возможности и степень гибкости, который обойдет ограничения естественного «низкоуровневого» словаря данных, чье главное назначение заключается в поддержке основных функций СУБД, а не требований обычных приложений. Например, высокоуровневый словарь данных может реализовывать альтернативные ER-модели данных, приспособленных под различные приложения, которые совместно используют распространенные базы данных. [4] Расширения словаря данных также могут помочь и в области оптимизации запросов в распределенных базах данных. [5]
Что такое словарь данных?
Словарь данных ( Data Dictionary) – сервис, который предоставляет описание данных в бизнес-терминах, и дополнительно может содержать другие сведения о данных, например информацию о типах форматов данных, детализацию структур данных и нормативно-справочной информации, ограничений по безопасности. Таким образом, словарь данных является одним из способов ведения метаданных.
Сейчас словарь данных встроен практически в каждый инструмент хранения, обработки или анализа данных. Проблема заключается в том, что крупные компании имеют в своем активе целый набор таких инструментов и они между собой не связаны в части словарей данных.
Для того, чтобы не вести локальные словари данных, на уровне всей организации или как минимум единого хранилища создается Каталог данных (иногда его называют Картой данных или Базой знаний о данных). Каталог данных объединяет между собой функции словаря данных и бизнес-глоссария. Бизнес-глоссарий (Business Glossary), отличается тем, что он главным образом сфокусирован на унификации понятийного аппарата внутри организации, т.е. является базой знаний и фиксирует используемые подразделениями термины и определения.
Словари данных связаны с хранилищем данных (Data Warehouses) или другими информационными ресурсами, описывая возможности их использования. Структура словаря данных, как правило, берет свое начало из логической модели данных информационных ресурсов. Словарь данных помогает организовать ведение метаданных с более высоким качеством по сравнению с неунифицированным документированием, благодаря дисциплинированному и систематическому подходу к управлению определениями и семантикой (смысловым содержанием) информационного пространства организации.
Несмотря на то, что инструменты типа ”Словарь данных” имеют различный вид и формат, все они предоставляют компоненты и функции, необходимые для создания соответствующих описаний реляционных баз данных. Международная организация по стандартизации (ISO) выделяет 3 категории для элементов словаря данных:
Прочие определения “словаря данных”:
Словари данных используются в бизнесе для того, чтобы:
Для чего используется словарь данных
Временные сегменты используют пространство в файлах базы данных, чтобы создать временную рабочую область для промежуточных стадий обработки SQL и для больших операций сортировки. Oracle создает временные сегменты в процессе работы и они автоматически удаляются, когда фоновый процесс SMON больше в них не нуждается. Если требуется только небольшая рабочая область, Oracle не создает временного сегмента, но вместо этого как временная рабочая область используется часть памяти PGA (глобальная область программы). Администратор базы данных может определять, в каких табличных пространствах будут располагаться временные сегменты для различных пользователей.
Фундаментальное различие между RDBMS и другими БД и файловыми системами заключается в способе доступа к данным. RDBMS позволяет обращаться к физическим данным в более абстрактной, логической форме, обеспечивая легкость и гибкость при разработке кода приложения. Программы, использующие RDBMS, обращаются к данным через «машину» базы данных без непосредственной зависимости от фактического источника данных, изолируя приложение от деталей «нижележащих» физических структур данных. RDBMS сама заботится о том, где поле хранится в базе данных. Такая независимость данных возможна благодаря словарю данных RDBMS, который хранит метаданные (данные о данных) для всех объектов, расположенных в базе данных.
Информация в словаре данных предназначена для подтверждения существования объектов, обеспечения доступа к ним и описания фактического физического расположения в памяти.
RDBMS не только обеспечивает размещение данных, но также определяет оптимальный путь доступа для хранения или выборки данных. Oracle использует сложные алгоритмы, которые позволяют выбирать информацию с наибольшей производительностью, исходя из критерия скорейшего получения первых строк результата или критерия минимального времени выполнения запроса в целом.
Представления словаря данных
Словарь данных содержит информацию об объектах базы данных, пользователях и событиях. К этой информации можно обратиться с помощью представления словаря данных:
Системные привилегии, выданные текущему пользователю.
Динамические таблицы производительности, доступные пользователю SYS, позволяют управлять производительностью работы сервера СУБД.
Список сцепленных строк таблицы или кластера, использованного в команде ANALYZE.
Столбец | Тип данных |
OWNER-NAME | VARCHAR2 |
TABLE-NAME | VARCHAR2 |
CLUSTER-NAME | VARCHAR2 |
HEAD_ROWID | ROWID |
TIMESTAMP | DATE |
Эта таблица используется для определения строк, нарушающих правила целостности, если правила целостности включены.
Столбец | Тип данных |
HEAD.ROWID | ROWID |
OWNER | VARCHAR2 |
TABLE-NAME | VARCHAR2 |
CONSTRAINT | VARCHAR2 |
Эта таблица может заполняться командой EXPLAIN PLAN для того, чтобы описать план выполнения оператора SQL.
Столбец | Тип данных |
STATEMENT.ID | VARCHAR2 |
TIMESTAMP | DATE |
REMARKS | VARCHAR2 |
OPERATION | VARCHAR2 |
OPTIONS | VARCHAR |
OBJECT_NODE | VARCHAR2 |
OBJECT_OWNER | VARCHAR2 |
OBJECT.NAME | VARCHAR |
OBJECT_INSTANCE | NUMBER |
OBJECT_TYPE | VARCHAR2 |
SEARCH_COLUMNS | NUMBER |
ID | NUMBER |
PARENT.ID | NUMBER |
POSITION | NUMBER |
OTHER | LONG |
2.3.3 Защита данных.
Транзакции, фиксация и откат. Изменения в базе данных не сохраняются, пока пользователь явно не укажет, что результаты вставки, модификации и удаления должны быть зафиксированы окончательно. Вплоть до этого момента изменения находятся в отложенном состоянии, и какие-либо сбои, подобные аварийному отказу машины, аннулируют изменения.
Все результаты транзакции или целиком сохраняются (фиксируются), или.целиком отменяются (откатываются назад). Фиксация транзакции делает изменения окончательными, занося их в базу данных, и после того как транзакция фиксируется, изменения не могут быть отменены. Откат отменяет все вставки, модификации и удаления, сделанные в транзакции; после отката транзакции ее изменения не могут быть зафиксированы. Процесс фиксации транзакции подразумевает запись изменений, занесенных в журнальный кэш SGA, в оперативные журнальные файлы на диске. Если этот дисковый ввод/вывод успешен, приложение получает сообщение об успешной фиксации транзакции. (Текст сообшения изменяется в зависимости от инструментального средства.) Фоновый процесс DBWR может записывать блоки актуальных данных Oracle в буферный кэш SGA базы данных позже. В случае сбоя системы Oracle может автоматически повторить изменения из журнальных файлов, даже если блоки данных Oracle не были перед сбоем записаны в файлы базы данных.
Oracle также реализует идею отката на уровне оператора. Если произойдет единственный сбой при выполнении оператора, весь оператор завершится неудачей. Если оператор терпит неудачу в пределах транзакции, остальные операторы транзакции будут находиться в отложенном состоянии и должны либо фиксироваться, либо откатываться.
Все блокировки, захваченные транзакцией, автоматически освобождаются, когда транзакция фиксируется или откатывается, или когда фоновый процесс PMON отменяет транзакцию. Кроме того, другие ресурсы системы (такие как сегменты отката) освобождаются для использования другими транзакциями.
Целостность данных связана с определением правил проверки достоверности данных гарантирующих, что недействительные данные не попадут в ваши таблицы. Oracle позволяет определять и хранить эти правила для объектов базы данных, которых они касаются, таким образом, чтобы кодировать их только однажды. При этом они активируются всякий раз, когда какой-либо вид изменения проводится в таблице, независимо от того, какая программа выполняет вставки, модификации или удаления. Этот контроль осуществляется в форме ограничений целостности и триггеров базы данных.
Ограничения целостности устанавливают бизнес-правила на уровне базы данных, определяя набор проверок для таблиц системы, Эти проверки автоматически выполняются всякий раз, когда вызываются оператор вставки, модификации или удаления данных в таблице. Если какие-либо ограничения нарушены, операторы отменяются. Другие операторы транзакции остаются в отложенном состоянии и могут фиксироваться или отменяться согласно логике приложения.
2.3.4 Привилегии системного уровня
Каждый пользователь Oracle, определяемый в базе данных, может иметь одну или несколько из более чем 80 привилегий системного уровня. Эти привилегии очень тонко управляют правами выполнения команд SQL. Администратор базы данных назначает системные привилегии или непосредственно пользовательским учетным разделам Oracle, или ролям. Роли затем назначаются учетным разделам Oracle.
Например, прежде чем создать триггер для таблицы (даже если вы владелец таблицы как пользователь Oracle), нужно иметь системную привилегию, называемую CREATE TRIGGER, назначенную вашему учетному разделу пользователя Oracle, или роли, присвоенной учетному разделу.
Например, если пользователь, который владеет таблицей, желает, чтобы другой пользователя вставлял и выбирал строки из его таблицы (но не модифицировал или удалял), он предоставляет другому пользователю привилегии (объектного уровня) отбора и вставки для этой таблицы. Вы можете предоставлять привилегии объектного уровня непосредственно пользователям или ролям, которые затем назначаются учетным разделам пользователей Oracle.
Привилегии выдаются пользователям и ролям командой GRANT и отбираются командой REVOKE. Все привелегии можно разделить на системные и объектные. Системные привилегии относятся ко всему классу объектов, а объектные относятся к заданным объектам.
Организация словаря данных в предметно-ориентированных программных оболочках.
«Словарь данных представляет собой определенным образом организованный список всех элементов данных системы с их точными определениями, что дает возможность различным категориям пользователей (от системного аналитика до программиста) иметь общее понимание всех входных и выходных потоков и компонентов хранилищ. »
Г.Н. Калянов
Создание программных комплексов в современном мире информационных технологий требует все большего участия не программирующих пользователей, которые хорошо знают предметную область. Для этого необходим определенный инструментарий, а также описание данных системы, понятное и доступное не только для системных аналитиков и программистов, но и для пользователей. Один из вариантов решения этого вопроса предлагается в данной статье.
Предметно-ориентированная программная оболочка
При проектировании системы необходимо учитывать факторы, связанные с особенностями ее функционирования в конкретной прикладной среде, такие, как класс задач, для которого предназначается система, квалификация и уровень подготовки пользователя, потенциальные возможности системы, адаптация к другим предметным областям, перспективы развития данной предметной области, среды функционирования системы, вопросы ее коммерческого использования. Эти факторы, наряду с возможностями заказчика в финансировании разработки, в обеспечении техникой, инструментальным программным обеспечением, с возможностями программистского коллектива, определяют выбор средств разработки (языка программирования, СУБД).
Разумно предположить, что в процессе разработки приложений будут участвовать как пользователи, так и программисты. Ввиду того, что не все задачи можно решить методом раскрутки на уровне пользователя, система должна предусматривать возможность расширения и на уровне программиста (разработчика).
Уточним понятие расширяемости. В нашем случае это означает, что система имеет ядро, которое решает прикладные базовые задачи в математической и специальной постановке и способно включать новые функции и приложения. Способ (язык) расширения предполагает непосредственно участие пользователя путем формулировки им прикладной задачи. Кроме того, система предполагает расширение ядра на уровне программиста для того, чтобы реализовать достаточно сложные алгоритмы обработки данных. Система предъявляет относительно невысокие требования к квалификации программиста, что позволит успешно работать с ней в организациях, не способных содержать штат высокооплачиваемых программистов.
Пользователю должна быть представлена информация о функциях и процедурах системы, для возможности профессиональной обработки данных. Таким образом, необходимо создать многоуровневый словарь процедур и функций, в целях упрощения их применения пользователем. Пользователь должен иметь возможность настроить свое рабочее место по своему вкусу, поэтому интерфейс системы должен модифицироваться путем добавления нужных и удаления ненужных ему пунктов иерархического меню, процедур и функций. Понятие «расширяемая» для разработчика программных приложений носит куда более широкий характер. В системе реализуется возможность добавлять собственные библиотеки процедур и функций, программные модули и собственно программные приложения.
Пользователю необходимо свободно общаться с доступными ему данными системы. Это достаточно сложная задача. В данной системе ее предлагается решить с помощью многоуровневых словарей данных, которые в зависимости от уровня доступа пользователя будут наглядно представлять ему доступную структуру данных, тем самым упрощая составление запросов и отчетов. Пользователь может составлять свои таблицы, включая их, по своему желанию, для общего пользования, при этом словарь данных будет пополняться.
Определение элементов данных в словаре
Для того, чтобы словарь данных отвечал задаче проектирования, его элементы должны содержать описание потоков, хранилищ, композиции комплексных данных (расчленяющихся на элементарные), движущихся по потокам, и групповых данных хранилищ, описание деталей отношений между хранилищами.
Но конечного пользователя эти проблемы касаются мало, в частности потому, что он либо не принимает вовсе, либо принимает ограниченное участие в разработке ядра системы. В силу того, что пользователь сложной системы работает лишь с ее частью (подсистемой), его в основном интересуют данные, связанные непосредственно с участком работы, за который он отвечает и который обычно имеет локальный характер. Для привлечения пользователя к разработке в части извлечения из него информации о предметной области необходимо, чтобы словарь предметно-ориентированной программной оболочки был структурирован по автоматизированным рабочим местам пользователя (АРМ) и администратора системы. Но это не исключает существования общего словаря данных, здесь лишь отмечается особенность подхода к проблеме его создания в предметно-ориентированной оболочке.
Перейдем теперь к классификации данных с точки зрения доступа к ним пользователя (администратора) системы. Заметим, что идеология предметно-ориентированной оболочки допускает отсутствие описания (отображения) некоторых данных в словаре системы. В основном это данные, связанные с настройкой и жизнеобеспечением системы, защитой от несанкционированного доступа и т.п. Разработчик приложений в этом случае сможет получить необходимую дополнительную информацию особо.
Исходя из концепции предметно-ориентированной оболочки, словарь должен содержать описание структуры данных, определенной разработчиком (поставляемыми с системой) и определенной пользователем, характерной только для конкретного АРМа. Некоторые элементы пользовательской структуры в силу локальности могут не включаться в общий словарь данных.
Введем некоторые определения и обозначения, которые будут использоваться в дальнейшем изложении, а также примем некоторые ограничения, которые служат для упрощения общепринятой концепции словаря данных. Это необходимо для построения модели словаря данных предметно-ориентированной оболочки.
Хранилищем будем называть файл, предназначенный для хранения данных системы, имеющих стандартный формат таблицы, характеризующийся постоянной структурой. Формат записи: «имя хранилища».
Атрибутом хранилища назовем атрибут таблицы (поле). Формат записи: «имя хранилища».»название поля».
Дугой будем называть направленную связь между двумя хранилищами. Формат записи: «имя хранилища»-«имя хранилища».
Атрибуты, включаемые в словарь, подразделяются на первичные и вторичные.
Под первичными данными будем понимать 1) данные хранилищ, полученные в результате первого преобразования внешних входных данных системы в данные формата хранилищ; 2) данные хранилищ, вводимые пользователем вручную.
Под нулевым набором D0 будем понимать первичные данные. Если есть (n-1)-й набор Dn-1, то Dn получается из него применением n-го процесса.
Рис.1.
Обозначим атрибуты хранилищ как узлы графа, тогда получим ациклический граф атрибутов (см.рис. 2). Это объясняется тем, что замкнутый процесс перехода атрибута dikjn в самого себя недопустим. Полученный граф назовем А-графом.
Рис.2.
Будем классифицировать первичные и вторичные данные и разобьем их по группам. Данные, которые могут быть только первичными (входными) подразделяются на
1) группу внешних данных;
Данные второй группы являются базовыми для некоторых операций, поэтому их удобно выделить в особую группу. Пользовательский доступ к ним следует ограничить. Все три группы описываются в словаре системы.
Данные, которые могут быть как первичными, так и вторичными (переходные) имеет смысл заносить в словарь, если они формируются в виде файлов-таблиц.
Исходя из предложенной концепции построения словаря данных видно, что словарь предметно-ориентированной оболочки может не содержать описания всех потоков и хранилищ данных, т.е. с точки зрения классического определения словаря информация в нем будет не полной. Построение по такому словарю системы обычными методами невозможно, но основное его предназначение в том, чтобы облегчить работу пользователя со своим АРМом и помочь ему создать свои запросы и приложения. С другой стороны, словарь, отражающий точку зрения пользователя на предметную область, может служить важным источником знаний о ней в процессе разработки и сопровождения системы.
Для того, чтобы пользователь мог работать со словарем, необходим доступный ему по интерфейсу и множеству используемых понятий инструментарий.
Атрибут | Название атрибута | Тип | Размер |
Cod_db | Идентификатор хранилища | N | 5 |
nam_db | Название хранилища | C | 50 |
typ_db | Группа хранилища | N | 1 |
Индексы таблицы: | |||
Название | Выражение | Связанные таблицы | |
Cod_db | Список атрибутов хранилищ | Cod_db | |
nam_db | Граф хранилищ | nam_db |
Построение реляционной модели словаря предметно-ориентированной оболочки
Для удобства организации пользовательского интерфейса словаря, следует создать таблицу, содержащую список хранилищ системы. В соответствии с распределением хранилищ по группам, кроме обычных атрибутов для подобных таблиц, необходимо хранить признак разбиения.
Атрибут | Название атрибута | Тип | Размер |
Cod_db | Идентификатор хранилища | N | 5 |
Cod_a | Идентификатор атрибута | N | 5 |
name_pole | Имя атрибута | C | 10 |
nam_a | Название атрибута | C | 50 |
typ_а | Группа атрибута | N | 1 |
type_pole | Тип атрибута | C | 1 |
len_pole | Размер атрибута | N | 3 |
len_dec | Размер десятичной части | N | 3 |
Индексы таблицы: | Название | Выражение | Связанные таблицы |
Cod_db | Cod_db | Список хранилищ | name_pole |
Cod_a | Cod_a | Сеть атрибутов | name_pole |
Для хранения атрибутов хранилищ необходимо создать специальную таблицу, которая будет связана с первой таблицей «Список хранилищ» по полю «Идентификатор хранилища». Каждая запись таблицы «Список атрибутов хранилищ» должна содержать код хранилища для каждого атрибута, (таким образом реализуется связь типа «один ко многим»), а также полную информацию о каждом атрибуте хранилища.
Атрибут | Название атрибута | Тип | Размер |
Cod_i_db | Идентификатор первичного хранилища | N | 5 |
Cod_o_db | Идентификатор вторичного хранилища | N | 5 |
Индексы таблицы: | Название | Выражение | Связанные таблицы |
Cod_i_db | Cod_i_db | Список хранилищ | (cod_db) |
Cod_o_db | Cod_o_db | Список хранилищ | (cod_db) |
Для описания потоков данных на уровне хранилищ, необходимо хранить информацию, описывающую граф (см. рис. 1), т.е. таблица «Граф хранилищ» должна иметь ссылку на таблицу «Список хранилищ», а также содержать информацию о направлении потока данных. Исходя из структуры таблицы 1, достаточно хранить код первичного и вторичного хранилищ.
Замечание
Подробное описание построения индексов и обоснование этого построения будет дано при введении операций над словарем.
Атрибут | Название атрибута | Тип | Размер |
Cod_i_a | Идентификатор первичного атрибута | N | 5 |
Cod_o_a | Идентификатор вторичного атрибута | N | 5 |
Индексы таблицы: | Название | Выражение | Связанные таблицы |
Cod_i_db | Cod_i_db | Список атрибутов | cod_a |
Cod_o_db | Cod_o_db | Список атрибутов | cod_a |
Для описания потоков данных на уровне атрибутов необходимо хранить информацию, описывающую А-граф (рис. 2). Таблица «Граф атрибутов» должна иметь ссылку на таблицу «Список атрибутов хранилищ» и содержать информацию о направлении потока данных. Исходя из структуры таблицы 2, достаточно хранить код первичного и вторичного атрибутов.
Рассмотрим теперь операции, которые пользователь может выполнять со словарем данных. Во-первых, это операции, связанные с добавлением, корректировкой и удалением хранилищ из списка, если данные хранилища относятся к группе пользовательских (заметим, что физически хранилища удалятся не будут, удаление производится в представлении пользователя). Во-вторых, это пополнение собственного словаря из общесистемного или из словаря другого пользователя. В-третьих, вывод данных на уровне хранилищ или атрибутов (по желанию), сортируя их по группам входных, выходных данных и, отдельно, справочных и пользовательских. В-четвертых, просматривать потоки по дугам для данного хранилища или получать список хранилищ между конкретным входным и выходным хранилищам. В-пятых, определять для данного хранилища вторичные данные или, что гораздо интереснее, определять первичные для конкретных вторичных данных на уровне хранилищ и атрибутов.
Организация словаря данных осуществляется с помощью графического пользовательского интерфейса. Визуальное представление в виде диаграмм потоков данных и диаграммы «сущность-связь» осуществляется только для администраторов системы с помощью прикладных пакетов типа «ERwin». Реализация данной концепции словаря данных будет осуществляться с помощью СУБД FoxPro 2.6 for Windows 3.1 и выше и СУБД FoxPro 5.0 for Windows 95, а также Windows NT 3.5 и выше.
Литература
1. Бобровски С. Oracle 7 вычисления клиент/сервер М.: «Лори», 1996.
2. Калянов Г.Н. CASE структурный системный анализ. М. «Лори», 1996.
3. Козлинский А.В. CASE-технология: индустриальная разработка систем обработки информации // Компьютерное обозрение. 1993 №1 С.29-40
4. Липаев В.В. Управление разработкой программных комплексов. М.: Финансы и статистика, 1993
5. Фокс Д. Программное обеспечение и его разработка. М.: Мир, 1985.