Задача базы данных состоит в том, чтобы помочь людям в учете различного рода вещей. В классических приложениях баз данных ведется учет заказов, клиентов, выполненных работ, сотрудников, телефонных звонков и многих других вещей, представляющих интерес для предпринимателя. В последнее время технология баз данных используется в Интернете не только для этих традиционных нужд, но и для новых приложений, к которым относится, например, реклама, настроенная на характеристики потребителей, и отслеживание предпочтение клиентов при просмотре WEB-страниц и покупке товаров. Такие базы данных включают в себя наряду с традиционными числовыми данными картинки, а также аудио- и видеоинформацию.
Базы данных всегда были важной темой при изучении информационных систем. Но именно в последние годы, благодаря бурному развитию Интернета и связанному с этим технологическому прорыву, знание технологии баз данных стало одним из наиболее популярных путей к карьере. Технология баз данных позволяет сделать интернет-приложение чем-то большим, чем просто средство для публикации брошюр, что было характерно для ранних приложений. В то же время интернет-технологии обеспечивают стандартизированный и доступный способ доставки содержимого базы данных пользователям. Ни одно из этих новых обстоятельств не отменяет необходимости в классических приложениях баз данных, которые были незаменимы в бизнесе до появления Интернета, — они лишь усиливают важность знаний о базах данных.
Многие студенты находят этот предмет интересным и увлекательным, хотя порой он может быть трудным. Проектирование и разработка баз данных требуют одновременно и искусства, и инженерных навыков. Понимание требований пользователя и воплощение этих требований в эффективной логической структуре базы данных является искусством моделирования. Преобразование логической структуры в физическую базу данных с функционально завершенными, высокопроизводительными приложениями представляет собой инженерную задачу. Оба эти аспекта сулят множество трудных и увлекательных интеллектуальных головоломок.
Из-за крайне высокой востребованности технологии баз данных навыки и знания, полученные вами в процессе изучения этого курса, будут иметь огромный спрос.
Термин база данных (database) страдает от обилия различных интерпретаций. Он использовался для обозначения чего угодно — от обычной картотеки до многих томов данных, которые правительство собирает о своих гражданах. Мы будем использовать данный термин в конкретном значении: база данных — это самодокументированное собрание интегрированных записей. Важно понять обе части этого определения.
База данных является самодокументированной (self-describing): она содержит, в дополнение к исходным данным пользователя, описание собственной структуры. Это описание называется словарем данных (data dictionary), каталогом данных (data directory) или метаданными (metadata).
В этом смысле база данных напоминает библиотеку, которую можно представить как самодокументированный набор книг. Кроме книг в библиотеке имеется каталог с их описанием. Точно так же словарь данных (являющийся частью базы данных, подобно тому, как каталог является частью библиотеки) описывает данные, содержащиеся в базе данных.
Почему самодокументированность является столь важной характеристикой базы данных?
Ø Во-первых, она обусловливает независимость программ от данных. Иначе говоря, она дает возможность определить структуру и содержимое базы данных путем обращения к самой базе данных. Нам не придется делать предположения о том, что содержит база данных, а также отпадет необходимость как-либо внешне документировать формат записей и файлов (как это делается в системах обработки файлов).
Ø Во-вторых, если мы изменим структуру данных в базе (например, добавим новые элементы данных к существующей записи), то эти изменения мы внесем только в словарь данных. Лишь небольшую часть программ необходимо будет изменить (если таковые вообще будут). В большинстве случаев модификации потребуют только те программы, которые непосредственно обрабатывают элементы данных, претерпевшие изменения.
Стандартная иерархия данных выглядит следующим образом: биты объединяются в байты, или символы; символы группируются в поля; из полей формируются записи; записи организуются в файлы.
Биты Байты или символы
Поля
Записи
Файлы
Есть соблазн последовать этому образцу и сказать, что файлы объединяются в базу данных. Хотя это утверждение будет верным, оно, тем не менее, отразит суть недостаточно полно.
В базе данных действительно содержатся файлы данных пользователя, однако ими все не исчерпывается. Как уже упоминалось ранее, в разделе метаданных база данных содержит описание самой себя. Кроме того, база данных содержит индексы (indexes), которые представляют связи между данными, а также служат для повышения производительности приложений базы данных. Наконец, зачастую база данных содержит данные о приложениях, использующих эту базу данных. Структура форм для ввода данных и отчетов иногда является частью базы данных. Эту последнюю категорию данных мы называем метаданными приложений (application metadata). Таким образом, база данных содержит четыре типа данных, представленных ниже:
Биты Байты или символы
Поля
Записи
Файлы+ метаданные+ индексы+ метаданные приложений
База данных.
Ø файлы данных пользователя,
Ø метаданные,
Ø индексы,
Ø метаданные приложений.
База данных представляет собой модель. Возникает соблазн сказать, что база данных - это модель реальности или некоторой части реальности, относящейся к бизнесу. Однако это неверно. База данных не моделирует реальность или какую-либо ее часть, но является моделью пользовательской модели (user model). Например, база данных любого предприятия представляет собой модель того, как руководство предприятия видит свой бизнес. С их точки зрения, их бизнес состоит из клиентов, работ и поставщиков клиентов. Поэтому в базе данных представлены факты, касающиеся этих объектов. Имена и адреса клиентов, описание и временные рамки производимых работ, имена поставщиков клиентов — все это данные, являющиеся важными для ведения бизнеса в представлении руководителей предприятия.
Базы данных различаются по уровню детализации. Некоторые их них просты и примитивны. Список клиентов и сумм, которые они должны заплатить, - вот приблизительное представление модели, существующей в голове руководителей предприятия. Более детализированное представление включает виды работ, имена поставщиков клиентов и путь, проделанный до места проведения каждой из работ. Очень подробное представление может включать вид и количество использованных материалов, требуемое количество запчастей и количество часов, ушедшее на каждую фазу работ – нормирования, измерения, обсчёта, проезда и т. п.
Степень детализации, которая должна присутствовать в базе данных, зависит от того, какого рода информация необходима. Ясно, что чем больше требуется информации, тем более подробной должна быть база данных. Выбор подходящей степени детализации является важной частью работы по проектированию базы данных. Как вы обнаружите, основополагающим критерием здесь является уровень детализации, имеющийся в голове пользователя.
База данных представляет собой динамическую модель, поскольку бизнес имеет свойство меняться: люди приходят и уходят, продукты появляются и устаревают, деньги зарабатываются и тратятся. По мере этих изменений данные, представляющие бизнес, также должны меняться. В противном случае они будут устаревать и представлять бизнес неадекватно.
Транзакции (transactions) являются представлением событий. Когда происходят какие-то события, с базой данных должны быть выполнены соответствующие транзакции. Для этого кто-либо (например, оператор ввода данных, продавец или кассир в банке) запускает программу обработки транзакций и вводит данные для транзакций. Программа затем вызывает СУБД для внесения изменений в базу данных. Обычно программа обработки транзакций выдает на дисплей или распечатывает на бумаге отчет — например, подтверждение заказа или чек.
Базы данных изначально использовались в больших корпорациях и крупных организациях как основа для больших систем обработки транзакций. Позднее, по мере того как популярность завоевывали микрокомпьютеры, технология баз данных также мигрировала в этом направлении и стала использоваться для однопользовательских, персональных приложений. Затем, когда микрокомпьютеры начали объединять в рабочие группы, технология баз данных была модифицирована с учетом этой тенденции. Наконец, в настоящее время базы данных используются в приложениях для Интернета и интрасетей.
Исходное предназначение технологии базы данных заключалось в том, чтобы преодолеть трудности с системами обработки файлов, речь о которых шла ранее в этой лекции. В середине 1960-х годов большие корпорации накапливали данные в системах обработки файлов с феноменальной скоростью, но работать с этими данными становилось все сложнее, и все более затруднительной оказывалась разработка новых систем. Более того, менеджеры хотели иметь возможность соотносить данные из одной файловой системы с данными из другой системы.
Ограничения файловой обработки препятствовали простой интеграции данных. Технология баз данных, однако, выполнила обещание решить эти проблемы, и крупные компании начали разрабатывать организационные базы данных. В этих базах данных централизованно хранились и обрабатывались данные о заказах, товарах и счетах предприятия. Эти приложения представляли собой главным образом системы обработки транзакций организационного масштаба.
На первых порах, когда технология была еще несовершенной, приложения баз данных были сложны в разработке и выдавали много ошибок. Даже успешно работающие приложения были медленными и ненадежными: аппаратное обеспечение того времени было не в состоянии быстро справиться с объемом выполняемых транзакций, разработчики еще не изобрели более эффективные способы хранения и извлечения данных, а программисты еще не освоили работу с базами данных, и иногда их программы работали некорректно.
Обнаружен был и еще один недостаток баз данных - их уязвимость. Если произойдет сбой в системе обработки файлов, из строя выйдет только одно конкретное приложение. Если же сбой случится в базе данных, то выйдут из строя все ее приложения.
Постепенно ситуация улучшилась. Разработчики аппаратного и программного обеспечения научились создавать системы, достаточно мощные, чтобы поддерживать большое количество параллельно работающих пользователей, и достаточно быстродействующие, чтобы справляться с требуемым объемом транзакций. Были разработаны новые способы контроля, защиты и резервного копирования баз данных. Усовершенствовались стандартные процедуры обработки данных, а программисты научились писать более эффективный и легкий для поддержания код. К середине 1970-х базы данных были в состоянии эффективно и надежно обрабатывать организационные приложения. Многие из этих приложений используются до сих пор, более чем через 25 лет после их создания!
В 1970 году Э. Ф. Кодд опубликовал свою эпохальную статью[1], в которой он применил концепции раздела математики, называемого реляционной алгеброй, к проблеме хранения больших объемов данных. Статья Кодда положила начало движению в сфере проектирования баз данных, которое привело несколько лет спустя к созданию реляционной модели базы данных (relational database model). Эта модель представляет собой определенный способ структурирования и обработки базы данных.
Преимущество реляционной модели заключается в способе хранения данных, который минимизирует их дублирование и исключает определенные типы ошибок обработки, возникающие при других способах хранения данных. Данные хранятся в виде таблиц со столбцами и строками.
Согласно реляционной модели, не все виды таблиц одинаково приемлемы. С помощью процесса, называемого нормализацией (normalization), нежелательная таблица может быть преобразована в две или более приемлемых. Более подробно о процессе нормализации будет рассказано ниже.
Другое преимущество реляционной модели состоит в том, что в столбцах содержатся данные, связывающие одну строку с другой. Например, столбец CUSTOMER_ID в таблице JOB связан со столбцом CUSTOMER_ID в таблице CUSTOMER. Это делает связи между строками видимыми для пользователя.
Поначалу считалось, что реляционная модель позволит пользователям извлекать информацию из баз данных без помощи профессионалов MIS (административно-информационной системы). Доля истины в этом есть, так как таблицы представляют собой простые и интуитивно понятные конструкции. Кроме того, поскольку связи хранятся вместе с данными, пользователи могут при необходимости комбинировать нужные строки.
Оказалось, что этот процесс слишком сложен для большинства пользователей. По этой причине ожидания, что реляционная модель предоставит пригодный для неспециалистов способ доступа к базам данных, не оправдались. Оглядываясь назад, можно резюмировать: ключевым преимуществом реляционной модели оказалось то, что она дает специалистам (таким, как вы!) стандартный способ структурирования и обработки баз данных.
В 1979 году небольшая компания под названием Ashton-Tate представила новый программный продукт для микрокомпьютеров, dBase II, и назвала его реляционной СУБД. Применяя чрезвычайно успешную рыночную тактику, Ashton-Tate почти бесплатно распространила более 100 000 копий своего продукта среди покупателей новых в то время микрокомпьютеров Osborne. Многие из тех, кто приобрел эти компьютеры, были пионерами микрокомпьютерной индустрии. Они начали создавать приложения для микрокомпьютеров с использованием dBase, и число dBase-приложений быстро росло. В результате Ashton-Tate стала одной из первых крупных корпораций в индустрии микрокомпьютеров. Позднее она была приобретена компанией Borland, которая в настоящее время продает продукты линии dBase.
Успех этого продукта, однако, вызвал неразбериху и путаницу в мире баз данных. Проблема была в следующем: в соответствии с определением, которое стало преобладать в конце 70-х годов, продукт под названием dBase II вообще не являлся СУБД, а тем более реляционной. Фактически это был язык программирования с расширенными возможностями для обработки файлов. Около миллиона пользователей dBase II были уверены, что используют реляционную СУБД, хотя в действительности это было не так.
Таким образом, термины система управления базами данных (database management system) и реляционная база данных (relational database) в начале бума микрокомпьютеров использовались достаточно произвольно. Большинство тех, кто работал с базами данных на микрокомпьютерах, на самом деле занимались обработкой файлов и не получали тех преимуществ, которые характерны для баз данных (хотя они и не замечали этого). Сегодня, когда рынок микрокомпьютеров стал более зрелым и искушенным, ситуация стала иной. dBase IV и последующие продукты линии dBase, такие как FoxPro, являются по-настоящему реляционными СУБД.
Хотя продукты dBase действительно были первым ориентированным на микрокомпьютеры приложением технологии баз данных, примерно в это же время другие производители начали переносить свои продукты с больших ЭВМ на микрокомпьютеры. В качестве примеров коммерческих СУБД, перенесенных на микрокомпьютеры, можно упомянуть Oracle, Focus, Informix и Ingress. Они действительно являются СУБД, и многие также согласятся с тем, что они действительно реляционные.
Одним из следствий переноса технологии баз данных на микрокомпьютеры явилось резкое улучшение пользовательского интерфейса СУБД. Пользователи ПК не стали бы мириться с неуклюжим и неудобным интерфейсом, который характерен для СУБД, работающих на больших ЭВМ. Таким образом, с разработкой коммерческих СУБД, ориентированных на микрокомпьютеры, интерфейс этих программ стал удобнее в использовании. Это стало возможным потому, что микрокомпьютерные СУБД работают на приспособленных под эти задачи компьютерах, а также потому, что больше вычислительных ресурсов стало доступно для обработки пользовательского интерфейса. Сегодняшние СУБД богаты возможностями, надежны и имеют графический пользовательский интерфейс.
Сочетание микрокомпьютеров, реляционной модели и значительно улучшенного пользовательского интерфейса позволило перенести технологию баз данных из контекста организации в контекст персональных компьютеров. Когда это произошло, число мест, где используется технология баз данных, увеличилось на порядки. В 1980 г. в США было около 10 000 мест, где использовались СУБД, сегодня же их более 40 миллионов!
В середине - конце 1980-х годов конечные пользователи начали объединять свои компьютеры в локальные сети (local area networks, LAN). Эти сети сделали возможной передачу данных между компьютерами с невиданными до тех пор скоростями. Первые приложения этой технологии обеспечивали совместное использование периферийных устройств, таких как быстродействующие дисковые накопители большой емкости, дорогие принтеры и плоттеры, и осуществляли связь между компьютерами посредством электронной почты. В перспективе, однако, пользователи хотели совместно использовать свои базы данных, что привело к развитию многопользовательских приложений баз данных для локальных сетей.
Многопользовательская архитектура, применяемая в локальных сетях, значительно отличается от многопользовательской архитектуры, применявшейся на больших ЭВМ (mainframe). В случае последних в обработке приложения базы данных участвовал только один процессор, а в локальных сетях для этого могут использоваться несколько процессоров. Поскольку эта ситуация, помимо очевидной выгоды (большая производительность), влечет за собой и новые трудности (координация действий независимых процессоров), возник новый стиль многопользовательской обработки баз данных, называемый клиент-серверной архитектурой баз данных (client-server database architecture).
Не все базы данных в локальных сетях используют клиент-серверную архитектуру. Более простой, но менее устойчивый режим обработки баз данных называется архитектурой с совместным использованием файлов (file-sharing architecture). Компания, представляющая собой небольшую организацию с умеренными требованиями к обработке, могла бы, скорее всего, использовать любую из этих двух архитектур. Однако для рабочих групп большего размера потребуется клиент-серверная архитектура.
Технология баз данных применяется в настоящее время в сочетании с технологией публикации данных в Web. Эта же технология используется и для публикации приложений в корпоративных и организационных интрасетях. Некоторые эксперты полагают, что в будущем все приложения баз данных будут доставляться пользователям при помощи браузеров и связанных с этим интернет-технологий — даже персональные базы данных, которые «публикуются» для одного человека.
Существует две категории приложений, использующих интернет-технологии. Первая категория включает в себя чистые web-приложения баз данных.
Вторая категория — традиционные персональные, коллективные и организационные базы данных, которые не публикуются в Интернете, но используют браузеры и технологии, подобные DHTML и XML. Поскольку называть последнюю категорию интернет-базами данных было бы некорректно, в этой лекции обе категории объединены под термином базы данных с использованием интернет-технологий.
Эта категория находится сегодня на переднем крае технологии баз данных. Язык XML исключительно хорошо отвечает потребностям приложений баз данных и служит основой для многих новых продуктов и услуг в этой сфере.
Прежде чем мы завершим этот исторический обзор, необходимо обсудить два аспекта технологии баз данных, которые теоретически представляют важность, но еще не получили широкого применения. Этими аспектами являются распределенные и объектно-ориентированные базы данных.
Организационные базы данных решают проблемы, характерные для систем обработки файлов, и обеспечивают более целостную обработку данных организации. Персональные и коллективные базы данных переносят технологию баз данных еще ближе к пользователям, так как управляются локально. Распределённые базы данных (distributed databases) сочетают в себе эти два типа, позволяя объединять между собой персональные, коллективные и организационные базы данных в целостные, но распределенные системы. Как таковые, они теоретически обеспечивают более гибкие варианты доступа к данным и их обработки, но в то же время ставят проблемы, многие из которых не решены до сих пор.
Сущность распределенных баз данных заключается в том, что все данные организации распылены между многими компьютерами — микрокомпьютерами, серверами локальных сетей и большими ЭВМ, которые взаимодействуют между собой в процессе обработки базы данных. Цель этих систем в том, чтобы у каждого пользователя возникало ощущение, что он - единственный пользователь данных организации, и чтобы при этом обеспечивались такие же согласованность, точность и быстродействие, какие были бы, если бы этой распределенной базой данных больше никто не пользовался.
Среди наиболее актуальных проблем распределенных баз данных можно упомянуть проблемы безопасности и контроля. Обеспечить доступ к базе данных для столь большого количества пользователей (а конкурирующих пользователей могут быть сотни) и проконтролировать, какие действия они выполняют с распределенной базой данных, - это непростые задачи.
Координация и синхронизация обработки могут вызывать затруднения. Если одна группа пользователей загружает и обновляет часть базы данных, а затем передает модифицированные данные обратно на большую ЭВМ, то как может система в это же время предотвратить попытку другого пользователя использовать старую версию данных, находящуюся в настоящий момент на большой ЭВМ? Представьте себе, что в этот процесс вовлечено огромное количество файлов, сотни пользователей и множество различного компьютерного оборудования.
Если переход от организационных баз данных к персональным и затем к коллективным происходил достаточно легко, то трудности, стоящие перед проектировщиками и разработчиками распределенных СУБД, монументальны. По правде говоря, даже при том, что работа над распределенными системами баз данных ведется вот уже более 25 лет, значительные проблемы все еще остаются. Корпорация Microsoft разработала архитектуру распределенной обработки данных и набор поддерживающих ее продуктов под названием Microsoft Transaction Server (MTS) и сейчас занимается ее построением. Хотя MTS является многообещающим проектом и среди всех компаний именно у Microsoft имеются ресурсы для разработки и продвижения на рынок подобной системы, до сих пор остается неясным, действительно ли распределенные базы данных смогут удовлетворить каждодневные потребности организаций в сфере обработки данных.
В конце 1980-х годов началось использование нового стиля программирования под названием объектно-ориентированное программирование (object-oriented programming), или ООП (OOP), который имел существенно иную ориентацию, чем традиционное линейное программирование. Если говорить вкратце, то структуры данных, которые обрабатываются в ООП, являются значительно более сложными, чем те структуры, с которыми приходится иметь дело в традиционных языках программирования. Кроме того, сложно обеспечить хранение этих структур с помощью существующих коммерческих СУБД. Как следствие возникает новая категория СУБД — объектно-ориентированные СУБД (object oriented DBMS), предназначенные для хранения и обработки структур данных ООП.
По множеству причин ООП еще не получило широкого применения в деловых информационных системах. Во-первых, оно является сложным в использовании, а разработка приложений ООП стоит очень дорого. Во-вторых, у большинства организаций миллионы или миллиарды байтов данных организованы в реляционные базы данных, и они не желают брать на себя риск и расходы, связанные с преобразованием этих баз данных в формат объектно-ориентированных СУБД. В-третьих, большинство объектно-ориентированных СУБД были разработаны для поддержки инженерных приложений, и они просто не обладают возможностями и функциями, подходящими или быстро адаптируемыми для нужд деловых приложений.
Следовательно, в обозримом будущем объектно-ориентированные СУБД, скорее всего, не будут широко использоваться в приложениях коммерческих информационных систем. Мы обсудим ООП, объектно-ориентированные базы данных и принадлежащий Oracle Corporation гибрид под названием объектно-реляционные базы данных (object-relational databases), но в основном направление этих лекций будет посвящено реляционной модели, поскольку она связана с технологиями, которые наверняка будут использоваться в течение первых пяти лет вашей карьеры.
Базы данных - один из наиболее важных курсов, связанных с информационными системами. Навыки и знания, приобретаемые в ходе изучения этого курса, пользуются большим спросом не только для традиционных приложений, но также для приложений, использующих интернет-технологию в открытых и закрытых сетях.
Технология баз данных используется во множестве приложений. Некоторые из них предназначены для единственного пользователя с единственным компьютером, другие используются рабочими группами в количестве 20-30 человек через локальную сеть, третьи служат сотням пользователей и содержат триллионы байтов данных. В последнее время технология баз данных применяется в сочетании с интернет-технологией для поддержки мультимедийных приложений в открытых и закрытых сетях.
Компонентами приложения базы данных являются сама база данных, система управления базой данных (СУБД) и прикладные программы. Иногда прикладные программы действуют полностью независимо от СУБД, а иногда значительная часть функциональности приложения обеспечивается за счет возможностей и функций СУБД.
Системы обработки файлов хранят данные в отдельных файлах, каждый из которых содержит свой тип данных. Эти системы имеют несколько ограничений. Данные, хранимые в отдельных файлах, трудно комбинировать, поскольку они зачастую дублируются в разных файлах, что приводит к нарушениям целостности данных. Прикладные программы зависят от форматов файлов, что вызывает проблемы при обслуживании: когда форматы меняются, файлы становятся несовместимыми, и требуется их преобразовывать. Трудно также представить данные в удобном для пользователя виде.
Системы обработки баз данных были разработаны для того, чтобы преодолеть эти ограничения. В базе данных СУБД служит интерфейсом между прикладными программами и базой данных. Данные интегрированы, и они не дублируются столь часто. Изменение физических форматов файлов затрагивает только СУБД. Если элементы данных изменяются, добавляются или удаляются, лишь немногие из прикладных программ требуют модификации. Технология баз данных упрощает представление данных в удобном для пользователя виде.
База данных — это самодокументированное собрание интегрированных записей. Она является самодокументированной, так как содержит описание самой себя в словаре данных. Словарь данных известен также как каталог данных, или метаданные. База данных является собранием интегрированных записей, поскольку связи между записями также хранятся в базе данных. Такая организация позволяет СУБД конструировать даже весьма сложные объекты, комбинируя данные на основании хранимых связей. Связи часто хранятся как избыточные данные. Таким образом, три составляющие базы данных — это данные приложений, словарь данных и избыточные данные.
Технология баз данных развивалась в несколько стадий. Ранние базы данных фокусировались на обработке транзакций с данными организации. Затем появление реляционной модели и микрокомпьютеров привело к созданию персональных приложений баз данных. С появлением локальных сетей началась разработка коллективных баз данных с клиент-серверной архитектурой. Сегодня традиционные приложения баз данных доставляются пользователю с помощью интернет-технологий. Важными направлениями в отрасли баз данных являются распределенные и объектно-ориентированные базы данных. Сегодня, однако, ни одно из этих двух направлений не стало коммерчески успешным и не получило широкого применения в деловых приложениях.
Скачано с www.znanio.ru
[1] Е Е Codd, «A Relational Model of Data for Large Shared Databanks», Communications of the ACM, 06 1970, с 377-387
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.