В темпоральных базах данных время транзакции — это время, когда некоторые данные были загружены в базу данных . Время, когда транзакция действительна, можно назвать периодом времени транзакции . Это техническая временная шкала, контролируемая интеграционным слоем (например, хранилищем данных ). [1] Более формально, это момент времени, в течение которого факт, хранящийся в базе данных, считается истинным.
Период — это интервал, основанный на времени загрузки (называемый в хранилище данных «дата-время загрузки» [1] [2] ), также называемый временной меткой записи . [1] Другие названия интервала — временная шкала утверждения [3] ), временная шкала состояния [3] ) или техническая временная шкала . [3] SQL:2011 поддерживает время транзакции через так называемые системные таблицы с версиями . [4] [5] [6] [7]
По многим причинам время транзакции (когда данные поступают из исходной системы ) почти всегда отличается от действительного времени (когда событие произошло в реальном мире). Для того чтобы хранилище данных однозначно сообщало о том, что на самом деле произошло в прошлом, оно должно иметь возможность объединять эти две временные шкалы. [1] В битемпоральных моделях данных действительное время и время транзакции могут быть представлены двумерно в декартовой системе координат . Когда данные доставляются из интеграционного слоя и должны быть представлены в слое представления (часто в размерной модели или широкой таблице ), часто желательно иметь данные только на одной временной шкале.
В таблице базы данных время транзакции часто представляется как интервал, позволяющий системе «удалять» записи с помощью двух столбцов таблицы start_tt
и end_tt
. Интервал времени закрывается [
на нижней границе и открывается )
на верхней границе . [8] Когда конечное время транзакции неизвестно, его можно рассматривать как until_changed
. Академические исследователи и некоторые системы управления реляционными базами данных (СУБД) представляют until_changed
с помощью наибольшей поддерживаемой временной метки или ключевого слова forever
. Это соглашение является техническим обходным путем и не является технически точным.
Термин «время транзакции» был введен Ричардом Т. Снодграссом и его аспирантом Илсу Аном (1986). [9]
По состоянию на декабрь 2011 года стандарт ISO/IEC 9075 «Язык баз данных SQL:2011 Часть 2: SQL/Foundation» включил в определения таблиц положения, определяющие «системно-версионные таблицы» (то есть таблицы времени транзакции).