В середине XX века человечество столкнулось со значительным ростом объема информации, нуждающейся в обработке. Расписание вылетов самолетов, телефонные справочники, библиотеки, картотеки отпечатков пальцев, отчеты переписи населения, номенклатуры деталей и т. д. Миллионы тонн бумаги, многотысячный обслуживающий персонал, существенные траты времени на поиски нужных документов. С появлением электронной вычислительной техники решение проблемы укрощения информации увенчалось первым существенным успехом: стали появляться аппаратно-программные комплексы, именуемые системами управления базами данных, или СУБД (Database Management System - DBMS). СУБД включает в себя файлы с данными и описанием этих данных, называемые базой данных (БД), и процедуры, осуществляющие манипуляции с этими данными.
Первым электронным предшественником современных баз данных можно считать файловую систему (не путайте с файловыми системами FAT, NTFS, HPFS и т. п.). Файловая система - это первый шаг, сделанный программистами на пути компьютеризации старых, как мир, ручных библиотечных картотек. Для удобства поиска требуемой книги карточки систематизировались по жанру, области знаний, упорядочивались по фамилиям авторов или названию книги. Однако, несмотря на это, процесс розыска книги мог занимать немалое время.
Немудрено, что с появлением вычислительной техники программисты приступили к созданию программных продуктов, функционально повторяющих ручные картотеки. Для хранения данных в этих программах создавался специальный файл (или группа файлов), который представлял собой простой набор записей - карточек. Запись в свою очередь состояла из полей -информационных строк. С подобной организацией работы мы уже познакомились в главе 4 «Основы работы с файлами». Безусловно, это был серьезный шаг в автоматизации архивного дела, но это решение было до такой степени «лобовым», что невольно возникает мысль, что если бы программисты
тех времен занимались авиастроением, то они научили бы самолеты махать крыльями и гнездиться в скворечниках...
Вполне естественно, что файловые системы, подражающие ручной картотеке, не только унаследовали весь букет недостатков, присущих картотеке, но и умудрились украсить их новыми. Самый серьезный пробел файловых систем заключался в том, что структура и методы хранения записей файлов жестко закладывались в коде программ. При таком подходе любой вопрос усовершенствования «карточки», скажем внедрение нового поля или изменение его размера, требовал грандиозных трудозатрат от программиста. К указанному недостатку стоит добавить, что файловые системы характеризовались:
• Несовместимостью файлов. Одна и та же задача, решенная разными программистами, порождала абсолютно непохожие файлы.
• Фиксированными запросами. Приложение, нацеленное на работу с файловой системой, было вынуждено содержать в своем коде весь перечень запросов. Кроме того, отсутствовал механизм формирования незапланированных запросов к данным.
• Изолированностью данных. Если данные хранились в нескольких файлах (например, список читателей в одном, а книг в другом), значительно усложнялся процесс их обработки.
Проанализировав недостатки файловых систем, ученые пришли к двум очень важным выводам. Во-первых, данные должны храниться отдельно от приложений и быть независимыми от них. Во-вторых, необходимо создать универсальный инструмент доступа к данным. Поиск решения упомянутых проблем и привел к появлению баз данных и систем управления базами данных.
Первая коммерческая СУБД была разработана в середине 1960-х годов. Information Management System (IMS) - совместное детище американских фирм North American Aviation и IBM. Заложенные в ней принципы положили начало одному из способов хранения больших объемов данных, классифицируемому как иерархический. Имя иерархической СУБД IMS получила благодаря особой системе представления данных в виде коллекций записей, объединенных в древовидную схему (рис. 31.1а). Каждая запись иерархической СУБД представляет собой отдельный узел дерева. Запись обязательно должна иметь своего владельца (родительский узел) и имеет полное право стать родителем для неограниченного числа дочерних узлов. Единственное исключение - самый верхний, так называемый корневой узел, у которого нет родительского узла.
Практически в это же время фирма General Electric предложила другой тип СУБД - сетевая СУБД. Реализация этой модели - СУБД IDS (Integrated Data Store). Сетевая модель данных предполагает существование некоторого набора записей, объединенных между собой связью «один-ко-многим». Но, в отличие от иерархической модели, в сетевой СУБД запись может иметь более одного родительского узла. Более того, между записями допускаются рекурсивные связи. Изучив рисунок, нетрудно заметить, что иерархическая модель данных является подтипом сетевой модели.