Темпоральна база даних

база даних, яка зберігає дані, пов'язані з примірниками часу

Темпоральна база даних — база даних, що містить історичні (хронологічні) дані, тобто дані, що відносяться до минулого і, можливо, до майбутнього періоду часу. Звичайна, нехронологічна база даних містить тільки поточні дані.

Класифікація ред.

Унітемпоральна база даних ред.

Унітемпоральна база даних має тільки одну вісь часу: або діапазон чинності (англ. validity range), або діапазон системного часу (англ. system time range).

Бітемпоральна база даних ред.

Бітемпоральна база даних має дві осі часу:

  • час чинності;
  • час транзакції або час рішення.

Тритемпоральна база даних ред.

Тритемпоральна база даних має три осі часу:

  • час чинності;
  • час транзакції;
  • час рішення.

Цей підхід вводить додаткові складнощі.

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

Можливості ред.

Темпоральні бази даних підтримують керування та доступ до темпоральних даних шляхом надання однієї чи більше наступних можливостей[1][2]:

  • Тип даних періоду часу, включно зі здатністю представляти періоди часу без кінця (нескінченність або вічність)
  • Здатність визначати атрибути та бітемпоральні відношення періодів часу чинності та транзакції
  • Підтримуваний системою час транзакції
  • Темпоральні первинні ключі, включно з обмеженнями періодів, що не перекриваються (англ. non-overlapping))
  • Темпоральні обмеження, включно з унікальностями та посилальними цілісностями, що не перекриваються (англ. non-overlapping))
  • Оновлення та видалення темпоральних записів із автоматичним розділенням і злиттям періодів часу
  • Темпоральні запити на поточний час, моменти часу в минулому чи майбутньому, чи над тривалостями
  • Предикати для запитування періодів часу, часто засновані на інтервальних відношеннях Аллена[en]

Типи даних і оператори ред.

Хронологічні дані представляють собою істинні висловлювання із зазначенням інтервалів часу. Інтервалом часу є непорожній відрізок часової шкали, для його позначення використовується спеціальний інтервальний тип даних INTERVAL_DATE. Значення цього типу записується у вигляді  , де   — вирази типу DATE, відповідні початковій і кінцевій часовій позиції інтервалу. Під часовими позиціями (позиціями на часовій шкалі) розуміють одиниці часу, що підходять для певної мети (мілісекунди, секунди, доба) і вважаються неподільними.

Припустимо   — значення інтервального типу, що мають відповідні початкові позиції   і кінцеві позиції  ,   — довільна тимчасова позиція. Для позначення попередньої і наступної часової позиції використовуються вирази вигляду   і  . Оператор   повертає кількість різних позицій   таких, що  . Інтервал   є одиничним інтервалом, якщо  .

Для перевірки умов, пов'язаних з інтервалами, використовуються оператори Аллена:

  • інтервали рівні:  ;
  •   включає  :  
  •   суворо включає  :  ;
  •   перед  :  ;
  • інтервали зустрічаються:  ;
  • інтервали перекриваються::  ;
  • інтервали зливаються: .

Крім того, є бінарні оператори над інтервалами, які повертають інтервали:

  • оператор об'єднання   повертає [MIN(b1, b2):MAX(e1, e2)], якщо вираз   істинно, інакше результат не визначений;
  • оператор перетину   повертає [MAX(b1, b2): MIN(e1, e2)] , якщо вираз   істинно, інакше результат не визначений;
  • оператор різниці   повертає [b1:MIN(b2-1,e1)], якщо b1 < b2 і e1 ≤ e2 і повертає [MAX(e2+1,b1),e1], якщо b1 ≥ b2 і e1 > e2, інакше результат не визначений.

Оператори EXPAND і COLLAPSE приймають в якості операнда унарне відношення, кортежі якого містять інтервали і повертають відношення того ж типу, що є  розгорнутою і стислою формою вихідного відношення.

Приклад використання операторів EXPAND і COLLAPSE:

R
D
[d06:d09]
[d04:d08]
[d05:d10]
[d01:d01]
Rx
D
[d01:d01]
[d04:d04]
[d05:d05]
[d06:d06]
[d07:d07]
[d08:d08]
[d09:d09]
[d10:d10]
Rc
D
[d01:d01]
[d04:d10]

Розгорнутою формою відношення R є відношення Rx, що містить всі кортежі з одиничним інтервалом [p:p], де p – позиція в деякому інтервалі деякого кортежу відношення R. Стислою формою відношення R є таке відношення Rc, де: відношення R і Rc мають одну і ту ж розгорнуту форму; ніякі два різних кортежі відносно Rc не містять інтервали i1 і i2 такі, що i1 MERGES i2 є істиною.

Оператор PACK і UNPACK приймають в якості операндів відношення і атрибут інтервального типу, що належить цьому відношенню, і повертає відношення того ж типу, відповідно згорнуте по вказаному атрибуту з угрупованням по іншим атрибутам, і розгорнуте по вказаному атрибуту.

Приклад використання операторів PACK і UNPACK:

R

A

D
A2 [d02:d04]
A2 [d03:d05]
A4 [d02:d05]
A4 [d04:d06]
A4 [d09:d10]
PACK R ON D
A D
A2 [d02:d05]
A4 [d02:d06]
A4 [d09:d10]
UNPACK R ON D
A D
A2 [d02:d02]
A2 [d03:d03]
A2 [d04:d04]
A2 [d05:d05]
A4 [d02:d02]
A4 [d03:d03]
A4 [d04:d04]
A4 [d05:d05]
A4 [d06:d06]
A4 [d09:d09]
A4 [d10:d10]

Упакувати відношення R за кількома атрибутами D1, D2, ..., Dn можна розпакувавши R за всіма вказаними атрибутами, а потім упакувати отриманий результат за атрибутом D1, результат упаковки упакувати по атрибуту D2, ..., результат упаковки упакувати по атрибуту Dn.

Для всіх звичайних реляційних операторів визначені аналогічні їм U_оператори, які розпаковують відношення за вказаними атрибутами, виконують відповідну операцію і упаковують отриманий результат. Наприклад, оператори U_MINUS, U_INTERSECT, U_UNION, U_JOIN відповідають операторам MINUS, INTERSECT, UNION, JOIN. U_OPERATOR визначається як:

PACK ((UNPACK R1 ON D) OPERATOR (UNPACK R2 ON D)) ON D

Операція розпакування при використанні довгих інтервалів з великим ступенем деталізації може зажадати занадто великого обсягу пам'яті для свого виконання. Використання U_операторів дозволяє вибрати оптимізатору реалізацію, яка вимагає мінімальної кількості проміжних результатів.

Приклад використання оператора U_MINUS:

R1
D
[d02:d05]
R2
D
[d03:d03]
результат
D
[d02:d02]
[d04:d05]

Декомпозиція ред.

Зберігання поточної інформації в одних змінних відношення, а історичної інформації — в інших називається горизонтальною декомпозицією. Зберігання історичної інформації у вигляді безлічі окремих змінних відношення (кожна з яких містить один атрибут інтервального типу і один атрибут іншого типу) називається вертикальною декомпозицією.

Припустимо, змінна відношення R має атрибут інтервального типу D та атрибути інших типів A1, A2, ..., An. При зміні атрибутів A1, A2, ..., An незалежно один від одного у часі в змінну відношення необхідно вносити складний ряд оновлень для подання інформації про значення атрибута протягом визначеного періоду часу може знадобитися більше одного кортежу. Тому доцільно розподілити інформацію по змінним відношення R1, R2, ..., Rn, які будуть мати атрибути D і A1, D A2, ..., D і An відповідно.

Приклад вертикальної декомпозиції
R
A1 A2 D
10 BB+ [d01:d03]
15 BB+ [d04:d05]
15 AA- [d06:d08]
R1
A1 D
10 [d01:d03]
15 [d04:d08]
R2
A2 D
BB+ [d01:d05]
AA- [d06:d08]

Дане відношення після виконання декомпозиції знаходиться в шостій нормальній формі.

Обмеження цілісності ред.

Входження атрибута D інтервального типу до складу потенційного ключа не вирішує проблему надмірності і протиріччя. Відношення може мати два кортежі з інтервалами, що перекриваються і співпадаючими значеннями інших атрибутів. При цьому присутня надмірність інформації, дані за деякі часові інтервали, зазначаються двічі. Крім того, існує проблема багатослів'я, коли два кортежі мають інтервали, слідуючи безпосередньо один за одним при співпадаючих значеннях інших атрибутів. У цьому випадку, хоча інформація і не дублюється, але її можна представити у вигляді одного кортежу. Для усунення проблеми надмірності і багатослів'я необхідно, щоб змінна відношення постійно була упакована по атрибуту D.

Крім того, відношення може містити два кортежі з інтервалами, що перекриваються, але з різними значеннями інших неключових атрибутів, в результаті чого інформація буде суперечливою. Для усунення суперечності необхідно, щоб змінна відношення була постійно розпакована по атрибуту D.

Для задоволення цих вимог вводяться U_ключі. Змінна відношення підтримується упакованою по U_ключу і розпаковується при внесенні змін для підтримки несуперечливого стану.

Посилання ред.

  1. Kulkarni, Krishna, and Jan-Eike Michels. "Temporal features in SQL: 2011 [Архівовано 2012-11-15 у Wayback Machine.]". ACM SIGMOD Record 41.3 (2012): 34-43.
  2. Архівована копія. Архів оригіналу за 25 жовтня 2012. Процитовано 6 травня 2020.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)