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