ИНФОРМАЦИОННЫЕ СИСТЕМЫ И ТЕХНОЛОГИИ В СТРОИТЕЛЬСТВЕ
БАЗА ДАННЫХ, ЕЕ СОСТАВ, МОДЕЛИ БАЗ ДАННЫХ
Активная деятельность по отысканию приемлемых способов обобществления непрерывно растущего объема информации привела к созданию в начале 60-х гг. прошлого века специальных программных комплексов, называемых «Системы управления базами данных» (СУБД).
Основная особенность СУБД — это наличие процедур для ввода и хранения не только самих данных, но и описаний их структуры. Файлы, снабженные описанием хранимых в них данных и находящиеся под управлением СУБД, называются «Базы данных» (БД).
База данных — это независимая от прикладных программ совокупность связанных данных, организованных по определенным правилам, предусматривающим общие правила хранения и манипулирования данными. База данных является информационной моделью предметной области. Обращение к базам данных осуществляется с помощью системы управления базами данных.
Традиционных возможностей файловых систем оказывается недостаточно для построения даже простых информационных систем. Существует несколько потребностей, которые не покрываются возможностями систем управления файлами: поддержание логически согласованного набора файлов; обеспечение языка манипулирования данными; восстановление информации после разного рода сбоев; параллельная работа нескольких пользователей. Можно считать, что если прикладная информационная система опирается на некоторую систему управления данными, обладающую этими свойствами, то эта система управления данными является системой управления базами данных (СУБД).
Более точно, к числу функций СУБД принято относить следующие:
- управление данными во внешней памяти;
- управление буферами оперативной памяти;
- управление транзакциями;
- журнализация и восстановление БД после сбоев;
- поддержание языков БД.
Организация типичной СУБД и состав ее компонентов соответствует рассмотренному набору функций.
Наиболее часто используемыми современными СУБД являются реляционные, которые основаны на реляционной модели данных.
Логически в современной реляционной СУБД можно выделить внутреннюю часть — ядро СУБД (часто его называют Data Base Engine), компилятор языка БД (обычно SQL), подсистему поддержки времени выполнения, набор утилит. В некоторых системах эти части выделяются явно, в других — нет, но логически такое разделение можно провести во всех СУБД.
Ядро СУБД отвечает за управление данными во внешней памяти, управление буферами оперативной памяти, транзакциями и журнализацию. Соответственно можно выделить такие компоненты ядра (по крайней мере, логически, хотя в некоторых системах эти компоненты выделяются явно), как менеджер данных, менеджер буферов, менеджер транзакций и менеджер журнала. Функции этих компонентов взаимосвязаны, и для обеспечения корректной работы СУБД все эти компоненты должны взаимодействовать по тщательно продуманным и проверенным протоколам. Ядро СУБД обладает собственным интерфейсом, не доступным пользователям напрямую и используемым в программах, производимых компилятором SQL (или в подсистеме поддержки выполнения таких программ) и утилитах БД. Ядро СУБД является основной резидентной частью СУБД. При использовании архитектуры клиент — сервер ядро является основной составляющей серверной части системы.
Основной функцией компилятора языка БД является компиляция операторов языка БД в некоторую выполняемую программу. Основной проблемой реляционных СУБД является то, что языки этих систем (а это, как правило, SQL) являются непроцедурными, т.е. в операторе такого языка специфицируется некоторое действие над БД, но эта спецификация не является процедурой, а лишь описывает в некоторой форме условия совершения желаемого действия. Поэтому компилятор должен решить, каким образом выполнять оператор языка прежде, чем произвести программу.
Результатом компиляции является выполняемая программа, представляемая в некоторых системах в машинных кодах, но более часто в выполняемом внутреннем машинно-независимом коде. В последнем случае реальное выполнение оператора производится с привлечением подсистемы поддержки времени выполнения, представляющей собой, по сути дела, интерпретатор этого внутреннего языка.
Наконец, в отдельные утилиты БД обычно выделяют такие процедуры, которые слишком накладно выполнять с использованием языка БД, например, загрузка и выгрузка БД, сбор статистики, глобальная проверка целостности БД и т.д. Утилиты программируются с использованием интерфейса ядра СУБД, а иногда даже с проникновением внутрь ядра.
Система баз данных — это, по сути, не что иное, как компьютеризированная система хранения записей. Саму же базу данных можно рассматривать как подобие электронной картотеки, т.е. хранилище или контейнер для некоторого набора занесенных в компьютер файлов данных. Пользователям этой системы предоставляется возможность выполнять множество различных операций над такими файлами, например:
- добавлять новые пустые файлы в базу данных;
- вставлять новые данные в существующие файлы;
- получать данные из существующих файлов;
- изменять данные в существующих файлах;
- удалять данные из существующих файлов;
- удалять существующие файлы из базы данных.
Преимущества системы баз данных по сравнению с традиционным «бумажным» методом ведения учета очевидны:
- Компактность. Нет необходимости в создании и ведении многотомных бумажных картотек.
- Скорость. Компьютер может выбирать и обновлять данные гораздо быстрее человека. В частности, с его помощью можно быстро получать ответы на произвольные вопросы, возникающие в процессе работы, не затрачивая времени на визуальный поиск или поиск вручную.
- Низкие трудозатраты. Нет необходимости в утомительной работе над картотекой вручную. Механическую работу машины всегда выполняют лучше.
- Актуальность. В случае необходимости в любой момент можно получить точную свежую информацию.
Эти преимущества приобретают еще большее значение в многопользовательской среде, где база данных больше и сложнее однопользовательской. Кроме того, многопользовательская среда имеет дополнительное преимущество: система баз данных предоставляет предприятию средства централизованного управления его данными (именно возможность такого управления является наиболее ценным свойством базы данных). Представьте себе противоположную ситуацию: предприятие не использует систему баз данных, в которой для каждого отдельного приложения создаются свои файлы, чаще всего размещаемые на отдельных магнитных лентах или дисках, в результате чего данные оказываются разрозненными. Систематически управлять такими данными очень сложно.
На практике при проектировании баз данных используется централизованный подход к управлению данными.
Можно выделить следующие преимущества этого подхода:
- Возможность совместного доступа к данным. Совместный доступ к данным означает не только возможность доступа к ним нескольких существующих приложений базы данных, но и возможность разработки новых приложений для работы с этими же данными Другими словами, требования новых приложений по доступу к данным могут быть удовлетворены без необходимости добавления новых данных в базу.
- Сокращение избыточности данных. В системах, не использующих базы данных, каждое приложение имеет свои файлы. Это часто приводит к избыточности хранимых данных и, следовательно, к расточительству пространства вторичной памяти. Например, как приложение, связанное с учетом персонала, так и приложение, связанное с учетом обучения служащих, могут иметь собственные файлы с ведомственной информацией о служащих. Эти два файла можно объединить с устранением избыточности (одинаковой информации) при условии, что администратор данных знает о том, какие данные нужны для каждого приложения, т.е. что на предприятии осуществляется необходимое общее управление.
- Устранение противоречивости данных. В действительности это следствие предыдущего пункта. Например: пусть служащий с номером «ЕЗ», работающий в отделе с номером «D8» представлен двумя различными записями в базе данных. Пусть в СУБД не учтено это раздвоение (т.е. избыточность данных не контролируется). Тогда рано или поздно обязательно возникнет ситуация, при которой эти две записи перестанут быть согласованными, когда одна из них будет изменена, а другая — нет. В этом случае база данных станет противоречивой. Ясно, что противоречивая база данных способна предоставлять пользователю неправильную, противоречивую информацию.
Также очевидно, что если какой-либо факт представлен одной записью (т.е. при отсутствии избыточности), то противоречий возникнуть не может. Противоречий можно также избежать, если не удалять избыточность, а контролировать ее (соответствующим образом известив об этом СУБД). Тогда СУБД сможет гарантировать, что, с точки зрения пользователя, база данных никогда не будет противоречивой. Данная гарантия обеспечивается тем, что если обновление вносится в одну запись, то оно автоматически будет распространено на все остальные. Этот процесс называется распространением обновлений (propagating updates).
- Возможность поддержки транзакций. Транзакция (transaction) — это логическая единица работы, обычно включающая несколько операций базы данных (в частности, несколько операций изменения). Стандартный пример — передача суммы денег со счета А на счет В. Очевидно, что в данном случае необходимы два изменения: изъятие денег со счета А и их внесение на счет В. Если пользователь укажет, что оба изменения входят в одну и ту же транзакцию, то система сможет реально гарантировать, что либо оба эти изменения будут выполнены, либо не будет выполнено ни одно из них, даже если до завершения процесса изменений в системе произойдет сбой (скажем, из-за перерыва в подаче электроэнергии).
Упомянутое выше свойство единичности (неделимости) транзакций — это не единственное преимущество от поддержки транзакций. Однако в отличие от прочих оно вполне применимо даже в однопользовательской среде. (Часто в однопользовательских системах поддержка транзакций совсем не предоставляется, а подобные проблемы перекладываются на плечи пользователя.)
- Обеспечение целостности данных. Задача обеспечения целостности заключается в гарантированной поддержке корректности данных в базе. Противоречивость между двумя записями, представляющими один «факт», является примером утраты целостности данных. Конечно, эта конкретная проблема может возникнуть лишь при наличии избыточности в хранимых данных. Но даже если избыточность отсутствует, база данных может содержать некорректную информацию. Например, в базе данных может быть указано, что сотрудник отработал 400 рабочих часов в неделю вместо 40, или зафиксирована его принадлежность к отделу, которого не существует. Централизованное управление базой данных позволяет избежать подобных проблем (насколько их вообще возможно избежать). Для этого администратор данных определяет (а АБД реализует) ограничения целостности (integrity constraints), иначе называемые бизнес-правилами, которые будут применяться при любой попытке внести какие-либо изменения в соответствующие данные.
Целостность данных для многопользовательских систем баз данных даже более важна, чем для среды с «частными файлами», причем именно по той причине, что такая базаданныхподдерживаетсовместныйдоступ. При отсутствии должного контроля один пользователь вполне может некорректно обновить данные, от чего пострадают многие другие ни вчем не повинные пользователи. Следует также сказать, что в большинстве существующих коммерческих СУБД поддержка ограничений целостности развита слабо, хотя в настоящее время в этом направлении наблюдаются некоторые улучшения. Приходится констатировать тот печальный факт, что ограничения целостности имеют значительно более фундаментальное и критически важное значение, чем это обычно признается на текущий момент.
- Организация защиты данных. Благодаря полному контролю над базой данных администратор базы данных (АБД) может обеспечить доступ к ней только через определенные каналы. Для этой цели могут устанавливаться ограничения защиты (security constraints) или правила, которые будут проверяться при любой попытке доступа к уязвимым данным. Можно установить различные правила для разных типов доступа (выборка, вставка, удаление и т.д.) к каждому из элементов информации в базе данных. Однако следует заметить, что при отсутствии таких правил безопасность данных подвергается большему риску, чем в обычной (разобщенной) файловой системе. Следовательно, централизованная природа системы баз данных в определенном смысле требует наличия надежной системы защиты.
- Возможность балансировки противоречивых требований. Зная общие требования всего предприятия (а не требования каждого отдельного пользователя), АБД (опять же в соответствии с указаниями администратора данных) может структурировать базу данных таким образом, чтобы обслуживание было наилучшим для всего предприятия. Например, администратор базы может выбрать такое физическое представление данных во вторичной памяти, которое обеспечит быстрый доступ к информации для наиболее важных приложений (возможно, с потерей производительности для некоторых других приложений).
- Возможность введения стандартизации. Благодаря централизованному управлению базой данных АБД (по указаниям администратора данных) может обеспечить соблюдение всех подходящих стандартов, регламентирующих представление данных в системе. Стандарты бывают частными, корпоративными, ведомственными, промышленными, национальными и интернациональными. Стандартизация представления данных очень важна с точки зрения обмена и пересылки данных между системами. Стандарты именования и документирования данных важны для их совместного использования и углубленного понимания.
- Независимость данных. Независимость данных может быть реализована на двух уровнях: физическом и логическом. Здесь будет рассмотрена только физическая независимость данных.
Проще всего разобраться в понятии независимости данных на примере их противоположности. Приложения, реализованные в старых системах («доре- ляционные» или созданные даже до появления систем баз данных), в той или иной мере зависимы отданных. Это означает, что способ организации данных во вторичной памяти и способ доступа к ним диктуются требованиями приложения. Более того, сведения об организации данных и способе доступа к ним встроены в саму логику и программный код приложения.
Например, пусть есть приложение, обрабатывающее файл EMPLOYEE. Пусть этот файл проиндексирован по полю имени работника (NAME). В старых системах в этом приложении учитывалось бы, что такой индекс существует и что последовательность записей в файле определена данным индексом. На основе этих сведений была бы построена вся внутренняя структура приложения. В частности, избранный способ реализации процедур доступай обработки исключительных ситуаций в значительной степени зависел бы от особенностей интерфейса, предоставляемого программами управления данными.
Приложения, подобные описанному, называются зависимыми отданных, так как невозможно изменить физическое представление (т.е. способ физического размещения данных во вторичной памяти) или метод доступа (т.е. конкретный способ доступа к данным), не изменив самого приложения (возможно, радикально). Например, невозможно заменить индексированный файл в нашем примере хешированным файлом, не внеся в приложение значительных изменений. Более того, изменению в подобных случаях подлежат те части приложения, которые взаимодействуют с программами управления данными. Трудности, возникающие при этом, не имеют никакого отношения к проблеме, для решения которой было написано данное приложение; это трудности, внесенные используемой структурой интерфейса управления данными.
Таким образом, обеспечение независимости данных — важнейшая цель создания систем баз данных. Независимость данных можно определить как иммунитет приложений к изменениям в физическом представлении данных и в методах доступа к ним, а это означает, что рассматриваемые приложения не зависят от любых конкретных способов физического представления информации или выбранных методов доступа к ним.
Для обработки данных используется аппарат теории множеств (объединение, пересечение, разность, декартово произведение), в котором любое представление данных сводится к совокупности двумерных таблиц особого вида, известного в математике как отношение — relation (англ.).
Наименьшая единица данных реляционной модели — это отдельное атомарное (неразложимое) для данной модели значение данных. Так, в одной предметной области фамилия, имя и отчество могут рассматриваться как единое значение, а в другой — как три различных значения.
Основными понятиями реляционных баз данных являются тип данных, домен, атрибут, кортеж, отношение, первичный ключ, схема отношения, схема базы данных, степень отношения. Рассмотрим эти понятия:
- Тип данных. Понятие тип данных в реляционной модели данных полностью адекватно понятию типа данных в языках программирования. Обычно в современных реляционных БД допускается хранение символьных, числовых данных, битовых строк, специализированных числовых данных (таких как «деньги»), а также специальных «темпоральных» данных (дата, время, времен-
ной интервал). Достаточно активно развивается подход к расширению возможностей реляционных систем абстрактными типами данных.
- Домен. Доменом называется множество атомарных значений одного и того же типа. Понятие домена более специфично для баз данных, хотя и имеет некоторые аналогии с подтипами в некоторых языках программирования. В самом общем виде домен определяется заданием некоторого базового типа данных, к которому относятся его элементы, и произвольного логического выражения, применяемого к элементу типа данных. Если вычисление этого логического выражения дает результат «истина», то элемент данных является элементом домена.
- Атрибут. Под атрибутом понимается поименованная характеристика сущности. Его наименование должно быть уникальным для конкретного типа сущности, но может быть одинаковым для различного типа сущностей (например, «цвет» может быть определен для многих сущностей как «цветок», «автомобиль», «краска» и т.д.). Атрибуты используются для определения того, какая информация должна быть собрана о сущности. Примерами атрибутов для сущности «автомобиль» являются «тип», «марка», «номерной знак», «цвет» и т.д. Здесь также существует различие между типом и экземпляром. Тип атрибута «цвет» имеет много экземпляров или значений — «красный», «синий», «желтый», «белый» и т.д., однако каждому экземпляру сущности присваивается только одно значение атрибута.
Абсолютное различие между типами сущностей и атрибутами отсутствует. Атрибут является таковым только в связи с типом сущности. В другом контексте атрибут может выступать как самостоятельная сущность. Например, для автомобильного завода цвет — это только атрибут прод укта производства, а для лакокрасочной фабрики цвет — тип сущности.
- Кортеж, отношение. Кортеж, соответствующий данной схеме отношения, — это множество пар — {имя атрибута, значение}, которое содержит одно вхождение каждого имени атрибута, принадлежащего схеме отношения. «Значение» является допустимым значением домена данного атрибута (или типа данных, если понятие домена не поддерживается). Тем самым, степень, или «арность» кортежа, т.е. число элементов в нем, совпадает с «арностью» соответствующей схемы отношения. Попросту говоря, кортеж — это набор именованных значений заданного типа. Отношение — это множество кортежей, соответствующих одной схеме отношения.
- Первичный ключ. Каждая сущность обладает хотя бы одним возможным ключом. Один из них принимается за первичный ключ. При выборе первичного ключа следует отдавать предпочтение несоставным ключам или ключам, составленным из минимального числа атрибутов.
Не допускается, чтобы первичный ключ сущности (любой атрибут, участвующий в первичном ключе) принимал неопределенное значение. Иначе возникнет противоречивая ситуация: появится не обладающий индивидуальностью, и, следовательно, не существующий экземпляр сущности. По тем же причинам необходимо обеспечить уникальность первичного ключа.
- Схема отношения, схема базы данных. Схема отношения — это поименованное множество пар — {имя атрибута, имя домена (или типа, если понятие домена не поддерживается)}. Схема базы данных (в структурном смысле) — это набор именованных схем отношений.
- Степень отношения. Под степенью отношения понимается число его атрибутов.
- ХРАНИЛИЩА ДАННЫХ И БАЗЫ ДАННЫХ
Хранилище данных (data warehouse) — это автоматизированная информационно-технологическая система, которая собирает данные из существующих баз и внешних источников, формирует, хранит и использует информацию как единую. Хранилище обеспечивает инструментарий для преобразования больших объемов детализированных данных в форму, которая удобна для стратегического планирования и реорганизации бизнеса и необходима специалисту, ответственному за принятие решений. При этом происходит слияние из разных источников различных сведений в требуемую предметно-ориентированную форму с использованием различных методов анализа.
Особенность организации хранения данных в том, что она предлагает среду накопления данных, которая надежна, а доступ к данным и манипулирование ими по сравнению с распределенными СУБД оптимальны.
Хранилище информации предназначено для хранения, оперативного получения и анализа интегрированной информации по всем видам деятельности организации.
Данные в таком хранилище характеризуются следующими свойствами:
- предметная ориентация — данные организованы согласно предмету, а не приложению (в соответствии со способом данных);
- интегрированность—данные согласуются с определенной системой наименований, хотя могут принадлежать различным источникам и их формы представления могут не совпадать;
- упорядоченность во времени — данные согласуются во времени для использования в сравнениях, трендах и прогнозах;
- неизменяемость и целостность — данные не обновляются и не изменяются, а только перезагружаются и считываются, поддерживая концепцию «одного правдивого источника»;
- большой объем и сложные взаимосвязи данных.
К основным типам данных, которые располагаются в хранилище, относятся:
- метаданные, описывающие способы извлечения информации из различных источников; методы их преобразования из различных структур и форматов и доставки в хранилище;
- фактические (архивы), отражающие состояние предметной области и конкретные моменты времени;
- суммарные, полученные на основе проведенных аналитических расчетов.
В информационных хранилищах используются статистические технологии,
генерирующие информацию об информации; процедуры суммирования; методы обработки электронных документов, аудио- и видеоинформации, графов и географических карт.
Для уменьшения размера информационного хранилища до минимума при сохранении максимального количества информации применяются эффективные методы сжатия данных.
Для преобразования данных из хранилища в предметно ориентированную форму используются языки запросов нового поколения. Руководителям организации данные доступны посредством SQL-запросов, инструментов создания интерактивных отчетов на экране, более развитых систем поддержки принятия решений, многомерного просмотра данных посредством гипертекстовой технологии. Для хранения данных обычно используются выделенные серверы или кластеры серверов (группа накопителей, видеоустройств с общим контроллером).
Создание информационного хранилища данных требует решения ряда организационных вопросов, а также удовлетворения следующих требований к аппаратному и программному обеспечению:
- Скорость загрузки. В хранилищах необходимо обеспечить периодическую загрузку новых порций данных, укладывающихся в достаточно узкий временной интервал. Требуемая производительность процесса загрузки не должна накладывать ограничения на размер хранилища.
- Технология загрузки. Загрузка новых данных в хранилище включает преобразование данных, фильтрацию, переформатирование, проверку целостности, организацию физического хранения, индексирование и обновление метаданных. Это дает возможность объединить разнородную информацию из пакетов, применяемых в структурных подразделениях организации.
- Управление качеством данных. В хранилище должна быть обеспечена локальная и глобальная согласованность данных. Мера качества построенного хранилища — объективность исходных данных и степень разнообразия возможных запросов.
- Поддержка различных видов данных. В хранилище могут накапливаться данные не только стандартных типов, но и более сложных, таких, как текст, изображения, а также уникальных типов, определяемых разработчиками.
- Скорость обработки запросов. Сложные запросы, важные для принятия ответственных решений, должны обрабатываться за секунды или минуты. Скорость обработки запроса должна зависеть от его сложности, а не от объема БД.
- Масштабируемость. Хранилище организации может достигнуть нескольких сотен гигабайт. СУБД не должна иметь никаких архитектурных ограничений и должна поддерживать модульную и параллельную обработку, сохранять работоспособность в случае локальных аварий и иметь средства восстановления.
- Обслуживание большого числа пользователей. Доступ к хранилищу данных не ограничивается узким кругом специалистов организации. Сервер БД должен поддерживать сотни пользователей без снижения скорости обработки запросов.
- Сети хранилищ данных. Сервер должен содержать инструменты, координирующие перемещение данных между хранилищем организации, информационными системами банков и т.п. Пользователи должны иметь возможность обращаться к нескольким хранилищам с одной клиентской рабочей станции.
- Администрирование. СУБД должна обеспечить контроль за ресурсными ограничениями, сообщать о затратах ресурсов и позволять устанавливать приоритеты для различных категорий пользователей или операций, а кроме того, уметь осуществлять трассировку и настройку системы на максимальную производительность. Качество построенного хранилища определяется удобством доступа к нему для конечного пользователя.
- Интегрированные средства многомерного анализа. Для обеспечения высокопроизводительной аналитической обработки необходимы средства многомерных представлений, инструменты, поддерживающие удобные функции создания предварительно вычисленных суммарных показателей и автоматизирующих генерацию таких предварительно вычисленных агрегированных величин.
- Средства формирования запросов. Пользователь должен иметь возможность проведения аналитических расчетов, последовательного и сравнительного анализа, а также доступ к детальной и агрегированной информации.
Примером информационного хранилища может служить Oracle VLM, разработанная фирмами Oracle и Digital.
В информационном хранилище Oracle VLM увеличился объем кэш-памяти (быстродействующей памяти) для обмена с сервером базы данных, что сократило время обращения кдиску с миллисекунд до микросекунд. Например, «маленькая» база данных объемом 5 Гб целиком загружается в кэш-память. Поскольку кэш-память базы данных является частью системной области памяти SGA, Oracle VLM фактически снимает ограничения на ее размер и оперирует с большой, системной областью памяти LSGA.
Увеличился максимальный размер обрабатываемого блока базы данных до 32 кб. Обычно он равнялся 2 кб, а максимальный — 8 кб. Обрабатываемый блок базы данных содержит управляющую часть (заголовок) и собственно данные. Если данные (графика, аудио-, видеоданные, изображения) не помещаются в блок целиком, строится цепочка блоков.
Использование информационных хранилищ дает существенный выигрыш по производительности в системах принятия решений, в системах обработки большого числа транзакций с большим объемом обновления данных.
На вопрос, зачем строить хранилища данных, ведь они содержат заведомо избыточную информацию, которая и так находится в базах или файлах оперативных систем, ответить можно кратко: анализировать данные оперативных систем напрямую невозможно или очень затруднительно. Это объясняется различными причинами, в том числе разрозненностью данных, хранением их в форматах различных СУБД и на разных серверах корпоративной сети. Но даже если на предприятии все данные хранятся на центральном сервере БД (что бывает крайне редко), аналитик почти наверняка не разберется в их сложных, подчас запутанных структурах. Таким образом, задача хранилища — предоставить данные для анализа в одном месте и в простой, понятной структуре.
Есть и еще одна причина, оправдывающая появление отдельного хранилища: сложные аналитические запросы к оперативной информации тормозят текущую работу компании, надолго блокируя таблицы и захватывая ресурсы сервера.