Технологии проектирования баз данных
Покупка
Тематика:
Проектирование баз и банков данных
Издательство:
ДМК Пресс
Автор:
Осипов Дмитрий Леонидович
Год издания: 2019
Кол-во страниц: 498
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-737-4
Артикул: 746802.02.99
Доступ онлайн
В корзину
Книга основана на материалах лекций и практических занятий, подготовленных автором и объединяет теоретические основы и практический аспект разработки современных баз данных (БД). Основная задача издания — предоставить читателю профессиональную методику проектирования БД. Страницы книги проведут читателя по всем этапам жизненного цикла проекта баз данных от момента возникновения идеи разработки программного обеспечения до этапа ввода готового продукта в эксплуатацию, подробно объясняя каждый шаг. Издание отличает глубина и ясность изложения материала, поэтому издание окажется полезным как для студентов и преподавателей ИТ-специальностей, так и для разработчиков баз данных и программистов, стремящихся самостоятельно освоить технологические приемы проектирования современных БД.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Осипов Д. Л. Технологии проектирования баз данных Москва, 2019
УДК 004.65 ББК 32.972.134 О74 О74 Осипов Д. Л. Технологии проектирования баз данных. – М.: ДМК Пресс, 2019. – 498 с.: ил. ISBN 978-5-97060-737-4 Книга основана на материалах лекций и практических занятий, подготовленных автором и объединяет теоретические основы и практический аспект разработки современных баз данных (БД). Основная задача издания — предоставить читателю профессиональную методику проектирования БД. Страницы книги проведут читателя по всем этапам жизненного цикла проекта баз данных от момента возникновения идеи разработки программного обеспечения до этапа ввода готового продукта в эксплуатацию, подробно объясняя каждый шаг. Издание отличает глубина и ясность изложения материала, поэтому издание окажется полезным как для студентов и преподавателей ИТ-специальностей, так и для разработчиков баз данных и программистов, стремящихся самостоятельно освоить технологические приемы проектирования современных БД. УДК 004.65 ББК 32.972.134 Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. © Осипов Д. Л., 2019 ISBN 978-5-97060-737-4 © Оформление, издание ДМК Пресс, 2019
Оглавление Введение ...............................................................................................................................12 Соглашения .........................................................................................................................................13 Глава 1. Эволюция баз данных ..........................................................................................14 Электронные картотеки .................................................................................................................16 Принцип построения систем файлов ..............................................................................................17 Недостатки систем файлов .................................................................................................................18 Пути устранения недостатков систем файлов .............................................................................22 Что такое база данных? .................................................................................................................23 Эволюция моделей БД ...................................................................................................................24 Необходимость моделирования .......................................................................................................26 Иерархическая модель .........................................................................................................................27 Сетевая модель .........................................................................................................................................30 Попытки разработки стандарта БД ..................................................................................................32 Реляционная модель ..............................................................................................................................34 Объектно-ориентированная модель ...............................................................................................36 Слабоструктурированные данные ...................................................................................................38 Документ-ориентированная модель ...............................................................................................38 Резюме ..................................................................................................................................................39 Вопросы для самопроверки ...............................................................................................................39 Глава 2. Система управления базами данных .................................................................41 Функционал СУБД ............................................................................................................................42 Компоненты СУБД ............................................................................................................................45 Системный каталог .................................................................................................................................48 Архитектурные решения доступа к БД ...................................................................................48 Файл-сервер ..............................................................................................................................................49 Клиент-сервер ..........................................................................................................................................50 Распределенная система ......................................................................................................................54 Резюме ..................................................................................................................................................55 Вопросы для самопроверки ...............................................................................................................56 Глава 3. Персонал и пользователи БД ..............................................................................57 Администратор данных .................................................................................................................59 Администратор базы данных ......................................................................................................60 Разработчики баз данных.............................................................................................................61 Прикладные программисты .........................................................................................................61
Оглавление Конечные пользователи ................................................................................................................62 Резюме ..................................................................................................................................................63 Вопросы для самопроверки ...............................................................................................................63 Глава 4. Реляционная модель ............................................................................................65 Сущность и атрибуты ......................................................................................................................66 Тип данных и домен ........................................................................................................................69 Связь ......................................................................................................................................................71 Отношение ..........................................................................................................................................73 Ключи ....................................................................................................................................................76 Целостность данных ........................................................................................................................77 Целостность доменов ............................................................................................................................78 Целостность сущностей .........................................................................................................................79 Ссылочная целостность .........................................................................................................................80 Корпоративная целостность ...............................................................................................................80 Реляционная алгебра .....................................................................................................................81 Резюме ..................................................................................................................................................87 Вопросы для самопроверки ...............................................................................................................88 Глава 5. Технология разработки БД ..................................................................................89 Роль БД на предприятии ...............................................................................................................90 Жизненный цикл базы данных ..................................................................................................94 Этап планирования разработки БД .................................................................................................96 Этап определения и анализа требований к системе ...............................................................96 Этап проектирования БД .................................................................................................................. 100 Этап выбора СУБД ............................................................................................................................... 104 Этап создания клиентского программного обеспечения .................................................... 105 Этап тестирования и отладки .......................................................................................................... 107 Этап реализации ................................................................................................................................... 109 Этап эксплуатации и сопровождения .......................................................................................... 110 Резюме ...............................................................................................................................................111 Вопросы для самопроверки ............................................................................................................ 111 Глава 6. Концептуальное проектирование и ER-модель .............................................112 Концептуальная модель БД ......................................................................................................113 ER-модель .........................................................................................................................................113 Типы сущностей и атрибуты............................................................................................................. 114 Связи в ER-модели ............................................................................................................................... 119 Вариации ER-моделей................................................................................................................. 127 Резюме ...............................................................................................................................................129 Вопросы для самопроверки ............................................................................................................ 130
Оглавление 5 Глава 7. Логическое проектирование и нормализация ...............................................131 Первая нормальная форма .......................................................................................................134 Функциональная зависимость атрибутов ........................................................................... 137 Порядок определения первичного ключа ..........................................................................139 Вторая нормальная форма ........................................................................................................141 Третья нормальная форма.........................................................................................................142 Нормальная форма Бойса-Кодда ...........................................................................................145 Четвертая нормальная форма .................................................................................................145 Пятая нормальная форма .......................................................................................................... 147 Финал «гонки» нормальных форм .........................................................................................149 Резюме ...............................................................................................................................................149 Вопросы для самопроверки ............................................................................................................ 150 Глава 8. Физическое представление данных ................................................................151 Двухуровневая модель хранения данных ..........................................................................151 Представление реляционных данных ..................................................................................153 Поля ......................................................................................................................................................... 154 Записи ....................................................................................................................................................... 156 Блоки ......................................................................................................................................................... 157 Файл ......................................................................................................................................................... 157 Модификация записей ................................................................................................................158 Особенности представления объектов ................................................................................158 Журнальная информация ..........................................................................................................159 Резюме ...............................................................................................................................................160 Вопросы для самопроверки ............................................................................................................ 160 Глава 9. Индексирование ..................................................................................................162 Индексы на основе хеширования ..........................................................................................164 Индексы на основе B-деревьев ..............................................................................................168 Битовые индексы ..........................................................................................................................171 Правила назначения пользовательских индексов ..........................................................172 Избирательность индекса ..........................................................................................................173 Резюме ...............................................................................................................................................175 Вопросы для самопроверки ............................................................................................................ 175 Глава 10. Безопасность данных .......................................................................................176 Откуда исходят угрозы? ..............................................................................................................178 Политика безопасности ..............................................................................................................181 Правила защиты БД .....................................................................................................................182
Оглавление Идентификация, аутентификация и авторизация ................................................................... 184 Криптографическая защита ............................................................................................................. 185 Резервное копирование и восстановление .............................................................................. 188 Аудит событий безопасности .......................................................................................................... 189 Модернизация программного обеспечения ............................................................................. 191 Безопасный доступ к данным ......................................................................................................... 191 Экономическая оправданность ...................................................................................................... 192 Резюме ...............................................................................................................................................192 Вопросы для самопроверки ............................................................................................................ 193 Глава 11. Знакомимся с SQL .............................................................................................194 Возможности SQL .......................................................................................................................... 197 Типы данных SQL ..........................................................................................................................198 Предопределенные типы .................................................................................................................. 199 Непредопределенные типы ............................................................................................................. 206 Константы .........................................................................................................................................209 Преобразование данных ...........................................................................................................210 Операторы .......................................................................................................................................212 Операция присваивания ................................................................................................................... 213 Арифметические операторы ........................................................................................................... 213 Логические операторы ...................................................................................................................... 214 Операторы сравнения ........................................................................................................................ 215 Проверка на неопределенность NULL ........................................................................................ 215 Конкатенация строк ............................................................................................................................ 216 Встроенные функции ...................................................................................................................216 Резюме ............................................................................................................................................... 217 Вопросы для самопроверки ............................................................................................................ 217 Глава 12. Манипулирование данными SQL ...................................................................219 Запрос, инструкция SELECT.......................................................................................................219 Псевдонимы имен столбцов и таблиц ......................................................................................... 222 Порядок сортировки, ORDER BY .................................................................................................... 223 Условие отбора данных, предложение WHERE ....................................................................... 224 Агрегирующие функции .................................................................................................................... 232 Группировка данных GROUP BY ..................................................................................................... 233 Соединение таблиц в запросе SELECT ........................................................................................ 234 Вставка, инструкция INSERT ......................................................................................................244 Модификация, инструкция UPDATE .......................................................................................246 Удаление, инструкция DELETE .................................................................................................248 Слияние данных, инструкция MERGE ....................................................................................249 Резюме ...............................................................................................................................................250 Вопросы для самопроверки ............................................................................................................ 251
Оглавление 7 Глава 13. Определение данных средствами SQL .........................................................252 Базы данных (схемы) ...................................................................................................................252 Домены ..............................................................................................................................................255 Таблицы .............................................................................................................................................256 Внешние ключи и связи между таблицами ............................................................................... 258 Ограничения на значения столбцов ............................................................................................. 260 Столбец-перечисление ...................................................................................................................... 261 Столбец-множество ............................................................................................................................. 262 Временные таблицы ........................................................................................................................... 263 Модификация таблицы ...................................................................................................................... 264 Клонирование и копирование таблиц ........................................................................................ 265 Индексы ............................................................................................................................................266 Изменение индекса............................................................................................................................. 267 Удаление индекса ................................................................................................................................ 268 Представления ...............................................................................................................................269 Изменение представления ............................................................................................................... 272 Удаление представления................................................................................................................... 273 Модифицируемые представления ................................................................................................ 273 Резюме ...............................................................................................................................................274 Вопросы для самопроверки ............................................................................................................ 275 Глава 14. Процедурный SQL .............................................................................................276 Элементы процедурного SQL ...................................................................................................278 Переменные ........................................................................................................................................... 278 Составной оператор BEGIN..END ................................................................................................... 281 Условные операторы .......................................................................................................................... 281 Циклы ........................................................................................................................................................ 284 Хранимые процедуры и функции ..........................................................................................288 Вызов хранимой процедуры ........................................................................................................... 291 Особенности работы с функциями ............................................................................................... 292 Изменение процедур и функций ................................................................................................... 294 Удаление процедур и функций ....................................................................................................... 294 Триггеры ............................................................................................................................................294 Контекстные переменные ................................................................................................................. 297 Примеры триггеров ............................................................................................................................. 297 Курсоры .............................................................................................................................................302 Примеры курсоров .............................................................................................................................. 305 Резюме ...............................................................................................................................................309 Вопросы для самопроверки ............................................................................................................ 310 Глава 15. Регулярные выражения в запросах ...............................................................311 Операторы для регулярных выражений .............................................................................311
Оглавление Основы синтаксиса .......................................................................................................................312 Регулярные выражения в запросах .......................................................................................319 Резюме ...............................................................................................................................................320 Вопросы для самопроверки ............................................................................................................ 320 Глава 16. Управление транзакциями ..............................................................................322 Требования к транзакции ..........................................................................................................323 Состояние транзакции .................................................................................................................324 Проблемы совместного доступа к данным ........................................................................325 Управление параллельными транзакциями .......................................................................326 Пессимистический подход ............................................................................................................... 327 Оптимистический подход ................................................................................................................. 330 Детализация уровня блокировок ...........................................................................................333 Требования стандарта SQL ........................................................................................................334 Явное управление транзакцией ..............................................................................................335 Точки сохранения ................................................................................................................................. 338 Резюме ...............................................................................................................................................338 Вопросы для самопроверки ............................................................................................................ 339 Глава 17. Определение прав пользователей .................................................................340 Идентификатор авторизации ...................................................................................................341 Объекты защиты ............................................................................................................................342 Управление наборами привилегий .......................................................................................343 Предоставление привилегий .......................................................................................................... 344 Лишение привилегий ......................................................................................................................... 347 Резюме ...............................................................................................................................................349 Вопросы для самопроверки ............................................................................................................ 349 Глава 18. Интерактивная аналитическая обработка OLAP .........................................350 Требования к OLAP-инструментам ........................................................................................351 Хранилище данных ......................................................................................................................353 OLAP-куб ...........................................................................................................................................355 Язык многомерных выражений MDX ....................................................................................356 Резюме ...............................................................................................................................................358 Вопросы для самопроверки ............................................................................................................ 358 Глава 19. Расширяемый язык разметки XML ................................................................360 Корректность документа XML ..................................................................................................361 Построение документа XML .....................................................................................................361 Элементы документа .......................................................................................................................... 362 Атрибуты .................................................................................................................................................. 363
Оглавление 9 Пространство имен.............................................................................................................................. 364 Определение типа документа DTD ........................................................................................ 367 XML Schemas ...................................................................................................................................373 Элементы схемы ................................................................................................................................... 376 Атрибуты схемы .................................................................................................................................... 385 Подключение XML-схемы к документу ....................................................................................... 386 Поддержка XML в СУБД .............................................................................................................386 Резюме ............................................................................................................................................... 387 Вопросы для самопроверки ............................................................................................................ 388 Глава 20. Клиент-серверные БД ......................................................................................389 Модель взаимодействия открытых систем .........................................................................389 Клиент-серверные СУБД ............................................................................................................393 Модели распределения функций ...........................................................................................393 Резюме ...............................................................................................................................................396 Вопросы для самопроверки ............................................................................................................ 397 Глава 21. Особенности разработки клиента БД ............................................................398 Выбор языка программирования ...........................................................................................398 Технология доступа к данным ODBC ............................................................................................ 399 Технология доступа к данным ADO .NET .................................................................................... 400 Технология доступа к данным FireDAC........................................................................................ 402 Технология JDBC ................................................................................................................................... 404 Интерфейс клиента ......................................................................................................................405 Сколько людей, столько и мнений ................................................................................................ 406 Пользовательские критерии качества интерфейса ............................................................... 407 Рекомендации по проектированию ......................................................................................408 Резюме ...............................................................................................................................................410 Вопросы для самопроверки ............................................................................................................ 411 Глава 22. Распределенные БД .........................................................................................412 Предпосылки децентрализации .............................................................................................412 Система управления распределенной базой данных ........................................................... 414 Правила распределенных БД от Криса Дейта ..................................................................415 Аспекты проектирования распределенных БД ................................................................416 Фрагментация ........................................................................................................................................ 417 Распределение ...................................................................................................................................... 419 Репликация ............................................................................................................................................. 419 Особенности управления системным каталогом .............................................................420 Распределенные транзакции ...................................................................................................420 Преимущества распределенных БД ......................................................................................421
Оглавление Недостатки распределенных БД .............................................................................................422 Резюме ...............................................................................................................................................423 Вопросы для самопроверки ............................................................................................................ 424 Глава 23. Объектно-ориентированная модель данных...............................................425 Предпосылки появления модели ...........................................................................................425 Преимущества ООБД ................................................................................................................... 427 Объектно-ориентированная терминология .......................................................................428 Абстрагирование .................................................................................................................................. 430 Инкапсуляция......................................................................................................................................... 430 Модульность ........................................................................................................................................... 431 Наследование ........................................................................................................................................ 432 Идентификатор объекта .................................................................................................................... 432 Манифест объектно-ориентированных СУБД ...................................................................433 Стандарт ODMG .............................................................................................................................. 437 Что было сделано на практике? .............................................................................................. 437 Postgres .................................................................................................................................................... 437 UniSQL ....................................................................................................................................................... 438 Cache ......................................................................................................................................................... 439 Versant Object Database ..................................................................................................................... 439 ObjectStore .............................................................................................................................................. 440 Что пошло не так? .........................................................................................................................440 Недостатки ООБД ................................................................................................................................. 441 Объектно-реляционные СУБД ..................................................................................................443 Резюме ...............................................................................................................................................444 Вопросы для самопроверки ............................................................................................................ 445 Глава 24. Документ-ориентированные БД ....................................................................446 Чем плоха нормализация? ........................................................................................................446 БД ключ-значение ........................................................................................................................ 447 Документ-ориентированные БД .............................................................................................448 NoSQL ........................................................................................................................................................ 449 Распределенная обработка MapReduce ..................................................................................... 452 Сегментирование ................................................................................................................................. 453 Репликация ............................................................................................................................................. 455 Когда следует использовать документ-ориентированную модель? ........................456 Резюме ...............................................................................................................................................456 Вопросы для самопроверки ............................................................................................................ 457 Глава 25. Большие данные ...............................................................................................458 Что такое «большие данные»?.................................................................................................459
Оглавление 11 Принципы работы с большими данными ...........................................................................461 Лямбда-архитектура ....................................................................................................................461 Apache Hadoop ...................................................................................................................................... 463 Apache Storm .......................................................................................................................................... 465 Apache Impala ........................................................................................................................................ 466 Apache Kafka .......................................................................................................................................... 466 NewSQL ............................................................................................................................................. 467 Добыча данных ..............................................................................................................................468 Резюме ...............................................................................................................................................469 Вопросы для самопроверки ............................................................................................................ 470 Глава 26. Составление программной документации ...................................................471 Виды программных документов .............................................................................................472 Техническое задание .......................................................................................................................... 473 Пояснительная записка ..................................................................................................................... 475 Эксплуатационные документы ................................................................................................476 Руководство системного программиста ..................................................................................... 477 Руководство оператора ..................................................................................................................... 478 Документация в тексте программы .......................................................................................479 Резюме ...............................................................................................................................................480 Вопросы для самопроверки ............................................................................................................ 481 Приложение 1. Модель БД «Склад» ...............................................................................482 Приложение 2. Пример XML-схемы ...............................................................................483 Приложение 3. Стандарты по единой системе программной документации .........487 Список литературы ............................................................................................................489 Предметный указатель .....................................................................................................493
Введение Вряд ли сегодня кому-то удастся назвать современную область знаний, в которой не нашли бы применения компьютерные базы данных (БД). Нау ка, образование, экономика, электронная коммерция, медицина, статистика, военное дело – список можно продолжать очень долго. Базы данных сопровождают человека на протяжении всей жизни. Появление на свет ребенка, учеба в школе и вузе, получение паспорта или водительских прав, посещение врача, покупки в магазинах, поиск книги в библиотеке, открытие счета в банке – в современном информационном обществе ни одно из этих и многих других событий не обходится без появления очередной электронной пометки в памяти многочисленных компьютеров. Базы данных входят в десятку самых востребованных програм мных продуктов и служат источником неплохого заработка для профессиональных разработчиков. Судите сами, без хранения и учета данных сегодня обойтись весьма сложно. Многочисленные магазины, склады, страховые агентства, отделы кадров, бухгалтерии, учебные заведения и множество других предприятий и организаций остро нуждаются в разработанных специально для них БД. И спрос все еще превышает предложение. Создать эффективную базу данных весьма непросто, даже если она предназначена для обслуживания незначительных объемов данных и подлежит эксплуатации на домашнем компьютере. Сложность проекта возрастает на порядок, когда возникает задача разработать жизнеспособный коммерческий продукт, с которым смогут одновременно работать десятки пользователей. Именно поэтому главная задача книги – вооружить читателя знаниями о технологии проектирования баз данных. Здесь вы подчерпнете всю необходимую информацию о: задачах, решаемых с помощью БД; архитектуре систем управления базами данных (СУБД); реляционной, объектно-ориентированной, документ-ориентированной ( и ряде других) моделях данных; жизненном цикле проектов БД, этапах концептуального, логичес- кого и физического проектирования БД; особенностях физического хранения и правилах индексирования данных;
Соглашения 13 многопользовательском доступе к данным и управлении транз- акциями; особенностях организации доступа к БД и обеспечении безопасности данных; структурированном языке запросов SQL; применении в SQL регулярных выражений; расширяемом языке разметки XML; многомерном анализе данных; централизованных и распределенных БД; правилах разработки клиентских приложений БД; особенностях документирования проектов БД. Самое главное, что получит читатель после изучения предложенного материала, – владение методологией работы с любой БД. Книга не ограничивает читателя в вопросе выбора целевой СУБД, поэтому ваша база данных может быть развернута как на основе простейших настольных систем, так и на фундаменте профессиональных многопользовательских клиент-серверных программных решений. Соглашения Для акцентирования внимания читателя на ключевых частях излагаемого материала такой текст отмечен особым форматированием: Замечание Таким способом в тексте книги выделен материал, который вы должны принять к сведению. Обычно это определения, комментарии или замечания. Кроме того: впервые встречающиеся термины и определения выделены по- лужирным шрифтом; впервые встречающиеся аббревиатуры комментируются; код примеров, синтаксические конструкции даны моноширинным шрифтом; помимо содержания, книга включает подробный предметный указатель, позволяющий найти в тексте интересующую читателя информацию.
Глава 1 Эволюция баз данных Очень сложно привести пример какой-либо области науки и техники, сделавшей за последние полстолетия столь же значимый рывок в своем развитии, как современная микроэлектроника и идущие с ней рука об руку информационные технологии (ИТ). Более того, ИТ развиваются столь динамично, что даже специалистам в этой области приходится едва ли не каждые 5–6 лет кардинально переучиваться, дабы успеть попасть в последний вагон улетающего вдаль с космической скоростью экспресса технологий разработки программного обеспечения. Как человек сумел за столь короткий срок совершить столь большие шаги в области ИТ? Чтобы ответить на этот вопрос, стоит разобраться с тем, что происходило в те «старозаветные» времена, в которых компьютер упоминался лишь в произведениях писателей-фантастов. Для этого нам предстоит отмотать временную ленту всего на несколько десятилетий назад и попасть в эпоху, когда на смену механическому арифмометру стали приходить первые вычислительные машины. Именно этот момент времени мы и станем считать началом всех начал для современных информационных технологий в целом и зарождающихся баз данных (БД) в частности. Для полного погружения в эпоху нарисуем картину научно-вычислительной лаборатории 50-х годов XX века. Посреди огромного зала всеми цветами радуги переливается огромный ламповый монстр – электронно- вычислительная машина. А вокруг нее вьется рой инженеров, математиков и программистов. Инженеры меняют радиодетали, математики выдумывают формулы, а программисты замыкают круг – на основе предложенных математиками формул закладывают в ЭВМ программы, чтобы последние жгли электронные лампы. Огромное количество обслуживающего персонала, трудящегося во благо научно-технического прогресса, в некоторой степени роднило обслуживание ЭВМ с ходом
Эволюция баз данных 15 возведения Вавилонской башни (как с точки зрения процесса, так и по результату). Технология разработки прикладного программного обеспечения тех времен был достойна кисти Сальвадора Дали. Наивный заказчик расчетов приходил к математику и просил, чтобы машина ответила – сколько, на ее взгляд, будет равняться 2 + 2. Математик-алгоритмист в глубокой задумчивости рисовал алгоритм и передавал его программисту, перекладывающему алгоритм на низкоуровневый язык машинных команд. Для того чтобы ЭВМ смогла усвоить программу, последняя набивалась техниками на перфоленту или на перфокарты. Данные полдня загружались в память машины, затем она пару-другую раз зависала, шипела, кряхтела и, наконец, к всеобщей радости, выдавала распечатку. К этому времени результат уже никого не интересовал… Но согласитесь – сколь увлекателен сам процесс! К 60-м годам прошлого века ЭВМ подверглись усовершенствованию настолько, что уже были способны не только воодушевлять писателей- фантастов и согревать воздух, но и производить некоторые полезные операции, в первую очередь связанные с утомительными математическими расчетами. Вас интересует таблица синусов с точностью до 18 знаков после запятой? Теперь уже не надо напрягать свой мозг – обращаемся за помощью в научно-вычислительную лабораторию, и всего лишь через час распечатка у вас в кармане. И не важно, что вместо синусов вам посчитали косинусы: главное – никаких умственных затрат, да и точность соблюдена! Повысилась не только производительность процессоров, но и на качественно другой уровень перешли периферийные устройства. Теперь почти пропала необходимость вставки между пользователем и машиной гильдии разношерстных посредников. Человек, имеющий некоторое представление о способах общения с машиной, просто садился за терминал и получал возможность самостоятельно, без какой-либо посторонней помощи вгонять ЭВМ в ступор. Пользователи – люди разные, и далеко не всех интересовали расчеты траекторий баллистических ракет. Огромный пласт людей искал применения для машин в другой не менее важной области – области хранения и обработки больших массивов данных. Судите сами: XX век – век информации, в офисах корпораций, в правительственных учреждениях, в архивах и библиотеках хранились миллионы тонн бумаги с данными о чем угодно, начиная с роста поголовья пингвинов в Антарктике и заканчивая налоговыми декларациями от горячо любимых сограждан. Все это необходимо не просто хранить, а еще и максимально быстро обработать с возможно-
Глава 1. Эволюция баз данных стью получения аналитических выводов, графиков и статистики. До сих пор все эти попытки систематизации колоссальных объемов данных, представленных на бумажных носителях, были в некотором родстве с сизифовым трудом. И вдруг, о чудо, наконец у человечества появился шанс вкатить камень на вершину горы! Именно с этого момента в сферу обязанностей вычислительных машин, кроме проведения расчетов, вменили еще одну задачу – хранение и обработку больших объемов данных. Тем более что на смену перфолентам и стримерам с магнитной пленкой стали приходить жесткие диски. Определение Данные (data) – информация, представленная в формализованном виде, пригодном для передачи, интерпретации или обработки с участием человека или автоматическими средствами. Только бесконечно наивный пользователь (метко называемый в народе чайником) может предположить, что ЭВМ сразу же подставила человечеству свое плечо и в мановение ока все бумажные архивы превратились в во всех отношениях совершенные базы данных. Не тут-то было! Вычислительные машины – это лишь инструмент, который работает ровно так, как его научат программисты. Поэтому примерно на стыке 50-х и 60-х годов XX века перед программистами была поставлена задача научить машины обслуживать большие объемы данных. Электронные картотеки Мы с вами все учились сами, а некоторые из нас даже пытались учить других. Любой участник образовательного процесса, находящийся в здравом уме и доброй памяти, понимает, что научить можно только тому, что в совершенстве знаешь сам. А теперь ответьте на вопрос: «Что в начале 60-х программисты знали о хранении больших данных?» Прав окажется тот, кто скажет – практически ничего! Так что нет ничего удивительного в том, что на первых этапах становления такой области знаний, как базы данных, все пошли по особому пути, который получил название систем, основанных на файлах (file-based system), или просто системы файлов. К чему столько скепсиса? Поймете через пару страниц, а пока рассмотрим историю болезни прототипов современных БД – систем файлов. Особенность человеческого образа мышления заключается в том, что при поиске решений сложных проблем в первую очередь мы пыта-
Электронные картотеки 17 емся применить уже известные методики. Примеров такого подхода в истории предостаточно. Например, разработчики первых летательных аппаратов весьма настойчиво пытались обучить их махать крыльями – ведь именно так делали птицы. Эффективность подобного решения новаторы обычно проверяли сами, поэтому долго не жили. В большинстве своем программисты – также народ прямолинейный. Создатели прообразов баз данных при поиске решения огляделись вокруг и увидели, что везде, где есть бумажные архивы, данные хранятся в картотеках. Возьмем обычную городскую библиотеку тех лет. Здесь каждой книге соответствует отдельная бумажная карточка, в которой отражены данные об авторе, названии книги, годе издания, месте хранения и т. д. Карточки систематизированы по областям знаний и упорядочены по алфавиту. Любой грамотный посетитель, придя в библиотеку, за пару-тройку часов ( перелопатив с тысячу карточек) выяснял, что интересующей его книги там нет, и с гордо поднятой головой уходил восвояси... Плохо это или хорошо, но на тот момент времени другого, более рационального решения проблемы архивного дела не существовало. Поэтому воодушевленные программисты, не теряя ни одной секунды на «лишние» размышления, самоотверженно приступили к обучению самолетов махать крыльями – взялись за лобовое проектирование электронных анало гов бумажных картотек. Замечание Почему системам, основанным на файлах, мы уделяем столько времени и не переходим сразу к изучению баз данных? По двум причинам. Вопервых, понимание сути недостатков, присущих файловым системам, позволяет избежать их в дальнейшем. Вовторых, даже сегодня в спектре программного обеспечения есть место для приложений, построенных на основе файлов. Принцип построения систем файлов Рассмотрим в общих чертах идею построения систем, основанных на файлах. Допустим, что мы планируем создать программу, хранящую сведения о сотрудниках предприятия. Получивший столь ответственное задание программист поступает следующим образом. Во-первых, он готовит структуру, подходящую для хранения данных. Для этого программист просматривает список персонала и выясняет максимальное число символов в фамилии, имени и отчестве (допустим, это значения: 20–15–15 байт). Затем программист выделяет ка-
Глава 1. Эволюция баз данных кое-то число байтов для хранения названия должности, даты рождения и остальных подлежащих учету элементов структуры. Узнав все необходимые размерности, разработчик описывает структуру непосредственно в коде программы (рис. 1.1). Рис. 1.1. Структура для хранения одной записи в файле Во-вторых, программистом разрабатываются процедуры, осуществ- ляющие основные операции по работе с файлом. Как минимум это добавление новой записи, редактирование, удаление и просмотр записи. Ни одну из этих операций невозможно осуществить без знания размерности и состава полей исходной структуры. При вставке новой строки в файл к нему следует добавить N байт, причем процедура добавления должна знать, что фамилия начинается с 1-го байта, имя – с 21-го и т. д. При просмотре файла необходимо осуществлять последовательные операции чтения порциями, пропорциональными размеру отдельной записи N байт; опять же, процедура чтения должна обладать информацией – сколько байт отводится тому или иному полю. В свою очередь, операции редактирования и удаления также не являются исключением из правил и нуждаются в знаниях об исходной структуре. К счастью, эти сведения искать не стоит – все данные о составе полей нашей программе хорошо известны, ведь определение структуры спрятано внутри нее. Недостатки систем файлов Поначалу у разработчиков систем, основанных на файлах, дела шли весьма неплохо. Пользователям очень нравилось, что работа с электронными картотеками была схожа с работой с бумажными архивами. В свою очередь, программистам нравилось то, что они сравнительно легко зарабатывают себе на жизнь. Идиллия продолжалась недолго. Очень скоро, казалось на безоблачном горизонте, забрезжили грозовые тучи – стали проявляться отрицательные стороны лобового подхода разработчиков первых прототипов баз данных. Из всего сонма недостатков особо выделяются пять проблем [ 25]:
Электронные картотеки 19 1) зависимость от данных; 2) разделение и изоляция данных; 3) избыточность данных; 4) несовместимость файлов; 5) разрастание количества приложений. Зависимость от данных. Уже первая проблема, с которой столкнулись разработчики файловых систем, не предвещала ничего хорошего. Допустим, что нам требуется осуществить элементарную операцию – увеличить на один символ размер поля, отвечающего за хранение фамилии. Оказалось, что даже незначительное усовершенствование структуры влечет за собой ком дополнительных трудностей. Судите сами, изменение размера или состава полей структуры вынуждает нас не только переписать исполняемый файл, но и сочинить одноразовую программу-конвертор, которая должна преобразовать старые данные к новому формату. Разделение и изоляция данных. Системы, основанные на файлах, объединяют в себе десятки отдельных файлов с данными. В одном файле хранятся данные о сотрудниках фирмы, в другом – сведения о клиентах, в третьем – перечень предоставляемых услуг, в четвертом – список заказов и т. д. Для извлечения логически связанных данных (допустим, о клиентах и их заказах) программисту приходилось выдумывать замысловатые алгоритмы синхронного чтения из двух файлов. С увеличением количества файлов, вовлекаемых в итоговый отчет, сложность возрастает в арифметической прогрессии. Задача извлечения взаимоувязанных данных из десятка файлов могла стать непосильной не только для программиста, но и для вычислительных машин тех времен. Масло в огонь подливало еще то, что данные могли быть разделены между отделами и службами предприятия – в отделе кадров находились данные о сотрудниках, в отделе продаж – о заказах и т. п. В 1960-х годах удельный вес предприятий, чьи машины были объединены локальными вычислительными сетями, стремился к нулю, посему данные были еще и изолированы друг от друга. А теперь представьте себе программиста тех времен, мечущегося по организации в надежде объединить разделенные данные в единое целое… Избыточность (дублирование) данных. С появлением первой мик- ропроцессорной техники многие руководители предприятий стали отказываться от покупок больших ЭВМ и начали отдавать свои предпочтения более дешевым мини-ЭВМ, расставляя их по отделам и службам
Доступ онлайн
В корзину