Что мы умеем?
Системы управления базами данных имели дело в значительной степени с проблемами производительности, корректности, с возможностями поддержки и надежности. Высокая производительность должна быть достижима даже в тех случаях, когда объем данных оказывается значительно большим, чем вмещается в физическую память, и даже когда данные распределены между несколькими машинами. Корректность достигается за счет поддержки ограничений целостности (например, целостности по ссылкам) и сериализации транзакций. Возможности поддержки достигаются благодаря разделению логических и физических структур данных, а также с помощью большого набора инструментальных средств, призванных облегчить осуществление таких функций, как проектирование базы данных и обеспечение необходимого уровня производительности системы. Наконец, надежность достигается обычно за счет комбинации такого механизма, как журнализация с упреждающей записью, с транзакциями, которые могут поддерживать согласованность данных, невзирая на отказы оборудования и ошибки в исполнении программ.
В исследованиях и разработках систем баз данных указанные проблемы изучались с точки зрения сравнительно медленных устройств памяти, которые должны были совместно использоваться множеством одновременно работающих пользователей. Были также разработаны системы баз данных в контексте, где не имеется какого-либо контроля над выполнением их клиентов. Этот подход привел к созданию множества специальных приемов и методов, которые могут быть применены и расширены для решения других проблем. Ниже описываются эти приемы и методы.
- Моделирование данных. Модель данных состоит из языка определения структуры базы данных (языка определения данных) и языка манипулирования этими структурами (языка манипулирования данными, например, языка запросов). Схема определяет конкретную базу данных в терминах языка определения данных. Благодаря удовлетворению того требования, чтобы все данные описывались схемой, СУБД может обеспечить разделение между хранимыми структурами данных и абстракциями уровня приложений.
Такая независимость данных облегчает поддержку, поскольку хранимые структуры могут изменяться, не оказывая какого-либо влияния на приложения.
Хорошая модель данных должна быть достаточно выразительна для того, чтобы охватывать широкий класс приложений, и, кроме того, должна допускать эффективную реализацию. Несмотря на то, что реляционная модель была доминирующей на протяжении последнего десятилетия, имеются явные признаки потребности в более мощных и гибких моделях. Разработка и использование моделей данных являются важными темами исследований в сообществе специалистов по базам данных, а расширение этих моделей с целью включения в них более сложных типов данных, таких как электронные таблицы и потоки видеоданных, является важным направлением исследований для построения будущих реализациий.
Языки запросов. Запрос представляет собой программу, которая записывается на языке высокого уровня и обеспечивает выборку данных из базы данных. Структура запроса к базе данных относительно проста, что позволяет легко его понимать, автоматически генерировать и оптимизировать. Многие современные языки запросов (например, SQL) являются декларативными, поскольку они выражают, что должно быть возвращено из базы данных, без каких-либо ссылок на структуры хранения или алгоритмы доступа к этим структурам. Поскольку на уровне запроса не может указываться какой-либо способ его реализации, процессор запросов свободен в выборе стратегии обработки. Более того, отделение запроса от реализации означает, что структуры хранения могут изменяться, не приводя к недействительности существующих выражений запросов.
Оптимизация и обработка запросов. Реляционные базы данных стали коммерческой реальностью благодаря хорошо продуманным оптимизаторам реляционных языков запросов и разработке эффективных алгоритмов обработки запросов. Способность компилировать запросы в планы исполнения на основе форм запросов, а также текущих структур хранения на диске, является важной составной частью разработки систем баз данных.
Технология оптимизации является особенно важной для выборки данных и манипулирования ими в тех случаях, когда степень риска выбора неэффективной стратегии является высокой, и всякий раз, когда могут изменяться условия среды, на которых основан план исполнения.
Представления, основанные на состоянии. C использованием языка запросов можно определять ограниченные и, может быть, реорганизованные представления базы данных. Такие представления, основанные на состоянии, часто используются для ограничения доступа к данным. Мы можем, например, ограничить использование базы данных представлением, содержащим средние значения зарплаты по отделам, исключив из него отделы, в которых работает менее трех служащих. В файловых системах авторизация доступа обычно основывается на привилегиях доступа, ассоцируемыми с каждым файлом, независимо от его содержимого.
Управление данными. В системах баз данных всегда уделялось особое внимание автоматической поддержке структур данных, подобных индексам, и эффективному перемещению данных в системные буфера и из них. Обычно эти средства управления данными хорошо настраиваются на конкретные используемые запоминающие устройства. Такой подход к бережному использованию ресурсов может быть расширен на другие области, в которых в состав устройств включают, например, линии связи и третичная память.
Транзакции. Сообщество баз данных разработало концепцию транзакции в ответ на возникновение проблем корректности, связанных с параллельным доступом и обновлением. Принятие критерия корректности, основанного на атомарности транзакций, упростило программирование, поскольку программист больше не должен беспокоиться относительно помех, порождаемых другими программами.
Транзакции используются также в качестве единиц восстановления. После того, как транзакция зафиксирована, гарантируется, что внесенные ею изменения сохраняются даже в случае какого-либо отказа оборудования или ошибки в исполнении программ.
В последнее время исследуются также и другие, ослабленные концепции транзакций.
Обычно они основываются на понятии корректности, задаваемом пользователями.
Распределенные системы. Системы баз данных должны иметь дело с проблемами, возникающими в связи с наличием данных, которые распределены между несколькими машинами. Протокол двухфазной фиксации (two-phase commit) позволяет системе сохранять преимущества атомарных транзакций при наличии распределенных и, возможно, ненадежных активностей. К числу других областей, исследовавшихся в распределенном контексте, относятся обработка запросов, обнаружение тупиковых ситуаций, а также интеграция неоднородных данных.
Масштабируемые системы. Базы данных всегда имели дело с очень большими наборами данных. Системы баз данных настраивались, по большей части, на эффективное и надежное управление такими объемами данных, которые превышают размер физической памяти на несколько порядков. Такой подход использовался, главным образом, по той причине, что системы баз данных с успехом находили применение в реальных коммерческих средах.
Мы не считаем приведенный список исчерпывающим. Скорее, он иллюстрирует некоторые важные технологии, которые были созданы специалистами, занимающимися исследованиями и разработками в области баз данных. Исследовались также и другие области, в частности, активные базы данных и интеллектуальный анализ данных (data mining).
1
В июне 1996 года Лаборатория информатики Массачусетского технологического института (США) при поддержке ACM, National Science Foundation и ряда других организаций провела симпозиум "Strategic Directions in Computing Research". На симпозиуме были представлены обзорные доклады о стратегических направлениях развития практически по всем крупным разделам информатики. Для подготовки докладов было создано более двух десятков рабочих групп, в состав которых вошли известные специалисты в соответствующей области. Предлагаемая читателю статья представляет собой отчет, подготовленный рабочей группой по базам данных под редакцией авторов. От этой рабочей группы в симпозиуме участвовали Х.Блейкли (Jose Blakeley), П.Бунеман (Peter Buneman), У.Дайал (Umesh Dayal), Т.Имилинский (Tomasz Imielinski), С.Джаджодиа (Sushil Jajodia), Х.Корт (Hank Korth), Г.Лохман (Guy Lohman), Д.Ломе (Dave Lomet), Д.Майер (Dave Maier), Ф.Манола (Frank Manola), Т.Озу (Tamer Ozsu), Р.Рамакришнан (Raghu Ramakrishnan), К.Рамамритан (Krithi Ramamritham), Х.Шек (Hans Scheck), А.Зильбершац (Avi Silberschatz, сопредседатель), Р.Снодграсс (Rick Snodgrass), Д.Ульман (Jeff Ullman), Д.Вайдом (Jennifer Widom) и С.Здоник (Stan Zdonik, сопредседатель).
Материалы симпозиума были опубликованы в специальном выпуске журнала ACM Computing Surveys, v.28, no.4, December 1996. – Прим. пер.
2) Вряд ли можно согласиться с этим мнением авторов. Хотя создание системы IMS (1969 год) действительно было значительным событием в становлении технологии баз данных, однако, еще до появления этой системы был осуществлен ряд других весьма значимых разработок в этой области. В частности, примерно за шесть лет до выпуска IMS была реализована система IDS (Integrated Data Storage), ставшая прототипом подхода CODASYL, оставившего не менее глубокий след в технологии баз данных, чем создание системы IMS. Руководитель этой разработки – Ч.Бахман - стал впоследствии лауреатом премии Тьюринга за работы в области систем баз данных, основанных на подходе CODASYL. Описание возможностей системы IDS и ряда других ранних СУБД можно найти в изданном в русском переводе техническом отчете Системного комитета CODASYL 1971 года "Feature Analysis of Generalized Data Base Management Systems" (см. Информационные системы общего назначения. Пер. с англ. – М.: Статистика, 1975). Нужно упомянуть также, что еще в 1963 и в 1965 годах компания System Development Corporation (США) провела два симпозиума по управлению базами данных, где были представлены конкретные реализованные проекты систем баз данных. Таким образом, технология баз данных возникла еще задолго до появления системы IMS. – Прим. пер.
3) Здесь мы снова вынуждены возразить авторам. Подход CODASYL вовсе не является преемником IMS. В идейном плане он, как уже мы указывали, скорее, последователь идей системы IDS (см. предыдущую сноску). Кроме того, авторы противоречат и хронологии событий. Первая версия системы IMS была выпущена компанией IBM в 1969 году. Первый отчет CODASYL DBTG, содержащий не только основные концепции предложенного DBTG подхода (кстати говоря, существенно более продвинутого, с архитектурной точки зрения, по сравнению с IMS), но и начальный вариант спецификаций языка определения данными схемы, а также языка манипулирования данными и языка определения данных подсхемы для включающего языка COBOL, был опубликован также в 1969 году.Таким образом, эти работы проводились, по крайней мере, одновременно. – Прим. пер.