Временная база данных - Temporal database

А временная база данных хранит данные, относящиеся к моментам времени. Он предлагает типы временных данных и хранит информацию, относящуюся к прошлому, настоящему и будущему времени. Временные базы данных могут быть одновременными, двухвременными или трехвременными.

Более конкретно, временные аспекты обычно включают действительное время, время транзакции или же время принятия решения.

  • Действительное время это период времени, в течение которого факт является истинным в реальном мире.
  • Время транзакции время, когда факт был записан в базу данных.
  • Время принятия решения время, когда было принято решение по факту.

Uni-Temporal

Одновременная база данных имеет одну ось времени: либо диапазон действия, либо диапазон системного времени.

Би-темпоральный

Двувременная база данных имеет две оси времени:

  • действительное время
  • время транзакции или время принятия решения

Трехвременный

Трехвременная база данных имеет три оси времени:

  • действительное время
  • время транзакции
  • время принятия решения

Такой подход привносит дополнительные сложности.

Темпоральные базы данных в отличие от текущие базы данных (не путать с доступными в настоящее время базами данных), в которых хранятся только факты, которые считаются истинными в настоящее время.

Функции

Темпоральные базы данных поддерживают управление и доступ к временным данным, предоставляя одну или несколько из следующих функций:[1][2]

  • Тип данных периода времени, включая возможность представления периодов времени без конца (бесконечность или вечность).
  • Возможность определять действительные атрибуты периода времени и периода транзакции, а также битемпоральные отношения
  • Время транзакции, поддерживаемое системой
  • Временный первичные ключи, включая ограничения неперекрывающихся периодов
  • Временные ограничения, включая неперекрывающуюся уникальность и ссылочная целостность
  • Обновление и удаление временных записей с автоматическим разделением и объединением периодов времени
  • Временные запросы в текущее время, временные точки в прошлом или будущем или по длительности
  • Предикаты для запроса периодов времени, часто основанные на Интервальные отношения Аллена

История

С развитием SQL и его сопутствующим использованием в реальных приложениях пользователи баз данных осознали, что при добавлении столбцов даты в ключевые поля возникают некоторые проблемы. Например, если таблица имеет первичный ключ и некоторые атрибуты, добавление даты к первичному ключу для отслеживания исторических изменений может привести к созданию большего количества строк, чем предполагалось. Если строки отслеживаются таким образом, удаления также должны обрабатываться иначе. В 1992 году эта проблема была признана, но стандартная теория баз данных еще не решила ее, как и недавно формализованный стандарт.

Ричард Снодграсс В 1992 г. предложила, чтобы временные расширения SQL были разработаны сообществом временных баз данных. В ответ на это предложение был сформирован комитет для разработки расширений к версии стандарта SQL 1992 г. (ANSI X3.135.-1992 и ISO / IEC 9075: 1992); эти расширения, известные как TSQL2, были разработаны этим комитетом в 1993 году.[3] В конце 1993 года Снодграсс представил эту работу группе, ответственной за Американский национальный стандарт языка баз данных SQL, Техническому комитету ANSI X3H2 (теперь известному как NCITS H2). Предварительная спецификация языка появилась в записи ACM SIGMOD за март 1994 года. На основе ответов на эту спецификацию в язык были внесены изменения, и окончательная версия спецификации языка TSQL2 была опубликована в сентябре 1994 г.[4]

Была предпринята попытка включить части TSQL2 в новый стандарт SQL. SQL: 1999, называется SQL3. Части TSQL2 были включены в новый нестандартный стандарт SQL3, ISO / IEC 9075-7, который называется SQL / Temporal.[3] Подход TSQL2 подвергся резкой критике со стороны Крис Дата и Хью Дарвен.[5] Проект ISO, отвечающий за временную поддержку, был отменен ближе к концу 2001 года.

По состоянию на декабрь 2011 г., ISO / IEC 9075, Язык баз данных SQL: 2011 Часть 2: SQL / Foundation включил в определения таблиц пункты для определения «таблиц периодов времени приложения» (действительное время таблицы), «таблицы с системными версиями» (время транзакции таблицы) и "таблицы периодов времени приложения с системными версиями" (битемпоральный таблицы). Существенное различие между предложением TSQL2 и тем, что было принято в SQL: 2011, заключается в том, что в обработке SQL: 2011 нет скрытых столбцов и нет нового типа данных для интервалов; вместо этого два столбца даты или времени можно связать вместе с помощью ПЕРИОД НА декларация. Другое отличие заключается в замене спорных (префиксных) модификаторов операторов из TSQL2 на набор временных предикатов.[1]

Другие особенности SQL: 2011 стандартом, связанным с темпоральными базами данных, являются автоматическое разделение периодов времени, временные первичные ключи, временная ссылочная целостность, временные предикаты с Алгебра интервалов Аллена а также запросы с временным интервалом и последовательностью.

Пример

В качестве иллюстрации рассмотрим следующую краткую биографию вымышленного человека Джона Доу:

Джон Доу родился 3 апреля 1975 года в Детской больнице Медицинского округа, в семье Джека Доу и Джейн Доу, которые жили в Смоллвилле. Джек Доу с гордостью зарегистрировал рождение своего первенца 4 апреля 1975 года в мэрии Смоллвилля. Джон рос веселым мальчиком, оказался отличным учеником и окончил его с отличием в 1993 году. После окончания уехал жить один в Бигтаун. Хотя он выехал 26 августа 1994 г., он забыл официально зарегистрировать изменение адреса. Только на рубеже сезонов его мать напомнила ему, что он должен зарегистрироваться, что он и сделал несколько дней спустя, 27 декабря 1994 года. Хотя у Джона было многообещающее будущее, его история заканчивается трагически. 1 апреля 2001 года Джон Доу был случайно сбит грузовиком. Коронер сообщил дату своей смерти в тот же день.

Использование невременной базы данных

Чтобы сохранить жизнь Джона Доу в текущей (не временной) базе данных, мы используем таблицу Лицо (имя, адрес). (Чтобы упростить Имя определяется как первичный ключ из Человек.)

Отец Джона официально сообщил о его рождении 4 апреля 1975 года. В этот день чиновник Смоллвилля внес в базу данных следующую запись: Человек (Джон Доу, Смоллвиль)Обратите внимание, что сама дата не хранится в базе данных.

После окончания школы Джон уезжает, но забывает зарегистрировать свой новый адрес. Запись Джона в базе данных не менялась до 27 декабря 1994 года, когда он наконец сообщил об этом. Официальный представитель Bigtown обновляет свой адрес в базе данных. В Человек таблица теперь содержит Человек (Джон Доу, Бигтаун).Обратите внимание, что информация о Джоне, живущем в Смоллвиле, была перезаписана, поэтому получить эту информацию из базы данных больше невозможно. Официальному лицу, обращающемуся к базе данных 28 декабря 1994 г., было бы сказано, что Джон живет в Бигтауне. Точнее говоря, если бы администратор базы данных выполнил запрос. ВЫБРАТЬ АДРЕС ОТ ЛИЦА, ГДЕ ИМЯ = 'John Doe' 26 декабря 1994 г. результат будет Тайны Смоллвилля. Выполнение того же запроса через 2 дня приведет к Большой город.

До его смерти в базе данных говорилось, что он жил в Бигтауне. 1 апреля 2001 г. коронер удаляет запись о Джоне Доу из базы данных. После этого выполнение вышеуказанного запроса вообще не вернет результата.

ДатаСобытие реального мираДействие базы данныхЧто показывает база данных
3 апреля 1975 г.Джон родилсяНичегоНет человека по имени Джон Доу
4 апреля 1975 г.Отец Джона официально сообщает о рождении ДжонаВставлено: Человек (Джон Доу, Смоллвиль)Джон Доу живет в Смоллвиле
26 августа 1994 г.После окончания школы Джон переезжает в Бигтаун, но забывает зарегистрировать свой новый адрес.НичегоДжон Доу живет в Смоллвиле
26 декабря 1994 г.НичегоНичегоДжон Доу живет в Смоллвиле
27 декабря 1994 г.Джон регистрирует свой новый адресОбновлено: Человек (Джон Доу, Bigtown)Джон Доу живет в Бигтауне
1 апреля 2001 г.Джон умираетУдалено: Человек (Джон Доу)Нет человека по имени Джон Доу

Использование одной оси: допустимое время или время транзакции

Действительное время это время, в течение которого факт является истинным в реальном мире. Действительный период времени может быть в прошлом, охватывать текущее время или наступать в будущем.

В приведенном выше примере для записи действительного времени Человек таблица имеет два добавленных поля, Действует с и Действителен до. Они определяют период, когда адрес человека действителен в реальном мире. 4 апреля 1975 года отец Джона зарегистрировал рождение своего сына. Затем чиновник вводит новую запись в базу данных о том, что Джон живет в Смоллвилле с 3 апреля. Обратите внимание, что, хотя данные были вставлены 4 апреля, в базе данных указано, что информация действительна с 3 апреля. Чиновник еще не знает, переедет ли Джон в другое место и когда, поэтому Действителен до поле установлено на бесконечность (∞). Запись в базе данных:

Человек (Джон Доу, Смоллвиль, 3 апреля 1975 г., ∞).

27 декабря 1994 года Джон сообщает свой новый адрес в Бигтауне, где он живет с 26 августа 1994 года. Для записи этого факта сделана новая запись в базе данных:

Человек (Джон Доу, Бигтаун, 26 августа 1994 г., ∞).

Исходная запись Человек (Джон Доу, Смоллвиль, 3 апреля 1975 г., ∞) не удаляется, но имеет Действителен до Атрибут обновлен, чтобы отразить, что теперь известно, что Джон перестал жить в Смоллвилле 26 августа 1994 г. База данных теперь содержит две записи для Джона Доу

Человек (Джон Доу, Смоллвиль, 3 апреля 1975 г., 26 августа 1994 г.) Лицо (Джон Доу, Бигтаун, 26 августа 1994 г., ∞).

Когда Джон умирает, его текущая запись в базе данных обновляется о том, что Джон больше не живет в Бигтауне. База данных теперь выглядит так

Человек (Джон Доу, Смоллвиль, 3 апреля 1975 г., 26 августа 1994 г.) Личность (Джон Доу, Бигтаун, 26 августа 1994 г., 1 апреля 2001 г.).

Использование двух осей: действительное время и время транзакции

Время транзакции записывает период времени, в течение которого запись в базе данных считается правильной. Это позволяет выполнять запросы, которые показывают состояние базы данных в данный момент времени. Периоды времени транзакции могут иметь место только в прошлом или до текущего времени. В таблице времени транзакции записи никогда не удаляются. Можно вставлять только новые записи, а существующие обновлять, задав время окончания транзакции, чтобы показать, что они больше не актуальны.

Чтобы включить время транзакции в приведенном выше примере, в таблицу Person добавляются еще два поля: Транзакция-От и Транзакция-Кому. Транзакция-От время совершения транзакции, и Транзакция-Кому время, когда транзакция была заменена (которая может быть бесконечной, если она еще не была заменена). Это превращает таблицу в битемпоральный стол.

Что произойдет, если адрес человека, хранящийся в базе данных, неверен? Предположим, чиновник случайно ввел неправильный адрес или дату? Или предположим, что человек по какой-то причине солгал о своем адресе. При обнаружении ошибки официальные лица обновляют базу данных, чтобы исправить записанную информацию.

Например, с 1 июня 1995 г. по 3 сентября 2000 г. Джон Доу переехал в Бичи. Но, чтобы избежать уплаты непомерного налога на проживание Бичи, он никогда не сообщал об этом властям. Позже, в ходе налогового расследования, 2 февраля 2001 года выяснилось, что он действительно находился в Бичи в те дни. Чтобы зафиксировать этот факт, существующая запись о Джоне, живущем в Бигтауне, должна быть разделена на две отдельные записи, а новая запись должна быть добавлена ​​с записью его проживания в Бичи. База данных тогда будет выглядеть следующим образом:

Человек (Джон Доу, Смоллвиль, 3 апреля 1975 г., 26 августа 1994 г.) Лицо (Джон Доу, Бигтаун, 26 августа 1994 г., 1 июня 1995 г.) Человек (Джон Доу, Бичи, 1 июня -1995, 3 сентября 2000 г.) Лицо (Джон Доу, Бигтаун, 3 сентября 2000 г., 1 апреля 2001 г.).

Однако это не оставляет никаких записей о том, что в базе данных когда-либо утверждалось, что он жил в Бигтауне с 1 июня 1995 г. по 3 сентября 2000 г. Это может быть важно знать для целей аудита или использовать в качестве доказательства в налоговом расследовании должностного лица. Время транзакции позволяет фиксировать эти изменяющиеся знания в базе данных, поскольку записи никогда не изменяются или не удаляются напрямую. Вместо этого каждая запись записывает, когда она была введена и когда она была заменена (или логически удалена). Тогда содержимое базы данных будет выглядеть так:

Имя, Город, Действительно с, Действительно до, Введено, Заменено
Человек (Джон Доу, Смоллвиль, 3 апреля 1975 г., ∞, 4 апреля 1975 г., 27 декабря 1994 г.) Человек (Джон Доу, Смоллвиль, 3 апреля 1975 г., 26 августа 1994 г., 27 декабря -1994, ∞). Лицо (Джон Доу, Бигтаун, 26 августа 1994 г., ∞, 27 декабря 1994 г., 2 февраля 2001 г.) Лицо (Джон Доу, Бигтаун, 26 августа 1994 г., 1 июня -1995, 2 февраля 2001, ∞). Лицо (Джон Доу, Бичи, 1 июня 1995 г., 3 сентября 2000 г., 2 февраля 2001 г., ∞). Лицо (Джон Доу, Бигтаун, 3 сентября -2000, ∞, 2 февраля 2001 г., 1 апреля 2001 г.) Лицо (Джон Доу, Bigtown, 3 сентября 2000 г., 1 апреля 2001 г., 1 апреля 2001 г., ∞).

В базе данных фиксируется не только то, что происходило в реальном мире, но и то, что было официально зарегистрировано в разное время.

Использование трех осей: действительное время, время принятия решения и время транзакции.

Время принятия решения является альтернативой периоду времени транзакции для записи времени, когда запись в базе данных может быть принята как правильная. Это позволяет выполнять запросы, которые показывают официально признанные факты в определенный момент времени, даже если произошла задержка в передаче этих фактов в базу данных. Поддержка времени принятия решения сохраняет всю историю и предотвращает потерю информации во время обновлений.[6]

Периоды времени принятия решения могут иметь место только в прошлом или до времени транзакции. Как и в таблице времени транзакции, записи никогда не удаляются. Можно вставлять только новые записи, а существующие обновлять, задав для них время окончания принятия решения, чтобы показать, что они больше не актуальны.

Чтобы включить время принятия решения, в таблицу базы данных добавляются еще два поля: Решение от и Решение К. Решение от время было принято решение, и Решение-К - время, когда решение было отменено (которое может быть бесконечным, если оно еще не было отменено). В сочетании со временем транзакции это превращает таблицу в банальная таблица.

Ниже приводится список реальных событий, произошедших между Президентские выборы в США 1964 и 1976 гг .:

ДатаПринимающий решенияСобытие реального мира
3 ноября 1964 г. Коллегия выборщиков Выборы 1964 года
5 ноября 1968 г.Коллегия выборщиков Выборы 1968 г.
7 ноября 1972 г.Коллегия выборщиков Выборы 1972 года
10 октября 1973 г.Спиро Агнью Агню уходит в отставку
12 октября 1973 г.Ричард Никсон Никсон номинирует Форд
6 декабря 1973 г. КонгрессКонгресс подтвердил Ford
9 августа 1974 г.Ричард Никсон Никсон уходит в отставку
20 августа 1974 г.Джеральд Форд Форд номинирует Рокфеллера
19 декабря 1974 г.КонгрессКонгресс подтверждает Рокфеллера
2 ноября 1976 г.Коллегия выборщиков Выборы 1976 г.

Предположим, что между временем принятия решения и временем транзакции, зафиксированной в базе данных, существует постоянная 7-дневная задержка. Тогда, после выборов 1976 года, содержимое базы данных будет следующим:

                   Президент, Вице-президент, срок действия, срок действия, решение от, решение до, транзакция от, транзакция до ---------------------------- -------------------------------------------------- -------------------------------------------------- - Администрация (Линдон Джонсон, Хьюберт Хамфри, 20 января 1965, 20 января 1969, 3 ноября 1964, ∞, 10 ноября 1964, ∞) Администрация (Ричард Никсон, Спиро Агнью, 20 января 1964 года). 1969, 20 января 1973, 5 ноября 1968, ∞, 12 ноября 1968, ∞) Администрация (Ричард Никсон, Спиро Агнью, 20 января 1973, 20 января 1977, 7 ноября 1972, ∞, 14 ноября 1972 г., 17 октября 1973 г.) Администрация (Ричард Никсон, Спиро Агнью, 20 января 1973 г., 20 января 1977 г., 7 ноября 1972 г., 10 октября 1973 г., 17 октября- 1973, ∞) Администрация (Ричард Никсон, Спиро Агнью, 20 января 1973, 10 октября 1973, 10 октября 1973, ∞, 17 октября 1973, ∞) Администрация (Ричард Никсон, (Вакант), 10 -Окт-1973, 20-янв-1977, 10-окт-1973, ∞, 17-окт-1973, 13 - декабрь 1973 г.) Администрация (Ричард Никсон, Джеральд Форд, ∞, 20 января 1977 г., 12 октября 1973 г., ∞, 19 октября 1973 г., 13 декабря 1973 г.) Администрация (Ричард Никсон, (вакантно), 10 октября 1973 г., 20 января 1977 г., 10 октября 1973 г., 6 декабря 1973 г., 13 декабря 1973 г., ∞) Администрация (Ричард Никсон, (Вакант), 10 октября 1973 г., 6 декабря -1973, 6 декабря 1973, ∞, 13 декабря 1973, ∞) Администрация (Ричард Никсон, Джеральд Форд, ∞, 20 января 1977, 12 октября 1973, 6 декабря 1973, 13 декабря -1973, ∞) Администрация (Ричард Никсон, Джеральд Форд, 6 декабря 1973 г., 20 января 1977 г., 6 декабря 1973 г., ∞, 13 декабря 1973 г., 15 августа 1974 г.) Администрация (Ричард Никсон, Джеральд Форд, 6 декабря 1973, 20 января 1977, 6 декабря 1973, 8 августа 1974, 15 августа 1974, ∞) Администрация (Ричард Никсон, Джеральд Форд, 6 декабря 1973, 9 -Авг-1974, 8-авг-1974, ∞, 15-авг-1974, ∞) Администрация (Джеральд Форд, (вакантно), 9-авг-1974, 20-янв-1977, 8-авг-1974, ∞, 15 августа 1974 г., 26 декабря 1974 г.) Администрация (Джеральд Форд, Нельсон Рокфеллер, ∞, 20 января 1977 г., 20 августа 1974 г., ∞, 27 августа 1974 г., 26 декабря 1974 г.) Администрация (Джеральд Форд, (свободно), 9 августа 1974 г., 20 января 1977 г., 8 августа 1974 г., 19 декабря 1974 г., 26 декабря 1974 г., ∞) Администрация (Джеральд Форд, (вакантно), 9 августа 1974, 19 декабря 1974, 19 декабря 1974, ∞, 26 декабря 1974, ∞) Администрация (Джеральд Форд, Нельсон Рокфеллер, ∞, 20 января 1977, 20 августа 1974, 19 декабря 1974 г., 26 декабря 1974 г., ∞) Администрация (Джеральд Форд, Нельсон Рокфеллер, 19 декабря 1974 г., 20 января 1977 г., 19 декабря 1974 г., ∞, 26 декабря 1974 г., ∞) Администрация (Джимми Картер, Уолтер Мондейл, 20 января 1977 г., 20 января 1981 г., 2 ноября 1976 г., ∞, 9 ноября 1976 г., ∞)

Рассмотрим вопрос о том, кто будет президентом и вице-президентом в течение действительного времени с 1 января 1977 года:

  • Никсон / Агнью при использовании времени принятия решения и времени транзакции от 14 ноября 1972 г.
  • Nixon / (Vacant) при использовании времени принятия решения и времени транзакции 17 октября 1973 г.
  • Никсон / Форд при использовании времени принятия решения и времени транзакции от 8 августа 1974 г.
  • Ford / (Vacant) при использовании времени принятия решения 8 августа 1974 г. и времени транзакции текущего
  • Форд / Рокфеллер при использовании времени принятия решения и времени транзакции текущего

Битемпоральное моделирование

А битемпоральная модель содержит как действительное время, так и время транзакции. Это обеспечивает как исторический и откат Информация. Историческая информация (например: «Где жил Джон в 1992 году?») Предоставляется по действительному времени. Откат (например: «Где, по мнению базы данных, жил Джон в 1992 году?») Обеспечивается временем транзакции. Ответы на эти примерные вопросы могут быть разными - база данных могла быть изменена с 1992 года, в результате чего запросы давали разные результаты.

Действительное время и время транзакции не обязательно должны совпадать для одного факта. Например, рассмотрим временную базу данных, в которой хранятся данные о 18 веке. Действительное время этих фактов находится где-то между 1701 и 1800 годами. Время транзакции покажет, когда факты были вставлены в базу данных (например, 21 января 1998 г.).

Эволюция схемы

Сложной проблемой является поддержка временных запросов в базе данных времени транзакции при развитии схема. Для достижения идеального качества архивирования очень важно хранить данные в той версии схемы, в которой они впервые появились. Однако даже самый простой темпоральный запрос, перезаписывающий историю значения атрибута, потребуется вручную переписать под каждой из версий схемы, потенциально сотни, как в случае с MediaWiki. [1].Этот процесс будет особенно обременительным для пользователей. Предлагаемое решение - обеспечить автоматическое переписывание запросов,[7][8] хотя это не является частью SQL или аналогичных стандартов.

Подходы к минимизации сложностей эволюция схемы находятся:

  • использовать полуструктурированную базу данных / базу данных NoSQL, которая упрощает моделирование данных атрибутов, но не предоставляет функций для обработки нескольких осей времени.[9]
  • использовать базу данных, способную хранить как полуструктурированные данные для атрибутов, так и структурированные данные для осей времени (например, SnowflakeDB, PostgreSQL)

Реализации в известных продуктах

Следующие реализации предоставляют временные функции в системе управления реляционными базами данных (RDBMS).

  • MariaDB в версии 10.3.4 добавлена ​​поддержка SQL: 2011 стандартным как «Таблицы с контролем версий системы».[10]
  • База данных Oracle - Oracle Workspace Manager - это функция Oracle Database, которая позволяет разработчикам приложений и администраторам баз данных управлять текущими, предлагаемыми и историческими версиями данных в одной базе данных.
  • PostgreSQL Версия 9.2 добавила собственные ранжированные типы данных, которые способны реализовать все функции временного расширения pgFoundry.[11][12] Типы диапазонов PostgreSQL поддерживаются множеством собственных операторов и функций.
  • Терадата предоставляет два продукта. Teradata версии 13.10 и Терадата версии 14 имеют временные особенности на основе TSQL2[13] встроен в базу данных.
  • IBM DB2 версия 10 добавила функцию под названием "запрос путешествия во времени"[2] который основан на временных возможностях SQL: 2011 стандарт.[1]
  • Microsoft SQL Server представила временные таблицы как функцию для SQL Server 2016. Эта функция описана в видеоролике на веб-сайте Microsoft Channel 9.[14]

Нереляционные системы управления базами данных NoSQL, которые предоставляют временные функции, включая следующие:

  • TerminusDB полнофункциональный Открытый исходный код база данных графов который изначально поддерживает контроль версий, запросы путешествия во времени и функции сравнения. Он имеет неизменяемую архитектуру слоев, основанную на дельта-кодирование и лаконичные структуры данных[15].
  • MarkLogic добавлена ​​поддержка битемпоральных данных в версии 8.0. Отметки времени для действительного и системного времени хранятся в документах JSON или XML.[16]
  • SirixDB очень эффективно сохраняет моментальные снимки (в настоящее время) XML- и JSON-документов в двоичном формате благодаря новому алгоритму управления версиями, называемому скользящим моментальным снимком, который уравновешивает производительность чтения / записи и никогда не создает пиков записи. Запросы путешествия во времени поддерживаются изначально, а также функции сравнения.
  • Crux обеспечивает битемпоральный Лог данных запросы к транзакциям и документам, полученным из полу неизменяемых журналов Kafka. Документы автоматически индексируются для создания Модель сущность – атрибут – значение индексы без каких-либо требований для определения схемы. Операции транзакции указывают действующее время действия. Время транзакции назначается Kafka и обеспечивает горизонтальную масштабируемость за счет согласованного чтения.
  • RecallGraph представляет собой единичную (время транзакции) графовую базу данных на определенный момент времени, построенную на основе ArangoDB. Он работает на ArangoDB Фокс микросервис подсистема. Это особенности VCS -подобная семантика во многих частях интерфейса и поддерживается транзакционный трекер событий. Битемпоральность указана как один из пунктов в ее дорожная карта развития.

Альтернативы

Пример модели медленно меняющегося размера (SCD)
(нажмите на изображение, чтобы увидеть)

Медленно меняющиеся размеры может использоваться для моделирования временных отношений.

дальнейшее чтение

  • C.J. Дата, Хью Дарвен, Никос Лоренцос (2002). Временные данные и реляционная модель, первое издание (Серия Моргана Кауфмана в системах управления данными); Морган Кауфманн; 1-е издание; 422 страницы. ISBN  1-55860-855-9.
  • Джо Селко (2014). SQL для умников Джо Селко: расширенное программирование SQL (Серия Морган Кауфманн по управлению данными); Морган Кауфманн; 5-е издание. ISBN  978-0-12-800761-7. — В главах 12 и 35, в частности, обсуждаются временные вопросы.
  • Снодграсс, Ричард Т. (1999). "Разработка приложений для ориентированных на время баз данных на SQL " (PDF). (4.77 МиБ ) (Серия Морган Кауфманн по системам управления данными); Морган Кауфманн; 504 страницы; ISBN  1-55860-436-7

Смотрите также

Рекомендации

  1. ^ а б c Кулкарни, Кришна и Ян-Эйке Михелс. "Временные особенности в SQL: 2011 ". ACM SIGMOD Record 41.3 (2012): 34-43.
  2. ^ а б Саракко, Синтия М .; Никола, Матиас; Ганди, Лениша (3 апреля 2012 г.). «Вопрос времени: управление временными данными в DB2 10». Получено 2020-10-27.
  3. ^ а б Снодграсс, 1999, стр. 9
  4. ^ Ричард Т. Снодграсс. "Язык временных запросов TSQL2". www.cs.arizona.edu. Департамент компьютерных наук Университета Аризоны. Получено 14 июля 2009.
  5. ^ Хью Дарвен, Си Джей Дэйт, "Обзор и анализ предложений на основе подхода TSQL2 ", В Дата в базе данных: записи 2000-2006 гг., C.J. Date, Apress, 2006, стр. 481-514.
  6. ^ Марио А. Насименто, Маргарет Х. Эйх, «Время принятия решения во временных базах данных ", В Труды второго международного семинара по темпоральному представлению и рассуждению, 1995, стр. 157-162.
  7. ^ Хён Дж. Мун; Карло А. Курино; Алин Дойч; C.-Y. Хоу и Карло Заниоло (2008). Управление базами данных во время транзакции и запросы к ним в процессе эволюции схемы. Очень большая база данных VLDB.
  8. ^ Хён Дж. Мун; Карло А. Курино и Карло Дзаниоло (2010). Масштабируемая архитектура и оптимизация запросов для транзакционных БД с развивающимися схемами. SIGMOD.
  9. ^ Энтони Б. Коутс (2015). Почему банки заботятся о битемпоральности. MarkLogic World 2015.
  10. ^ https://mariadb.com/kb/en/library/system-versioned-tables/
  11. ^ Пакье, Майкл (1 ноября 2012 г.). «Особенности Postgres 9.2: типы диапазонов». Майкл Пакье - разработчик с открытым исходным кодом из Японии.. Архивировано из оригинал на 2016-04-23.
  12. ^ Кац, Джонатан С. «Типы диапазонов: ваша жизнь никогда не будет прежней» (PDF). Получено 14 июля 2014.
  13. ^ Аль-Катеб, Мохаммед и др. "Временная обработка запросов в Teradata ". EDBT / ICDT ’13 18–22 марта 2013 г., Генуя, Италия.
  14. ^ Темпоральный в SQL Server 2016, получено 2019-07-19
  15. ^ "terminusdb / terminusdb-сервер". GitHub. Получено 2020-09-04.
  16. ^ Бриджуотер, Адриан (24 ноября 2014 г.). «Данные хороши, двунаправленные битемпоральные данные лучше».

внешняя ссылка