Введение в системы БД (542480), страница 224
Текст из файла (страница 224)
Короче говоря, заголовки — неуклюжи, а массивы — разрежены. 852 Часть р'. дополнительные аспекты глава 22 Хронологические базы данных 22.1. Введение Замечание. Автор оригинального текста этой главы — Хью Дарвен (Нцй)з Оагзнеп). Хронологическая база данных — это, говоря упрощенно, база данных, содержащая исторические накопленные данные вместо (или кроме) текущих данных. Такие базы данных начали активно исследоваться с середины 70-х годов. В некоторых из исследований была принята крайняя точка зрения, согласно которой информация в подобные базы данных только вносится и никогда не удаляется и не обновляется (см.
обсуждение хранилищ данных в предыдущей главе), поэтому база данных содержит только исторические данные. Другая крайность — базы данных типа моментальный снимок', которые содержат только текущие данные, удаляемые или обновляемые, когда содержание этих данных уже не соответствует действительности. Иными словами, база данных типа моментального снимка — это просто база данных в обычном понимании, а вовсе не хронологическая база данных. В качестве примера еше раз рассмотрим базу данных поставщиков и деталей, представленную на рис.
3.8. Безусловно, эта база данных имеет тип моментального снимка. Например, в ней содержатся сведения о текущем статусе поставщика с номером '81', который в данный момент равен 20. Однако в хронологической версии этой базы данных был бы отражен не только текущий статус поставщика с номером '81', равный 20, но также было бы указано, что его статус равен 20 с 1 июля, а, скажем, с 5 апреля по 30 июня его статус был равен 15, и т.д. В базе данных типа моментального снимка временем выполнения этого снимка обычно считается "данный момент времени", т.е. время, в которое база данных фактически рассматривается. Даже если время выполнения моментального снимка на самом деле отличается от "данного момента времени", это не имеет особого значения для сопровождения и использования данных, которые помещены в моментальный снимок.
Однако, как мы вскоре убедимся, в хронологических базах данных сопровождение и использование данных во многом отличается от обычных баз данных, чему и посвящена эта глава. Отличительной чертой хронологических баз данных является, конечно, присутствие данных о времени. Поэтому при исследовании особенностей хронологических баз данных значительное место занимает изучение свойств самого времени. Ниже представлены некоторые из исследовавшихся вопросов.
г Не имеют ничего общего с ликментальнылги снимналт, онисонньсии в главе 9. 853 Глава 22. Хронологические базы данных ° Философский вопрос. Имеет ли время начало и/или конец? ° Научный вопрос. Время непрерывно или представляет собой дискретные кванты? ° Психологический вопрос.
Как лучше всего определить такое важное понятие, как данный момент времени, которое часто называют моментом пересылки? Хотя эти вопросы, возможно, и интересны сами по себе, они не являются вопросами исключительно теории баз данных, поэтому в данной главе мы не будем в них углубляться. Вместо этого там, где это необходимо, мы просто будем делать некоторые (надеюсь, достаточно разумные) предположения, что позволит уделить больше внимания аспектам, которые непосредственно относятся к общей задаче, поставленной при написании книги. Однако необходимо отметить, что некоторые из исследований свойств времени привели к интересным обобщениям, которые неопровержимо доказывают, что идеи, разработанные для поддержки хронологических данных, могли бы иметь применение н в других областях.
(Несмотря на последнее высказывание мы будем следовать обычной практике использования понятий "хронологические ключи", "хронологические операторы", "хронологические отношения" и т.д., хотя часто они применимы не только к хронологическим базам данных как таковым.) Предупреждение автора! Учитывая сказанное выше, мы сосредоточим внимание лишь на самых интересных и важных идеях, полученных в результате проведенных исследований. Иными словами, в настоящей главе предпринята попытка извлечь и рассмотреть "лучшие стороны" исследований, хотя это и будет отклонением от принятого в литературе перечня рассматриваемых вопросов и других условностей.
Предупредим, что лишь некоторые из рассматриваемых здесь технологий можно встретить в какой-либо коммерческой СУБД. На наш взгляд, причины такого состояния дел следующие, ° Дисковая память лишь совсем недавно стала настолько дешевой, что хранилища исторических данных большого объема стали практически реализуемыми. Однако, как указывалось в главе 21, "хранилища данных" сейчас становятся обыденной реальностью.
Поэтому пользователи будут все чаше сталкиваться с проблемами, связанными с хронологическими базами данных, и нуждаться в их решении. ° Хотя большинство, если не все, из описанных здесь возможностей реализованы в виде прототипов, их внедрение в сушествуюшие продукты — особенно в БО(.- продукты (поскольку язык Я;>(.
все больше отклоняется от реляционной модели вместо того„чтобы ей следовать) — может стать пугаюшей перспективой. Помимо этого, большинство разработчиков сейчас заняты попытками реализовать поддержку объектно-реляционных баз данных (глава 25). ° Мнение сообшества исследователей относительно того, какой именно подход является лучшим для решения данной проблемы, по-прежнему в определенной мере разделено, и такое отсутствие единства также оказывает влияние на разработчиков.
Одни исследователи отдают предпочтение весьма специализированному подходу (предусматриваюшему определенное отклонение от реляционных принципов), приспособленному конкретно для хронологических баз данных, но в этом случае остаются нерешенными иные проблемы (см., например, 122.4)). Другие же отдают предпочтение более общим операторам„ 854 Часть 1'. Дополнительные аспекты которые при необходимости могли бы служить основой для реализации специализированного подхода, не отступая при этом от основных реляционных принципов (см., например, (22.31). Излишне говорить, что мы поддерживаем именно последний подход.
Структура этой главы будет рассмотрена в следующем разделе. 22.2. Хронологические данные Если обычные данные являются закодированным представлением фактов, то хронологические данные являются закодированным представлением фактов с отметкой точного времени, или временной отметкой (бшезгагпр), В хронологических базах данных в соответствии с крайней интерпретацией этого термина все данные являются хронологическими, а значит, каждый записанный факт сопровождается временной отметкой. Таким образом, «ронологическое отношение — это такое отношение, в котором содержится по крайней мере одна временная отметка, т.е. заголовок включает хотя бы один атрибут некоторого типа, представляющего собой временную отметку. Отсюда следует, что «роно«огическая переиенная-отношение является такой переменной-отношением, заголовок которой представлен хронологическим отношением.
В свою очередь, реляционная «ронологическая база Данны« — это база данных, в которой все переменные-отношения являются хронологическими. Замечание. Мы здесь умышленно не уточняем, как могут выглядеть данные "некоторого типа, представляющего собой временную отметку". Этот вопрос будет рассмотрен в разделах 22.3-22.5. Итак, выше было дано достаточно точное определение понятия "хронологическая база данных" (в ее чересчур строгом понимании). Однако такое понятие здесь использоваться не будет, поскольку от него мало проку! Оно отвергается потому, что даже если бы все исходные переменные-отношения в базе данных были хронологическими, то многие производные отношения (например, результаты выполнения запроса) все же не являлись бы хронологическими.
Например, ответ на запрос "Найти фамилии всех служащих, которые были приняты на работу в течение некоторого периода времени" вполне может быть получен из некоторой хронологической базы данных, однако сам ответ не будет представлять собой хронологическое отношение. Это была бы действительно странная СУБД, и уж точно не реляционная, если бы она позволяла получать результаты, которые не смогла бы сохранить в собственной базе данных. Поэтому в настоящей главе будем считать, что хронологические базы данных — это такие базы данных, которые могут включать хронологические данные, но содержание которых не ограничивается лишь хронологическими данными. В настоящей главе подробно обсуждаются именно такие базы данных.
° Далее в этом и следующем разделах содержится вступительный материал для последующих разделов. В частности, в разделе 22.3 показано, почему хронологические данные, как оказывается, требуют специальной трактовки. ° В разделах 22.4 и 22.5 вводится понятие интервалы (промежутки времени) как удобный способ добавления к данным временных отметок.
Затем в разделах 22.6 и 22.7 обсуждается несколько скалярных и обобщающих операторов, предназначенных для обработки интервалов. Глава 22. Хронологические базы данных ° В разделе 22.8 вводятся некоторые новые важные реляционные операторы для обработки хронологических отношений. ° В разделе 22.9 рассматриваются вопросы, касающиеся ограничений целостности для хронологических данных, а в разделе 22.10 — специальные проблемы обновления таких данных. ° Наконец, в разделе 22.11 предлагаются некоторые важные (и, возможно, непривычные) идеи проектирования баз данных и в разделе 22.12 представлено резюме. Замечание. Важно понимать, что, кроме одного исключения (венератора интервального глина, представленного в разделе 22.5), все новые операторы и другие конструкции, обсуждаемые в этой главе, в действительности являются лишь сокращениями.
Другими словами, они могут быть выражены (хотя иногда и очень громоздко) с помощью тех функциональных возможностей, которые уже имеются в полном реляционном языке, таком как Тнгог(а! О. Это утверждение будет подкрепляться по мере необходимости примерами (хотя и не во всех случаях), Некоторые основные концепции и вопросы Рассмотрим, как в обычном языке выражаются так называемые '"высказывания с временной отметкой".