|
Программирование >> Хронологические базы данных
Философский вопрос. Имеет ли время начало и/или конец? Научный вопрос. Время непрерывно или представляет собой дискретные кванты? Психологический вопрос. Как лучше всего определить такое важное понятие, как данный момент времени, которое часто называют л/ол/еншол/ пересылки! Хотя эти вопросы, возможно, и интересны сами по себе, они не являются вопросами исключительно теории баз данных, поэтому в данной главе мы не будем в них углубляться. Вместо этого там, где это необходимо, мы просто будем делать некоторые (надеюсь, достаточно разумные) предположения, что позволит уделить больше внимания аспектам, которые непосредственно относятся к общей задаче, поставленной при написании книги. Однако необходимо отметить, что некоторые из исследований свойств времени привели к интересным обобщениям, которые неопровержимо доказывают, что идеи, разработанные для поддержки хронологических данных, могли бы иметь применение и в других областях. (Несмотря на последнее высказывание мы будем следовать обычной практике использования понятий хронологические ключи , хронологические операторы , хронологические отношения и т.д., хотя часто они применимы не только к хронологическим базам данных как таковым.) Предупреждение автора! Учитывая сказанное выше, мы сосредоточим внимание лишь на самых интересных и важных идеях, полученных в результате проведенных исследований. Иными словами, в настоящей главе предпринята попытка извлечь и рассмотреть лучшие стороны исследований, хотя это и будет отклонением от принятого в литературе перечня рассматриваемых вопросов и других условностей. Предупредим, что лишь некоторые из рассматриваемых здесь технологий можно встретить в какой-либо коммерческой СУБД. На наш взгляд, причины такого состояния дел следующие. Дисковая память лишь совсем недавно стала настолько дешевой, что храни-лиша исторических данных большого объема стали практически реализуемыми. Однако, как указывалось в главе 21, хранилища данных сейчас становятся обыденной реальностью. Поэтому пользователи будут все чаще сталкиваться с проблемами, связанными с хронологическими базами данных, и нуждаться в их решении. Хотя большинство, если не все, из описанных здесь возможностей реализованы в виде прототипов, их внедрение в существующие продукты - особенно в SQL-продукты (поскольку язык SQL все больше отклоняется от реляционной модели вместо того, чтобы ей следовать) - может стать пугаюшей перспективой. Помимо этого, большинство разработчиков сейчас заняты попытками реализовать поддержку объектно-реляционных баз данных (глава 25). Мнение сообщества исследователей относительно того, какой именно подход является лучшим для решения данной проблемы, по-прежнему в определенной мере разделено, и такое отсутствие единства также оказывает влияние на разработчиков. Одни исследователи отдают предпочтение весьма специализированному подходу (предусматривающему определенное отклонение от реляционных принципов), приспособленному конкретно для хронологических баз данных, но в этом случае остаются нерешенными иные проблемы (см., например, [22.4]). Другие же отдают предпочтение более общим операторам. которые при необходимости могли бы служить основой для реализации специализированного подхода, не отступая при этом от основных реляционных принципов (см., например, [22.3]). Излишне говорить, что мы поддерживаем именно последний подход. Структура этой главы будет рассмотрена в следующем разделе. 22.2. Хронологические данные Если обычные данные являются закодированным представлением фактов, то хронологические данные являются закодированным представлением фактов с отметкой точного времени, или временной отметкой (timestamp). В хронологических базах данных в соответствии с крайней интерпретацией этого термина все данные являются хронологическими, а значит, каждый записанный факт сопровождается временной отметкой. Таким образом, хронологическое отношение - это такое отношение, в котором содержится по крайней мере одна временная отметка, т.е. заголовок включает хотя бы один атрибут некоторого типа, представляющего собой временн>ю отметку. Отсюда следует, что хронологическая переменная-отношение является такой переменной-отношением, заголовок которой представлен хронологическим отношением. В свою очередь, реляционная хронологическая база данных - это база данных, в которой все переменные-отношения являются хронологическими. Замечание. Мы здесь умышленно не уточняем, как могут выглядеть данные некоторого типа, представляющего собой временную отметку . Этот вопрос будет рассмотрен в разделах 22.3-22.5. Итак, выше было дано достаточно точное определение понятия хронологическая база данных (в ее чересчур строгом понимании). Однако такое понятие здесь использоваться не будет, поскольку от него мапо проку! Оно отвергается потому, что даже если бы все исходные переменные-отношения в базе данных были хронологическими, то многие производные отношения (например, результаты выполнения запроса) все же не являлись бы хронологическими. Например, ответ на запрос Найти фамилии всех служащих, которые были приняты на работу в течение некоторого периода времени вполне может быть получен из некоторой хронологической базы данных, однако сам ответ не будет представлять собой хронологическое отношение. Это была бы действительно странная СУБД, и уж точно не реляционная, если бы она позволяла получать результаты, которые не смогла бы сохранить в собственной базе данных. Поэтому в настоящей главе будем считать, что хронологические базы данных - это такие базы данных, которые могут включать хронологические данные, но содержание которых не ограничивается лишь хронологическими данными. В настоящей главе подробно обсуждаются именно такие базы данных. Далее в этом и следующем разделах содержится вступительный материал для последующих разделов. В частности, в разделе 22.3 показано, почему хронологические данные, как оказывается, требуют специальной трактовки. В разделах 22.4 и 22.5 вводится понятие интервалы (промежутки времени) как удобный способ добавления к данным временных отметок. Затем в разделах 22.6 и 22.7 обсуждается несколько скалярных и обобщающих операторов, предназначенных для обработки интервалов. в разделе 22.8 вводятся некоторые новые важные реляционные операторы для обработки хронологических отношений. В разделе 22.9 рассматриваются вопросы, касающиеся ограничений целостности для хронологических данных, а в разделе 22.10 - специальные проблемы обновления таких данных. Наконец, в разделе 22.11 предлагаются некоторые важные (и, возможно, непривычные) идеи проектирования баз данных и в разделе 22.12 представлено резюме. Замечание. Важно понимать, что, кроме одного исключения {генератора интервального типа, представленного в разделе 22.5), все новые операторы и другие конструкции, обсуждаемые в этой главе, в действительности являются лишь сокращениями. Другими словами, они могут быть выражены (хотя иногда и очень громоздко) с помощью тех функциональных возможностей, которые уже имеются в полном реляционном языке, таком как Tutorial D. Это утверждение будет подкрепляться по мере необходимости примерами (хотя и не во всех случаях). Некоторые основные концепции и вопросы Рассмотрим, как в обычном языке выражаются так называемые высказывания с временной отметкой . Приведем три примера. 1. С поставщиком с номером S1 был заключен договор (т.е. подписан контракт) от 1 июля 1999 года. 2. Договор с поставщиком с номером S1 действителен с 1 июля 1999 года. 3. Договор о поставках с поставщиком с номером S1 имеет силу на период с 1 июля 1999 года и по настояший день. Каждое из этих высказываний представляет собой возможную интерпретацию кортежа с двумя атрибутами: номером поставщика со значением S1 и временной отметкой 1 июля 1999 года. Причем каждое из этих высказываний может соответствовать кортежу, который содержится в базе данных типа моментального снимка, представляющей текущее состояние некоторого предприятия. Выделенные слова от, с и на период характеризуют эти различные интерпретации. Замечание. Везде в этой главе слова с и на период будут использоваться исключительно в смысле с тех пор и в течение всего времени (рассматриваемого периода) соответственно, если противное не будет указано явно. Хотя здесь приведены три возможные интерпретации, можно возразить, что во всех этих высказываниях в действительности говорится об одном и том же, но с использованием различных выражений. На самом деле высказывания 2 и 3 считаются равносильными, а высказывания 1 и 2 (или 1 и 3) - нет. Покажем, что это действительно так. в высказывании 1, безусловно, утверждается, что с поставщиком с номером S1 договор о поставках не был заключен до определенной даты (30 июня 1999 года), которая непосредственно предшествует указанной дате подписания контракта. В высказывании 2 этот факт не утверждается и из него никак не следует.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |