Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

Tabela historyczna

Termin Definicja
Tabela historyczna

Tabela historyczna przechowuje poprzednie wersje wierszy tabeli temporalnej wraz z okresem ich ważności.

Rola tabeli historycznej w modelu temporalnym

Tabela historyczna jest częścią modelu danych, w którym zmiany rekordów są zapisywane razem z informacją o czasie obowiązywania poszczególnych wersji. Gdy wartość wiersza zostanie zmieniona, poprzednia wersja nie musi być bezpowrotnie nadpisana. Może zostać przeniesiona do tabeli historycznej, a w tabeli głównej pozostaje wersja aktualna. Dzięki temu można odtworzyć stan danych z wcześniejszego okresu oraz ustalić, jakie wartości obowiązywały przed wykonaniem konkretnej modyfikacji.

Typowy wiersz tabeli historycznej zawiera te same dane biznesowe co wiersz tabeli głównej oraz dwa pola opisujące przedział czasu. Jedno pole wskazuje początek obowiązywania wersji, a drugie jego koniec. Przedział może być oznaczany jako domknięty z jednej strony i otwarty z drugiej, na przykład od chwili rozpoczęcia włącznie do chwili zakończenia wyłącznie. Taki sposób zapisu zapobiega nakładaniu się kolejnych wersji tego samego rekordu w tej samej chwili.

Jak zapisywana jest kolejna wersja rekordu

Załóżmy, że tabela główna przechowuje dane urządzenia: identyfikator, model, właściciela i status naprawy. Jeżeli status zmieni się z „przyjęty” na „w diagnozie”, poprzedni zestaw wartości może otrzymać czas zakończenia, a następnie trafić do tabeli historycznej. Nowa wersja otrzymuje czas rozpoczęcia odpowiadający chwili zmiany. W tabeli historycznej pozostaje więc informacja, że wcześniejszy status obowiązywał przez określony przedział, natomiast bieżący status jest dostępny w tabeli operacyjnej.

Mechanizm historii powinien zachować spójność klucza rekordu, wartości atrybutów oraz okresów ważności. Dla jednego identyfikatora nie powinny występować dwa rekordy obowiązujące w tym samym czasie, chyba że model jawnie dopuszcza wielokrotne wersje. Nie powinno się również dopuszczać sytuacji, w której koniec okresu następuje przed jego początkiem. W praktyce stosuje się ograniczenia integralności, walidację po stronie aplikacji albo automatyczne mechanizmy silnika bazy danych, zależnie od użytej technologii.

Zapytania o stan danych w wybranym czasie

Najważniejszą funkcją tabeli historycznej jest możliwość zadania pytania dotyczącego przeszłości. Zamiast analizować wyłącznie aktualne wartości, można wyszukać wersję, której okres obowiązywania obejmuje wskazaną chwilę. Warunek logiczny takiego wyszukania porównuje czas zapytania z początkiem i końcem okresu. Dla przedziału od początku włącznie do końca wyłącznie oznacza to sprawdzenie, czy chwila jest większa lub równa początkowi oraz mniejsza od końca.

Połączenie tabeli głównej i historycznej pozwala odtworzyć pełny przebieg rekordu. Jest to przydatne przy analizie błędów, porównywaniu danych przed i po zmianie, wyjaśnianiu rozbieżności w raportach oraz sprawdzaniu, kiedy określona wartość zaczęła obowiązywać. Tabela historyczna nie jest jednak automatycznie kompletnym dziennikiem operacji. Sam okres ważności może wskazać, że rekord się zmienił, lecz nie musi określać użytkownika, procesu, adresu klienta ani rodzaju wykonanej operacji. Takie informacje wymagają dodatkowych kolumn lub odrębnego mechanizmu rejestrowania zdarzeń.

Indeksy, retencja i diagnostyka historii

Wraz z liczbą zmian tabela historyczna zwykle rośnie szybciej niż tabela przechowująca bieżące rekordy. Dlatego należy dobrać indeksy do sposobu wyszukiwania danych. Często przydatny jest indeks obejmujący identyfikator rekordu oraz początek i koniec okresu, ponieważ zapytania mogą najpierw ograniczyć wynik do jednego obiektu, a następnie sprawdzić jego wersję czasową. Przy dużych zbiorach znaczenie ma także selektywność warunków, plan wykonania zapytania oraz sposób archiwizacji starszych danych.

Podczas diagnostyki warto sprawdzić, czy każda zmiana w tabeli głównej tworzy odpowiednią wersję historyczną, czy okresy kolejnych rekordów są ciągłe oraz czy nie ma luk i nakładających się przedziałów. Należy również porównać typy danych pól czasowych, dokładność zapisu czasu i strefę czasową używaną przez aplikację. Różnica między czasem lokalnym a czasem UTC może prowadzić do pozornie błędnej kolejności zdarzeń. Istotne jest także ustalenie zasad przechowywania historii: dane mogą być zachowywane bezterminowo, przenoszone do archiwum po określonym czasie albo usuwane zgodnie z przyjętą polityką techniczną. Regularna kontrola tych warunków pomaga wykryć utratę wersji, błędne aktualizacje i nieprawidłowe zapytania raportowe.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę