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

Przechowywanie wersji danych

Termin Definicja
Przechowywanie wersji danych

Przechowywanie wersji danych w tabelach temporalnych rejestruje historię zmian wiersza wraz z okresem jej ważności.

Jak temporalne tabele rejestrują zmiany danych

Przechowywanie wersji danych polega na zachowaniu kolejnych stanów tego samego wiersza zamiast zastępowania poprzedniej wartości bez śladu. W tabeli temporalnej rekord opisujący obiekt jest powiązany z okresem obowiązywania. Okres ten wyznaczają zwykle dwa znaczniki czasu: początek ważności oraz koniec ważności. Dzięki temu można ustalić, jaka wartość była uznawana za aktualną w określonym momencie.

Przykładowo rekord dotyczący ceny produktu może obowiązywać od godziny 10:00 do godziny 12:30. Po zmianie ceny poprzedni wiersz otrzymuje czas zakończenia, a nowa wartość jest zapisywana jako kolejna wersja z własnym czasem rozpoczęcia. Aktualny stan można rozpoznać po otwartym końcu okresu, natomiast wcześniejsze wersje pozostają dostępne do odczytu historycznego. Mechanizm nie jest tym samym co zwykła kopia zapasowa, ponieważ historia jest przechowywana w strukturze danych i może być wyszukiwana razem z pozostałą zawartością tabel.

Czas obowiązywania a czas zapisania operacji

W systemach przechowujących wersje danych trzeba rozróżnić czas dziedzinowy, nazywany także czasem obowiązywania, od czasu transakcyjnego. Czas obowiązywania odpowiada na pytanie, od kiedy dana informacja jest prawdziwa w opisywanym świecie. Jeżeli pracownik wprowadzi 25 marca informację, że umowa obowiązuje od 1 marca, początek okresu merytorycznego może przypadać na 1 marca. Czas transakcyjny wskazuje natomiast, kiedy baza danych otrzymała i utrwaliła tę informację.

To rozróżnienie ma znaczenie przy analizie korekt. Jeśli błędny adres został zapisany 25 marca, a następnie poprawiony 28 marca, historia transakcyjna może wykazać oba zapisy i moment ich wprowadzenia. Historia obowiązywania może dodatkowo opisywać, od którego dnia poprawiony adres powinien być uznawany za właściwy. Nie każda implementacja udostępnia oba rodzaje osi czasu; konkretne zachowanie zależy od silnika bazy danych i sposobu zdefiniowania kolumn okresu.

Odczyt stanu historycznego i spójność okresów

Najczęściej wykonywane zapytania dotyczą stanu aktualnego, stanu z chwili wskazanej przez użytkownika albo wszystkich wersji rekordu. Odczyt historyczny powinien uwzględniać warunek, że szukany punkt czasu mieści się w przedziale rozpoczęcia i zakończenia ważności. Przy analizie przedziału czasu pobiera się wersje, których okresy przecinają wskazany zakres. Takie zapytania pozwalają odtworzyć przebieg zmian bez ręcznego porównywania wielu kopii tabeli.

Istotna jest spójność granic okresów. Dla jednego klucza logicznego kolejne wersje nie powinny przypadkowo nachodzić na siebie ani pozostawiać niezamierzonych luk. W praktyce trzeba również ustalić, czy granica końcowa jest wyłączna, czy włączna, ponieważ wpływa to na wynik zapytania wykonywanego dokładnie w chwili zmiany. Należy kontrolować strefę czasową, precyzję znaczników oraz źródło czasu. Różnice między zegarem aplikacji i zegarem bazy mogą prowadzić do nieprawidłowej kolejności wersji.

Konserwacja historii i diagnostyka działania

Historia wersji zwiększa rozmiar danych, dlatego projekt powinien określać sposób jej przechowywania, indeksowania i ewentualnego archiwizowania. Indeks obejmujący klucz rekordu oraz kolumny początku i końca okresu ułatwia wyszukiwanie stanu z określonego momentu. Przy dużej liczbie zmian korzystne może być rozdzielenie danych bieżących i historycznych albo zastosowanie partycjonowania, o ile dany silnik bazy danych je obsługuje. Usunięcie historii nie jest zwykłym porządkowaniem tabeli, ponieważ ogranicza możliwość odtworzenia wcześniejszego stanu.

Diagnostyka problemu powinna obejmować definicję tabeli, reguły aktualizacji, wartości znaczników czasu oraz zapytanie odczytujące historię. Warto sprawdzić, czy każda modyfikacja tworzy nową wersję, czy operacje masowe nie pomijają mechanizmu wersjonowania oraz czy identyfikator rekordu pozostaje stabilny między wersjami. Należy także odróżnić błąd danych od błędu prezentacji: historia może być zapisana poprawnie, lecz niewłaściwy warunek filtrowania może pokazywać kilka wersji naraz albo pomijać rekord obowiązujący na wskazaną chwilę. Przy awarii laptopa, komputera PC lub nośnika zawierającego lokalną bazę konieczne jest najpierw zabezpieczenie kopii danych, a dopiero potem sprawdzanie integralności plików, połączenia z bazą i działania aplikacji.

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