Teoria na zaliczenie


WSTP DO BAZ DANYCH  RELACYJNE I OBIEKTOWE
Baza danych (BD) - jest to uporządkowany zbiór danych określających wybrany fragment
rzeczywistości, które są przechowywane trwale w pamięci komputerowej i do których może mieć
dostęp wielu użytkowników w dowolnej chwili czasu.
Współdzielenie danych - dane powinny być dostępne dla wielu osób i systemów.
Integracja danych - przechowywane dane nie powinny sie powtarzać, a poszczególne informacje
mogą być wykorzystywane przez wiele systemów informatycznych.
Integralność danych - modyfikacja danych, które są powiązane powinna oddziaływać na dane będące
po drugiej stronie tych związków.
Bezpieczeństwo danych - cześć lub całość gromadzonych danych powinna być dostępna tylko dla
określonych użytkowników.
Abstrakcja danych - baza danych jest opisem obiektów ze świata rzeczywistego, ale opisuje tylko te
właściwości obiektów, które są istotne dla jej użytkowników.
Niezależność danych - organizacja przechowywanych danych powinna być niewidoczna dla
użytkowników i aplikacji użytkowych z nich korzystających. Dzięki tej właściwości zmiana organizacji
danych nie pociÄ…ga za sobÄ… zmian w aplikacjach.
System zarządzania bazą danych (SZBD) - zorganizowany zbiór narzędzi (programów
komputerowych i bibliotek), które umożliwiają wykonywanie podstawowych operacji na danych
zawartych w jednej lub więcej bazach danych
Funkcje CRUD (ang. Create, Read, Update, Delete) - użytkownik musi mieć możliwość tworzenia,
odczytywania, modyfikacji i usuwania danych.
Słownik danych - metadane opisujące strukturę danych, związki miedzy danymi, więzy integralności i
dane o użytkownikach.
Zarządzanie transakcjami - SZBD musi obsługiwać sytuacje, kiedy wiele transakcji działa na bazie
danych.
Sterowanie współbieżnością - SZBD musi umożliwiać jednoczesna prace wielu użytkowników na
bazie danych w taki sposób, żeby baza zachowywała spójność danych.
Odtwarzanie - możliwość przywrócenia stanu bazy danych po awariach sprzętu i oprogramowania.
Uprawnienia - SZBD musi ograniczać dostęp do poszczególnych części bazy dla nieuprawnionych
użytkowników.
Komunikacja danych - możliwość zintegrowania SZBD z oprogramowaniem komunikacyjnym.
Integralność danych - wymusza więzy integralności w czasie wykonywania operacji CRUD.
Narzędzia administracji - SZBD powinien udostępniać narzędzia, które pozwalają na eksport i import
danych, monitorowanie użycia i operacji na bazie danych, a także monitorowanie i zwiększanie
wydajności bazy danych.
Baza danych wraz z systemem zarzÄ…dzania bazÄ… danych tworzÄ…
System Baz Danych (SBD)
SBD = BD + SZBD
Wady relacyjnego modelu danych:
ð Zbyt prosty model danych
ð Brak mechanizmów do reprezentacji różnych powiÄ…zaÅ„ np. zwiÄ…zków agregacji i zarzÄ…dzania
nimi
ð Zbyt wolne dziaÅ‚anie z programami użytkowymi wymagajÄ…cymi szybkich i skomplikowanych
obliczeń (programy symulacyjne)
ð Brak narzÄ™dzi do reprezentowania i zarzÄ…dzania temporalnymi aspektami baz danych (m.in.:
pojęciem czasu, wersjami obiektów i schematu)
Manifest obiektowych baz danych:
ObowiÄ…zkowe:
Obiekty złożone
Musi być dostępna możliwość definiowania obiektów złożonych, składających się z predefiniowanych
typów prostych lub innych typów złożonych. Sugerowane jest także wprowadzenie obiektów
przechowujących kolekcje obiektów takich jak zbiór, lista czy tablica. Wymagane jest ponadto
zdefiniowanie operacji działających na obiektach np. operacji kopiowania.
Tożsamość obiektu
Każdy obiekt powinien posiadać unikalny identyfikator, niezależny od stanu obiektu, czyli wartości
jego atrybutów. Oznacza to, że możliwe jest jawne określenie obiektów, jako identyczne  posiadają
tą samą wartość identyfikatora oraz równe  posiadają te same wartości atrybutów. Identyfikator
obiektu powinien być stały przez cały czas życia obiektu.
Hermetyzacja
Każdy obiekt powinien mieć cześć interfejsu  widoczną dla użytkownika i część programową.
Pierwsza z nich opisuje wszystkie operację, jakie mogą być wykonane na obiekcie, dostęp do nich jest
zapewniony za pomocą komunikatów. Cześć programowa składa się części danych oraz kodu
implementującego metody w wybranym języku programowanie. Takie podeście sprzyja
abstrakcyjnemu modelowaniu rzeczywistości.
Typy lub klasy
Systemy zorientowane obiektowe możemy podzielić na dwie kategorie: używające pojęcia typu lub
używające pojęcia klasy. Do pierwszych można zaliczyć np. Smalltalk czy Gemstone. Do drugiej
kategorii możemy zaliczyć systemy takie jak C++ czy Simula 67. Pojecie typu określa zbiór cech
obiektów o tej samej charakterystyce. Typ ogranicza kontekst, w którym obiekty tego typu mogą być
użyte. Pojecie klasy jest szersze od typu. Klasa zawiera implementacje metod, typy atrybutów i
informacje o powiązaniach. Wymagane jest, aby OZBD posiadał jakiś mechanizm tworzący strukturę
danych, jednak wybór czy będą to klasy, czy typy, pozostawiono do wyboru twórcom konkretnych
systemów.
Hierarchia typów lub klas
Wprowadzenie relacji dziedziczenia typów lub klas posiada dwie podstawowe zalety: możliwość
bardzo łatwego modelowania rzeczywistości oraz ponownego użycia już wytworzonych rozwiązań.
Dzięki temu istnieje możliwość tworzenia klas czy obiektów będących uszczegółowieniem ogólnie
przyjętych koncepcji czy zastosowanych wzorców.
Przesłanianie, przeciążanie i pózne wiązanie
Przesłanianie daje możliwość redefiniowania implementacji metody odziedziczonej po obiekcie
będącym nadrzędnym w relacji dziedziczenia. Przeciążanie jest to natomiast definiowanie w obrębie
jednak klasy czy typu kilku metod o tej samej nazwie, decyzja o tym, która z nich zostanie wywoła
wynika z kontekstu jej użycia. Zastosowanie tych dwóch mechanizmów jest możliwe dzięki
zastosowaniu póznego wiązania, czyli określaniu, która metoda zostanie wywołana, nie w momencie
kompilacji, ale podczas wykonywania kodu programu.
Kompletność obliczeniowa
Oznacza to rzecz dość oczywistą dla dowolnego języka programowania tj., każdy możliwy do
wykonania algorytm może być wykonany za pomocą języka modyfikowania danymi, bez konieczności
zanurzania go w inny język jak to było np. w przypadku SQL (PL/SQL, T-SQL). Autorzy manifestu nie
narzucają tutaj konieczności definiowania w tym celu nowego języka, dopuszczalne jest
wykorzystanie jednego z już istniejących.
Rozszerzalność
Powinny być dostarczone mechanizmy pozwalające na rozszerzanie podstawowych typów danych, o
typy zdefiniowane przez użytkownika. Sposób obsługi rozszerzonych typów powinien być
niewidoczny dla aplikacji. Dodatkowo autorzy nie wymagają udostępniania możliwości rozszerzania
kolekcji.
Trwałość
Trwałość oznacza dla programisty możliwość wykorzystania zapisanych danych przez inny proces lub
inna aplikację. Powinna ona być ortogonalna, czyli każdy obiekt, bez względu na jego typ, może być
trwały. Trwałość powinna być także przezroczysta tzn. użytkownik nie musi podejmować żadnych
specjalnych działań, aby uczynić dane trwałymi.
Zarządzanie pamięcią pomocniczą
Chodzi tutaj o cały szereg operacji, które służą optymalizacji czasu wykonywanych na bazie operacji
jak buforowanie, indeksowanie, wybór ścieżek dostępu czy optymalizację zapytań. Wszystkie te
operacje powinny być ukryte przed użytkownikiem systemu obiektowej bazy danych. Tego typu
mechanizmy sÄ… obecnie z powodzeniem wykorzystywane w istniejÄ…cych implementacjach baz
danych, więc autorzy pozostawiają w tej sferze dowolność w wyborze tych, które zdaniem twórców
danego rozwiÄ…zania sÄ… najlepsze.
Współbieżność
Zapewnienie dostępu do przechowywanych, dla wielu użytkowników i aplikacji w tym samym czasie
leży u postaw szeroko rozumianej koncepcji baz danych. Także tutaj wymagane jest zapewnienie tego
dla końcowych użytkowników. Dotyczy to zarówno równoczesnego odczytu danych jak i ich
równoczesnej modyfikacji i rozwiązywania związanych z tym konfliktów.
Odtwarzanie
Oznacza to możliwość przywrócenia systemu do stanu poprzedzającego awarię sprzętową czy
programową. Ważne jest to, aby tego typu awarie nie wpływały na spójność i relację pomiędzy
danymi. Przez sprzętowe uszkodzenie rozumie się zarówno uszkodzenie procesora jak również
uszkodzenie nośnika danych  dysku twardego, co może oznaczać utratę części zgromadzonych
danych.
Zapytania ad-hoc
To właśnie zapytania ad-hoc i język SQL przesądziły o ogromnej popularności relacyjnych baz danych.
Dlatego też autorzy manifestu stawiają wymaganie odnośnie zapewnienia możliwości łatwego
dostępu do danych, zaznaczają jednak, że nie jest konieczne definiowanie nowego języka do
definiowania zapytań, równie dobre jest udostępnienie graficznego interfejsu realizującego tą
funkcjonalność. Rozwiązanie to powinno być wysokiego poziomu, efektywne i niezależne od
struktury danych.
Określana również, jako enkapsulacja od ang. encapsulation
Opcjonalne:
Wielodziedziczenie
Termin ten oznacza, że jedna klasa potomna może mieć wiele poprzedników w relacji dziedziczenia.
Zróżnicowanie poglądów na ten temat konieczności wprowadzenia tego rozwiązania nie widać w
środowisku informatycznym od wielu lat. Z tego względu cecha ta jest zaliczana do opcjonalnych, a
kwestie jej dostępności pozostawia sie twórcom konkretnych rozwiązań.
Kontrola typów i wnioskowanie o typie
Zdaniem autorów idealnym rozwiązaniem, jest sytuacja, gdy to kompilator jest w stanie wykryć
wszelki niezgodności typów, jednak szczegóły rozwiązania tego problemu są pozostawione w rękach
twórców gotowych rozwiązań bazodanowych. Dodatkowo sugerowane jest, aby konieczne było
definiowanie tylko podstawowych typów a typu rozszerzone zostaną rozpoznane na podstawie
wnioskowania.
Rozproszenie
Kolejnym elementem, w którym pozostawiono dowolność wyboru jest rozproszenie. Twórcy sami
podejmują decyzję czy ich system będzie mógł pracować w środowisku rozproszonym, czy pozostanie
rozwiÄ…zaniem pracujÄ…cym na pojedynczej maszynie.
Transakcje projektowe
Transakcje, czyli ciągi operacji, które są wykonywane od początku do końca albo wcale, w taki
sposób, aby baza zawsze znajdowała się w stanie spójnym, nie są nowością w baza danych. Ponieważ
istniejące w tamtych czasach rozwiązania transakcji w obiektowych systemach baz danych nie były
zdaniem autorów satysfakcjonujące, kwestię wprowadzenia ich również pozostawiono, jako
opcjonalnÄ….
Wersjonowanie
Ponieważ wiele aplikacji (CAD/CAM czy też CASE) w związku w wymogami śledzenia ścieżki rozwoju
wspieranych rozwiązań, wymaga przechowywania wielu wersji danych, obiektowe bazy danych mogą
wspierać tego typu rozwiązania.
Otwarte:
Paradygmat programowania
Cechą, która pozostaje całkowicie otwarta jest wybór paradygmatu programowania, może zostać
zastosowany dowolny: logiczny, funkcyjny czy imperatywny. Podobnie ma siÄ™ sprawa stosowania
wybranej przez twórców składni wyrażeń.
System prezentacji
System prezentacji to zbiór atomowych typów danych i konstruktorów danych. Pozostawiona zostaje
dowolność w ich doborze, wymagane jest jedynie umieszczenie podstawowy typów znanych z
języków programowania i kolekcji. Wprowadzenie większej ilości czy różnorodności typów pozostaje
kwestiÄ… otwartÄ….
System typów
Jedynym wymaganiem stawianym, co do typów jest zapewnienie ich hermetyzacji. Typy mogą być
rozszerzone o typy generyczne czy też unie. Decyzja, co do tego należy do twórców danego
rozwiÄ…zania.
Jednolitość
Wolność wyboru pozostawiono także w przypadku sposobu zapewnienia jednolitości danych.
Konieczne jest ustalenie np. czy typ i metoda też będą przechowywane, jako obiekty. Jednolitość
może być określona na 3 poziomach: implementacyjnym, programowym i interfejsu.
Niezgodność impedancji
ð Terminem tym okreÅ›la siÄ™ niekorzystne cechy formalnego poÅ‚Ä…czeniu jÄ™zyka zapytaÅ„ (np.
SQL) z językiem programowania takim jak np. C lub Java. Objawia się niezgodnościami w
zakresie:
ð SkÅ‚adni. Programista musi w jednym tekÅ›cie programu używać dwóch stylów
językowych i przestrzegać reguł dwóch różnych gramatyk.
ð Systemu typów. JÄ™zyk zapytaÅ„ operuje na typach zdefiniowanych w schemacie bazy
danych, m.in. relacjach, natomiast język programowania posiada zwykle odmienny
system typów, w którym nie występuje typ relacja. Większość języków
programowania ma wbudowaną statyczną kontrolę typów, podczas gdy SQL takiej
kontroli nie przewiduje.
ð Semantyki i paradygmatów jÄ™zyków. Koncepcja semantyki jÄ™zyków jest zasadniczo
różna. Język zapytań bazuje na stylu deklaracyjnym (co wyszukać, a nie jak) podczas
gdy języki programowania bazują na stylu imperatywnym (jak wyszukać, skąd
pośrednio wynika co).
ð Poziomu abstrakcji. JÄ™zyk zapytaÅ„ uwalnia programistÄ™ od wielu szczegółów
organizacji i implementacji danych (np. organizacji zbiorów, obecności lub
nieobecności indeksów, itd.), podczas gdy w języku programowania te szczegóły
muszą być oprogramowane explicite.
ð Faz i mechanizmów wiÄ…zania. JÄ™zyki zapytaÅ„ sÄ… oparte o pózne wiÄ…zanie (sÄ…
interpretowane) podczas gdy języki programowania zakładają wczesne wiązanie
(podczas kompilacji i konsolidacji). Stwarza to problemy m.in. dla mocnej kontroli
typów, obrazu przestrzeni nazw, itd.
ð Przestrzeni nazw i reguÅ‚ zakresu. JÄ™zyk zapytaÅ„ i jÄ™zyk programowania posiadajÄ…
własne przestrzenie nazw, które mogą zawierać identyczne nazwy o różnych
znaczeniach. Odwzorowania pomiędzy przestrzeniami nazw wymagają dodatkowych
środków syntaktycznych i semantycznych.
ð Traktowania wartoÅ›ci zerowych. Bazy danych i jÄ™zyki zapytaÅ„ posiadajÄ…
wyspecjalizowane środki dla przechowywania i przetwarzania wartości zerowych.
Środki te nie występują w językach programowania.
ð Schematów iteracyjnych. W jÄ™zyku zapytaÅ„ iteracje sÄ… wtopione w semantykÄ™
operatorów takich jak selekcja, projekcja i złączenie. W języku programowania
iteracje muszą być organizowane explicite przy pomocy pętli for, while, repeat lub
innych.
ð Traktowania cechy trwaÅ‚oÅ›ci danych. JÄ™zyki zapytaÅ„ przetwarzajÄ… wyÅ‚Ä…cznie trwaÅ‚e
dane (znajdujące się na dysku), podczas gdy języki programowania przetwarzają
wyłącznie dane nietrwałe znajdujące się w pamięci operacyjnej. Połączenie obu cech
wymaga wprowadzenia specjalnych środków językowych.
ð Åšrodków programowania ogólnego (generic). Åšrodki te w jÄ™zyku zapytaÅ„ sÄ… oparte o
refleksję (np. dynamiczny SQL). Użycie podobnego środka w języku programowania
jest trudne z powodu wczesnego wiÄ…zania.
ð Niezgodność impedancji powoduje konieczność istnienia dodatkowej warstwy
oprogramowania pośredniczącego pomiędzy językiem zapytań i językiem programowania. Ta
warstwa zwiększa długość kodu aplikacji, może być zródłem błędów, zwiększa czas uczenia
się narzędzia, zwiększa czas wykonania, oraz zmniejsza pielęgnacyjność oprogramowania.
Obiektowa baza danych
Obiektowa baza danych to zbiór obiektów, których zachowanie się, stan oraz związki są określone
zgodnie z obiektowym modelem danych.
Obiektowy system zarzÄ…dzania bazÄ… danych jest systemem wspomagajÄ…cym definiowanie,
zarządzanie, utrzymywanie, zabezpieczanie i udostępnianie obiektowej bazy danych.
Obiektowe systemy zarządzania bazą danych zapewniają tradycyjną funkcjonalność baz danych, lecz
bazują na modelu obiektowym. Ich atutem jest udostępnianie danych w postaci obiektowej, czyli
takiej samej w jakiej dane są przechowywane w programach napisanych w obiektowych językach
programowania. Znika konieczność mapowania między modelem obiektowym a modelem relacyjnym
jak to ma miejsce w przypadku użycia relacyjnej bazy danych.
Algebra obiektowa
ð Algebra obiektowa jest z zaÅ‚ożenia matematycznÄ… podstawÄ… semantyki obiektowych jÄ™zyków
zapytań, wzorującą się na algebrze relacji. W odróżnieniu od algebry relacyjnej, operatory
wprowadzane przez algebrę obiektową działają na zbiorach obiektów i zwracają zbiory
obiektów.
ð Celem prac nad algebrami obiektowymi jest potrzeba takiego sformalizowania modelu
obiektowego i semantyki języków zapytań, ażeby możliwe było przeprowadzanie dowodów
poprawności technik optymalizacji zapytań.
ð Pomimo takowych opinii, istnieje wiele prób stworzenia algebry obiektowej. JednÄ… z takich
prób jest algebra AQUA zaproponowanej w [Leung 1993].
ð Autorzy byli współtwórcami kilku wczeÅ›niejszych algebr, proponowana przez nich algebra
AQUA jest efektem doświadczeń zdobytych podczas poprzednich prac.
Analiza leksykalna
ð Analiza leksykalna - kontrola poprawnoÅ›ci oraz rozpoznanie poszczególnych symboli
(znaków) kodu zródłowego
ð Analiza skÅ‚adniowa (syntaktyczna) - analiza i kontrola poprawnoÅ›ci kodu zródÅ‚owego pod
względem zgodności z gramatyką języka
ð Analiza semantyczna - analiza znaczenia (sensu) poszczególnych struktur programu
(częściowa kontrola)
Query Planner
ð Dane wejÅ›ciowe:
ð Query Planner na wejÅ›ciu otrzymuje drzewo tokenów (parse tree, query tree & )
które jest wynikiem działania parsera. Parse tree reprezentuje logiczne kroki
niezbędne dla wykonania zapytania
ð Zadania Query Plannera:
ð PodjÄ™cie decyzji czy generować możliwe plany wykonania zapytania ( tworzenie
query palnu dla zapytań bardzo prostych, na przykład do jednej tabeli bez indeksów,
może niekiedy zająć więcej czasu niż bezpośrednie wykonanie zapytania)
ð Tworzenie i ewaluacja istniejÄ…cych query planów
ð Estymacja wartoÅ›ci funkcji kosztu  wyrażenia w którym wystÄ™pujÄ… wszystkie
składniki uważane za mające istotny wpływ na koszt realizacji zapytania. (liczba
dostępów do dysku, czas zajętości procesora, czas komunikacji)
ð Wybór najmniej kosztownego planu, który wykona zapytanie najszybciej jak to
możliwe, przy jednoczesnym minimalnym wykorzystaniu zasobów komputera
ð PodjÄ™cie decyzji kiedy zaprzestać generowanie kolejnych planów
ð Po co nam model kosztów?
ð Zadaniem modelu kosztów jest oszacowanie czasu/kosztu różnych planów ewaluacji
zapytania i wybranie planu o minimalnym szacowanym koszcie.
ð Model kosztów powinien obejmować:
ð SzczegółowÄ… budowÄ™ zapytania (semantyka)
ð Sposób jego ewaluacji;
ð Meta-informacje dotyczÄ…ce struktur danych (np. rozmiary kolekcji obiektów);
ð Meta-informacje retrospektywne (np. dotyczÄ…ce rzeczywistych kosztów ewaluacji
podobnych zapytań);
ð Informacje odnoÅ›nie pomocniczych struktur danych uczestniczÄ…cych w ewaluacji
zapytań (np. rozmiar buforów);
ð Informacje odnoÅ›nie Å›rodowiska komputerowego (np. ilość wolnej przestrzeni
dyskowej);
ð Dowolne inne informacje relewantne dla optymalizacji (np. czas transferu
dyskowego, szybkość sieci)
ð WÅ‚aÅ›ciwoÅ›ci:
ð Plany powinny być przechowywane  dla ponownego użycia  przy kolejnym
wykonywaniu tego samego zapytania zyskujemy czas który musielibyśmy poświęcić
na stworzenie query planu dla tego zapytania
ð W zwiÄ…zku z przechowywaniem  potrzeba istnienia  czegos do przechowywania
planów  może coś w rodzaju cache
ð Potrzeba wystÄ™powania kryteriów okreÅ›lajÄ…cych  jak dÅ‚ugo przechowywać plany
ð Plany wykonania mogÄ™ być statyczne i dynamiczne 
ð dynamiczne to takie które mogÄ… być modyfikowane podczas wykonywania
zapytania,
ð statyczne generowane przed wykonaniem zapytania 
ð w zwiÄ…zku z planami dynamicznymi możemy wyróżnić Szacowany plan
wykonania (Estimated execution plan) i rzeczywisty plan wykonania (Actual
execution plan)
ð Każdy plan powinien speÅ‚niać zasadÄ™ zachowania semantyki zapytania  tzn. każda
ścieżka wykonania zapytania powinna dać jednakowy wynik
OPTYMALIZACJA BAZ DANYCH
" Optymalizacja baz danych jest procesem ciągłym (dotyczy całego cyklu życia BD) i obejmuje
wszystkie etapy związane z wytwarzaniem baz danych jako elementu składowego systemu
informatycznego (etapy: wymagań, analizy, modelowanie, architektura BD, projektowanie,
implementacja, utrzymanie, serwisowanie, dostrajanie,& ).
Zapytania SQL  podstawowe zasady (dla typowych RDB)
" Nie jest wskazane do używania operatora NOT IN  być może składnia jest nieco mniej
intuicyjna, aczkolwiek zdecydowanie wydajniejsza jest klauzula NOT EXISTS.
" Należy unikać zapytań z użyciem DISTINCT. Lepiej i wydajniej jest użyć GROUP BY.
" Nie należy używać operatorów nierówności:  <> ,  =! . O wiele korzystniej i wydajniej jest
włączyć nawet dużą listę niż wykluczyć z zapytania pojedyncze rekordy.
" Nie należy używać klauzul IS (NOT) NULL. Wartości NULL często powodują problemy w
obsłudze wektora wyników (np w aplikacjach klienckich), wymagają użycia dodatkowych
funkcji do obsługi itp. Najlepiej jest zamieniać puste wartości na konkretny znak lub liczbę i w
tej postaci przechowywać je w bazie danych.
" Wskazane jest poprzedzać nazwę tabeli właścicielem tabeli w części FROM zapytania  często
uniknie się dzięki temu dwuznaczności i kłopotów.
" W poleceniach INSERT zawsze jawnie należy wymieniać listę kolumn. W przeciwnym
wypadku każda zmiana struktury tabeli będzie generować błędy
" Należy unikać korzystania z  * w zapytaniach SQL  powoduje to zwykle niepotrzebny koszt
przetworzenia (operacje I/O) i przesłania danych (transmisja danych w sieci komputerowej)
" Funkcja COUNT - w każdym wypadku lepiej będzie użyć COUNT(1) niż COUNT(*)
" Przy łączeniu wielu tabel zwróć uwagę na kolejność występowania złączeń. Zawsze
najkorzystniej będzie ograniczyć jak największą ilość wierszy w pierwszym złączeniu.
" Zawsze przed wykonaniem zapytania SQL należy przyjrzyj się planowi wykonania tego
zapytania (EXPLAIN PLAN).
" Nie należy używać funkcji SQL w części WHERE zapytania. Należy rozważyć dodanie kolumny
z wartością wynikową działania funkcji, a jeżeli użycie funkcji jest niezbędne, to korzystaj z
indeksów bazujących na funkcjach (function-based indexes).
" Wskazane jest nie używać symboli wieloznacznych na początku szukanego słowa klauzuli
WHERE w wyrażeniu LIKE. Dużo wydajniejsze będzie wyszukiwanie nazwisko LIKE  N%owak
niż nazwisko LIKE  %owak , nawet jeżeli na tym polu jest założony jakiś indeks, to nie zostanie
on wykorzystany poprawnie .
ZarzÄ…dzanie indeksami :
 Typ indeksowanych kolumn powinien być najmniejszym z możliwych
 Szczególnie tyczy się to indeksów grupowalnych (indeksy niegrupowalne używają indeksu
grupowalnego do  wskazywania na konkretny wiersz)
 Tabela powinna zawierać klucz główny a w konsekwencji indeks grupowalny
 Należy unikać indeksowania kolumn, dla których wartości są mało zróżnicowane
 Czy łatwo byłoby posługiwać się książką telefoniczną, w której 75% abonentów miałoby
nazwisko Kowalski?
 Indeksujemy pola, często używane w klauzuli where, grupowaniu i sortowaniu, nie zaś te,
które są często wyświetlane
 Jest dobrą praktyką użycie długo wykonujących się zapytań do aktualizacji struktury
indeksów
Czy warto tworzyć indeksy  na wszystkie kolumny ?
" Indeksy fizycznie są składowane na dysku, potrzebne jest, więc miejsce na ich składowanie
" Duża liczba indeksów może przyczynić się do spadku wydajności bazy danych
" Wstawianie, modyfikacja i usuwanie danych wymuszą automatyczną aktualizację indeksów
(negatywny wpływ na wydajność)
Kiedy stosować indeksy?
" Zastosowanie indeksowania daje najlepsze rezultaty przy wybieraniu małej liczby rekordów z
dużego zbioru. Wtedy najlepiej widać korzyść z ograniczenia ilości bloków danych, które
muszą zostać odczytane z dysku.
" Zwykle przyjmuje się, że indeks jest opłacalny, gdy z tabeli czytane jest nie więcej niż około
15% rekordów. Indeksy odgrywają także istotną rolę przy zapytaniach ze złączeniami tabel. W
typowych aplikacjach biznesowych indeksuje (B-Tree) się zwykle klucze główne i obce. Dla
pozostałych pól poszukuje się kompromisu.
" Dokonać analizy kolumn najczęściej występujące w zapytaniach SQL w poleceniach WHERE,
ORDER BY i GROUP BY  pozwoli to wytypować odpowiednich kandydatów do stworzenia
indeksu.
" Wskazane jest tworzyć wąskie indeksy, tzn. takie które obejmują jak najmniejszą liczbę
kolumn. Ograniczy to użycie dysku i zwiększy wydajność.
" Zdecydowanie lepiej jest indeksować kolumny numeryczne w odróżnieniu do tekstowych,
ponieważ pola numeryczne zajmują mniej pamięci.
" Nie ma sensu tworzyć indeksu na kolumnie która ma małe zróżnicowanie wartości (np. pola
logiczne, płeć, stan cywilny, itp.)
" Należy usunąć nieużywane indeksy. Należy pamiętać o tym, że każdy indeks zajmuje miejsce
na dysku i spowalnia wykonanie instrukcji INSERT, UPDATE i DELETE. W wielu przypadkach
należy sobie odpowiedzieć na pytanie czy korzyści płynące z przyspieszenia odczytu danych
po stworzeniu indeksu równoważą koszty związane ze spowolnieniem operacji
modyfikujÄ…cych.
" Kolejność indeksowania kolumn indeksu kompozytowego (składającego się z wielu kolumn)
ma kluczowe znaczenie dla wykorzystania indeksu. W pierwszej kolejności z lewej strony w
indeksie powinny występować kolumny o największym zróżnicowaniu wartości (np. indeks
złożony z 3 kolumn o definicji: IdOsoby - MiastoUr - Płeć jest zdecydowanie lepiej
zdefiniowany niż: Płeć  IdOsoby - MiastoUr ).
OPTYMALIZATORY
Przetwarzanie zapytań SQL (język SQL jest językiem deklaratywnym) polega na przygotowaniu
możliwych planów wykonania zapytania (zwykle proces ten jest ograniczony w czasie), dla których
następnie jest szacowany koszt ich wykonania i najlepszy plan (min kosztu wykonania) jest
przekazywany do realizacji. Stosowane są zwykle dwa rodzaje optymalizatorów:
" regułowy (ang. rule) optymalizator podejmuje decyzję, w jaki sposób najszybciej dotrzeć do
danych na podstawie zestawu reguł oraz rankingu różnych ścieżek dostępu do danych.
Optymalizator regułowy dla przykładu zwykle faworyzuje dostęp poprzez indeks, nie potrafi
rozróżnić i dostosować się względem dostępu do małych tabel jak i do wielkich. Decyzja o
dostępie zapada na podstawie indeksów.
" kosztowy (ang. cost-based)  szacuje koszt wykonania zapytania (planu zapytania)
uwzględniający sposób przetwarzania danych w bazie danych. Algorytm korzysta z
zgromadzonych wcześniej informacji (statystyki) o samych danych.
Techniki buforowania:
" Buforowanie przezroczyste oznacza mechanizm działający w tle, niezauważalny dla
użytkownika, nie wymagający od niego podawania specjalnych komend do poprawnego
działania.
" Buforowanie nieprzezroczyste jest mechanizmem, w którym jego zachowanie jest sterowane
poprzez specjalne instrukcje podawane przez użytkownika.
" Buforowanie pasywne (klasyczne) polega na przetrzymywaniu wyników, których
bezpośrednio dotyczyło żądanie. Technika ta pozwala na obsługę kolejnego identycznego
żądania lub żądania, które odnosi się do podzbioru danych przetrzymywanych w buforze bez
konieczności kontaktowania się ze zródłem. Jest to mechanizm o prostej zasadzie działania,
dający bardzo dobrą poprawę wydajności.
" Buforowanie aktywne różni się od pasywnego ilością pobieranych i magazynowanych danych.
W przeciwieństwie do pasywnego nie zapamiętuje jedynie bezpośrednio zażądanych danych.
Za pomocą ustalonych zasad określa jakich danych może dotyczyć kolejne żądanie i zawczasu
pobiera je ze zródła. Aby nie obniżać wydajności innych funkcji systemu, pobranie
nadmiarowych danych może następować podczas bezczynności systemu lub połączeń
sieciowych. Tego typu rozwiązanie daje bardzo dobre efekty w systemach, gdzie żądania
występują stosunkowo rzadko i dotyczą niewielkiego podzbioru dostępnych danych, a czas
odpowiedzi jest kluczowym parametrem systemu.
ROZPROSZENIE
Dla większości zadań obliczeniowych nie istnieją lub nie są znane metody dekompozycji na
podzadania wykonywane równolegle.
Dla zadań o intensywnym wykorzystaniu danych ( data intensive ) rozproszenie obliczeń
implikuje konieczność rozproszenia danych.
Rozproszenie danych i usług musi stać się elementem procesu projektowego, który
wyklucza rozpraszanie ad hoc, na podstawie dynamicznie pojawiajÄ…cych siÄ™ mocy
obliczeniowych.
Problemem jest również przeniesienie trwających już zadań na inny komputer.
Przezroczystość (transparency): traktowanie rozproszonych zasobów i usług tak, jak gdyby
były one wewnątrz przestrzeni adresowej jednego komputera (Przezroczystość położenia i
dostępu, współbieżności, skalowania, fragmentacji, replikacji, awarii, migracji ).
Interoperacyjność (interoperability): umożliwienie współpracy heterogenicznych platform,
aplikacji, logik biznesowych i organizacji danych.
Efektywność: uzyskanie czasów przetwarzania akceptowalnych dla szerokiego kręgu
użytkowników rozproszonych aplikacji.
Bezpieczeństwo: przeciwdziałanie losowym awariom oraz możliwościom ataku z zewnętrz.
Rozproszona baza danych (RDB) definiowana jest jako:
" zbiór składający się z wielu logicznie ze sobą powiązanych elementów bazy danych,
oddalonych geograficznie i połączonych ze sobą poprzez sieć komputerową [Subieta],
" logicznie powiązany zbiór danych wraz z opisem tych danych, współużytkowanych przez
wielu użytkowników, fizycznie rozproszony w sieci komputerowej [Connolly].
Rozproszony system zarzÄ…dzania bazÄ… danych (RSZDB)
definiowany jest jako:
" Jedna logiczna bazy danych podzielona na fragmenty. Każdy fragment przechowywany jest
na jednym bądz większej liczbie komputerów i jest zarządzany przez osobny system
zarządzania bazą danych; komputery (węzły) zawierające poszczególne fragmenty bazy
połączone są poprzez sieć komputerową. Każdy komputer może niezależnie przetwarzać
żądania użytkowników dotyczące jego lokalnych danych (czyli każda jednostka systemu
posiada pewien zakres autonomii), a także przetwarzać dane przechowywane na innych
komputerach w sieci [Connolly04];
" Oprogramowanie umożliwiające połączenie rozproszonych zasobów w jedną całość,
utrzymanie spójność zasobów oraz udostępnianie ich użytkownikom przy założeniu
przezroczystości rozproszenia [Subieta03].
12 reguł (idealnej) rozproszonej bazy danych [Date]:
" lokalna autonomia baz danych  węzły lokalne baz danych powinny podlegać lokalnym
regułom własności i powinny być zarządzane lokalnie - obejmuje funkcje związane z
bezpieczeństwem, integralnością i reprezentacją wewnątrz pamięci, operacje przetwarzania
dotyczące węzła realizowane są na poziomie lokalnym - wyjątki dotyczą sytuacji, kiedy więzy
integralności muszą obejmować jednocześnie wiele węzłów oraz zewnętrznym sterowaniem
rozproszonymi transakcjami,
" niezależność od węzła centralnego - brak podporządkowania przetwarzania do konkretnego
miejsca: uniknięcie wąskich gardeł dzięki decentralizacji wszystkich funkcji rozproszonego
SZBD,
" ciągłość funkcjonowania - przestoje w wykonywaniu operacji nie powinny być skutkiem
dodania nowych miejsc lub ich usunięcia ze środowiska rozproszonej BD, a dokonanie zmian
w meta-informacji lub modyfikacji wersji SZBD,
" niezależność położenia  jest pojęciem ściśle skorelowanym z przezroczystością położenia,
co oznacza użytkownicy lub programy aplikacyjne nie muszą wiedzieć, gdzie dane są fizycznie
przechowywane,
" niezależność fragmentacji - fragmenty jednego zbioru danych mogą być przechowywane i
zarządzane przez rozproszony SZBD jako jedna całość, bez uświadamiania użytkowników lub
aplikacji o sposobie ich rozczłonkowania; pożądaną własnością rozproszonego SZBD jest to,
aby w sposób automatyczny unikał przetwarzania nierelewantnych fragmentów np. jeżeli
fragmenty obiektów (atrybuty, metody) F1,...,Fi znajdują się w węzle X, zaś fragmenty
Fi+1,...,Fj są w węzle Y, a pewne zapytanie odwołuje się wyłącznie do fragmentów
znajdujących się w węzle X, to należy pominąć odwołania do węzła Y podczas realizacji tego
zapytania,
" niezależność replikacji - istnienie replik danych w wielu miejscach, ich pojawianie się lub
usuwanie nie powinno wpływać na postępowanie użytkowników ani na poprawność bądz
spójność aplikacji,
" rozproszone przetwarzanie zapytań - system powinien zapewniać sprawne przetwarzanie
zapytań do rozproszonych zasobów systemu, umożliwiając redukcję zarówno czasu
przetwarzania, jak i obciążenia sieci komunikacyjnej,
" zarzÄ…dzanie rozproszonymi transakcjami - zasady zarzÄ…dzania transakcjami oraz sterowania
współbieżnością powinny obowiązywać dla operacji w rozproszonej bazie danych; zasady te
to: ACID - atomowość, spójność, niezależność, trwałość transakcji; wykrywanie i usuwanie
zakleszczeń (deadlocks), zarządzanie przekroczeniami dopuszczalnego czasu (timeout),
rozproszone protokóły potwierdzenia (commit) i odwracania (rollback) oraz inne metody,
" niezależność od sprzętu - oprogramowanie rozproszonego SZBD powinno umożliwiać
funkcjonowanie na różnych platformach sprzętowych,
" niezależność od systemu operacyjnego - oprogramowanie rozproszonego SZBD powinno
pracować pod kontrolą różnych systemów operacyjnych,
" niezależność od sieci - miejsca mogą być połączone poprzez szeroką gamę środowisk
sieciowych i komunikacyjnych; modele warstwowe istniejące dla współczesnych protokółów
komunikacyjnych zapewniają środki do osiągnięcia tego celu nie tylko dla rozproszonych baz
danych lecz w ogólności dla systemów informacyjnych,
" niezależność od SZBD - powinno być możliwe przyłączenie do rozproszonej bazy danych
lokalnej bazy danych zarządzanej przez dowolny lokalny SZBD wykorzystujące różne modele
danych
PRZEZROCZYSTOŚĆ
" przezroczystość  rozumiana jako mechanizm pozwalający użytkownikowi (klientowi,
programiście, administratorowi, itp.) systemu rozproszonego na zwolnienie z obowiązku
określania i decydowania o szczegółach związanych z rozproszeniem. Wyróżnia się kilka form
przezroczystości [Subieta]:
" przezroczystość położenia  zwalnia użytkowników z obowiązku określania położenia
zasobów danych i wymusza unifikacje metod operowania na zasobach lokalnych i
odległych,
" przezroczystość dostępu - uwalnia użytkowników od konieczności (a niekiedy
również uniemożliwienie) korzystania z informacji o aktualnym położeniu danych,
" przezroczystość współbieżności - umożliwia wielu użytkownikom jednoczesny dostęp
do danych bez konieczności uzgodnień i porozumiewania się, przy zapewnieniu
pełnej spójności danych i przetwarzania,
" przezroczystość skalowania - umożliwienie dodawania nowych elementów bazy
danych bez wpływu na działanie starych aplikacji i pracę użytkowników,
" przezroczystość replikacji - umożliwienie tworzenia i usuwania kopii danych w innych
miejscach geograficznych z bezpośrednim skutkiem dla efektywności przetwarzania,
ale bez skutków dla postaci programów użytkowych lub pracy użytkownika
końcowego,
" przezroczystość wydajności - umożliwienie dodawania nowych elementów systemu
komputerowego (np. serwerów, dysków) bez wpływu na pracę większości
użytkowników rozproszonej bazy danych,
" przezroczystość fragmentacji - automatyczne scalanie obiektów, tabel lub kolekcji,
których fragmenty są przechowywane w różnych miejscach,
" przezroczystość awarii - umożliwienie nieprzerwanej pracy większości użytkowników
rozproszonej bazy danych w sytuacji, gdy niektóre z jej węzłów lub linie
komunikacyjne uległy awarii,
" przezroczystość migracji - umożliwienie przenoszenia zasobów danych do innych
miejsc bez wpływu na pracę użytkowników,
" współdziałanie  czyli współpracę wielu heterogenicznych, budowanych niezależnie
systemów,
" przenaszalność  własność pozwalająca na swobodne przenoszenie oprogramowania lub
modułów pomiędzy różnymi heterogenicznymi platformami,
" autonomia  każdy węzeł systemu rozproszonego jest do pewnego stopnia samodzielny i
niezależny  tylko określona część zasobów i usług jest udostępniana,
" niezależność danych  określa możliwość projektowania, udostępniania, zmiany nośników,
zmiany reprezentacji, itp., na danych niezależnie od programów na nich operujących,
" ontologia  formalny opis własności lokalnej i rozproszonej bazy danych niezbędny do
operowania, projektowania i implementacji oprogramowania  określana również jako meta-
bazÄ… danych wraz z mechanizmami pozwalajÄ…cymi na uzyskanie dodatkowych informacji
(meta-atrybutów) potrzebnych do właściwego przetwarzania danych
Architektury rozproszonych systemów baz danych:
" homogeniczne (jednorodne)  jednorodność sprzętu i oprogramowania,
" heterogeniczne  w zakresie różnego sprzętu komputerowego, różnego rodzaju sieci
komunikacyjnych i różnego rodzaju oprogramowania,
" wielobazowe SZBD (MDBS  multidatabase system)  rozproszony SZBD, w którym każdy
węzeł jest w pełni autonomiczny i umożliwia współużytkowanie danych bez konieczności
pełnej integracji schematów baz danych [Connolly]. W klasie rozproszonych systemów baz
danych wyróżnia się również federacyjne bazy danych, definiowane jako kolekcje
heterogenicznych, autonomicznych baz danych połączonych siecią komputerową, zarządzane
specjalnym system określanym jako federacyjny [Subieta] .
System wielobazowe możemy również podzielić według innego kryterium na:
" niefederacyjne, w których nie ma lokalnych użytkowników,
" federacyjne (sfederowane), które są połączeniem systemów baz rozproszonych i
scentralizowanych  użytkownicy globalni widzą ten system jako rozproszony, natomiast
lokalni jako scentralizowany; wyróżnia się słabo i ściśle skojarzone federaty.
Przyczyny stosowania rozproszonych baz danych:
" informacje i dane sÄ… rozproszone ,
" wydajność/koszt ( data computing ,  data intensive ),
" skalowalność,
" dostępność,
" modularność,
" niezawodność,
" bezpieczeństwo.
FRAGMENTACJA
Fragmentacja jest procesem podziału zbioru elementów (obiektów  w bazach obiektowych)
na wiele podzbiorów (nazywanych fragmentami). Głównym celem fragmentacji jest
podniesienie wydajności.
" fragmentacjÄ™ poziomÄ… (horyzontalnÄ…)  istniejÄ… dwa podstawowe warianty
definiowania fragmentacji poziomej w bazach obiektowych: jako podział zbioru
wszystkich obiektów (wszystkich klas) na wiele podzbiorów umiejscowionych w
różnych węzłach rozproszonego systemu lub podział zbioru obiektów ze względu na
przyporzÄ…dkowanie do klas; podstawowymi technikami fragmentacji sÄ… techniki
znane jako round-robin, hash, range; - CZYLI MIELISMY DANE 100 PRACOWNIKÓW,
50 PRACOWNIÓW W JEDNEJ BAZIE 50 W DRUGIEJ
" fragmentację pionową (wertykalną)  polega na podziale (rozbiciu) zasobów
obiektów (atrybutów, metod, powiązań) na podzbiory umiejscowione w różnych
węzłach systemu rozproszonego; - CZYLI MAMY 100 PRACOWNIKÓW, 100
PRACOWNIKOW(CZŚĆ ICH ATRYBUTÓW I METOD) W JEDNEJ BAZIE, 100
PRACOWNIKÓW (CZŚĆ ICH ATRYBUTÓW I METOD) W DRUGIEJ BAZIE
" fragmentacjÄ™ mieszanÄ… (hybrydowÄ…)  jest to kombinacja fragmentacji poziomej i
pionowej, która jest bardzo trudna w realizacji i utrzymaniu
ALOKACJA
Alokacja jest procesem przydziału każdego fragmentu do jednego lub więcej miejsc (węzłów).
Podstawowym celem alokacji jest zredukowanie kosztów przetwarzania. Alokacja
rozpatrywana jest w kontekście dwóch miar:
" minimalizacji kosztu  koszt przechowywania każdego fragmentu w węzle sieci, koszt
ewaluacji zapytania do fragmentu w węzle, koszt modyfikacji jednego fragmentu we
wszystkich węzłach systemu rozproszonego, gdzie jest on przechowywany oraz koszt
transmisji; podstawowym problem alokacji jest znalezienie przydziału, który
minimalizuje łączną funkcję kosztów,
" wydajności - odpowiednio zdefiniowana strategia alokacji powinna utrzymać
wydajność systemu na żądanym poziomie i odnosi się głównie do minimalizacji czasu
odpowiedzi systemu i maksymalizację przepustowości systemu dla każdego węzła
rozproszonego systemu.
REPLIKACJA
Replikacja jest operacją umieszczania (alokacji) tych samych elementów (fragmentów) w
różnych węzłach systemu rozproszonego (dwie lub więcej repliki/kopie). Replikacja może być
kompletna lub selektywna oraz może odbywać się na żądanie/zdarzenie lub według
harmonogramu. Głównym zadaniem replikacji jest zwiększenie dostępności danych przy
minimalizacji kosztów transmisji danych z odległych węzłów oraz umożliwienie
równoważenia obciążenia w zakresie dostępu do zasobów umieszczonych w wielu węzłach i
niezawodności systemu (bezpieczeństwa i odporności danych na zniszczenie).
Wyróżniane są alokacje:
" bez redundancji (alokacja porcjowa) - każdy fragment jest umieszczony dokładnie w
jednym węzle,
" z redundancją (częściowa lub pełna replikacja) - każdy fragment może być powielony
w większej liczbie węzłów.
TEMPORALNE BAZY DANYCH
Obecnie projektowane bazy danych przechowują głównie dane aktualne  na dzień dzisiejszy ,  na
dany moment , w których każdemu gromadzonemu faktowi zwykle nie przypisuje się znaczników
czasu, w którym jest (lub był, będzie) on prawdziwy (np. zmiana cen towarów w sklepie).
" Temporalna baza danych (TBD) - baza danych zawierajÄ…cÄ… przynajmniej jeden rodzaj
znacznika czasu.
" Najczęściej jest ona obecnie odmianą bazy relacyjnej, w której każdy rekord posiada swój
stempel czasowy( ang. time stamp).
Temporalny system baz danych  temporalna baza danych wraz z systemem zarzÄ…dzania TBD -
dla każdej danej przechowuje jej czas ważności (okres, w którym dany fakt jest prawdziwy
względem świata rzeczywistego) oraz czas transakcji (okres, w którym dany fakt jest zapisany w
bazie danych).
" Stempel czasowy (time stamp) - to własność, do którego wpisywany jest znacznik czasowy, w
którym nastąpiło określone zdarzenie. Na podstawie jego wartości i precyzyjności można
rozróżnić dwie dowolne operacje ( np. do ustalenia kolejności zdarzeń, ostatniej aktualizacji
obiektu itp.)
" Czas to jedno z podstawowych pojęć filozoficznych, skalarna wielkość fizyczna określająca
kolejność zdarzeń oraz odstępy między zdarzeniami, proces, zjawisko przemiany. Może być
rozumiany, jako: chwila, punkt czasowy, odcinek czasu, trwanie, zbiór wszystkich punktów i
okresów czasowych.
" Aspekt temporalności dotyczy zarówno gromadzonych i przetwarzanych danych (zmiana
wartości/stanu elementów) jak i metamodelu (zmiana w czasie modelu danych  utworzenie
nowych, modyfikacja i usunięcie encji, atrybutów, powiązań)
Cechy TBD:
" temporalny język definicji, modyfikacji i wyszukiwania danych,
" wsparcie temporalnych ograniczeń integralnościowych,
" algebra relacyjna rozszerzona o operacje uwzględniające czas.
Podział znakowania czasem dzielimy na:
" dyskretny, tzn. reprezentowany za pomocÄ… niepodzielnych jednostek (ang. chronons) np.
dzień, sekunda
" ciągły, tzn. przedstawiony za pomocą przedziałów czasu. np.  od& .do .
" względny np.:  5 godzin
" bezwzględny np.  godzina 10:00 dnia 05.05.2010 .
StrukturÄ… czasu zajmuje siÄ™ logika temporalna. Logiki temporalnych
możemy podzielić na dwie grupy:
" Liniową ( ang. linear) - czas przedstawia się za pomocą zbioru punktów uporządkowanych
liniowo
" Rozgałęzioną ( ang. branching) - od przeszłości do chwili obecnej czas jest liniowy, następnie
rozgałęzia się na kilka ścieżek, z których każda reprezentuje inną potencjalną wersję zdarzeń
(czas równoległy)
Atrybuty relacji temporalnej możemy podzielić na:
" identyfikator pozycji (ang. item surrogate) - jest unikalnym id, który nadawany jest
automatycznie podczas zmiany stanu danego obiektu bÄ…dz po prostu podczas procesu
dodawania nowego rekordu do tabeli. Wraz z identyfikatorem obiektu tworzy klucz
podstawowy każdego stanu obiektu.
" Identyfikator obiektu jest to klucz określany, jako spinacz stanów encji. To on określa z
którym obiektem mamy do czynienia lecz na jego podstawie nie dowiemy się, z którym
dokładnie stanem tego obiektu.
" Czas transakcji (ang. Transaction time) jest to znacznik czasowy, który oznacza, kiedy
informacja została zapisana w bazie danych. Uwzględnić ten znacznik musimy wtedy, gdy
chcemy  cofnąć bazę do wybranego momentu w przeszłości. Czas transakcji przechowuje
nie historię obiektu ale wersję zdarzeń.
" Czas rzeczywisty (ang. Valid time) jest to moment (znacznik czasowy), podczas którego fakt
istnieje w rzeczywistym świecie.
" Czasy zdefiniowane przez użytkownika- są to atrybuty opisujące dany obiekt lub jego stany,
nie będące wskaznikami czasowymi obiektu, często wykorzystywane w celu ułatwienia
wyszukiwania danych w bazie.
" Atrybuty o wartościach stałych w czasie, czyli atrybuty, które niezależnie od tego jak długo
obiekt istnieje w bazie nie zmienią swojej wartości. Jest on utrzymywany z powodu
przydatności ( w celu informacyjnym) aczkolwiek nie jest modyfikowany przez cały cykl życia
obiektu. Takim przykładem może być np.: data urodzenia, kolor oczu czy też Pesel itp.
" Atrybuty zmienne w czasie - atrybuty o wartościach, które często zmieniają się wraz z
upływem czasu. Modyfikowanie takich atrybutów jest przyczyną dodawania nowych stanów
danego obiektu do bazy.
" czasy definiowane przez użytkownika (ang. user defined times)
ALGERBA
Algebrę nazywamy zbiorem z działaniami, z jednym bądz wieloma argumentami w postaci relacji,
którego wynik jest częścią tego zbioru.
W przypadku bazy danych zbiorem tym będzie zbiór tabel, natomiast działaniami będą operacje na
tym zbiorze, które w wyniku zwracają ponownie tabelę.
W algebrze relacji operacje te można podzielić na poniższe kategorie:
" Działania zwyczajne algebry zbiorów: suma, przecięcie jak również różnica
" Operacje zawężania relacji takie jak selekcja i rzutowanie
" Działania komponowania wierszy, które pochodzą z wielu relacji np.:  iloczyn kartezjański ,
wszelkie operacje złączenia
" Operacje  przemianowania zmieniajÄ…ce schemat relacji np.: nazwÄ™ samej relacji
Operacje wykonywane na danych w TBD
Podstawowymi operacjami wykonywanymi na danych w bazie danych sÄ… :
 Wyszukiwanie, czyli instrukcja SELECT w języku zapytań SQL jest najczęściej używaną
operacją wykorzystywaną przy wyświetlaniu niezbędnych informacji dla użytkownika
jak również w połączeniu z działaniami wymienionych powyżej.
W temporalnej bazie danych przechowywane są dane historyczne ( bardzo często
potrzebujemy wyświetlenia całej historii zawartej w jednej, lub kilku połączonych
tabelach), dlatego dobrze jest przechowywać również dane na temat wszelkich
modyfikacji (korekt), aby mieć wgląd do operacji jakie się na tych danych wykonuje.
PociÄ…ga to za sobÄ… pewne utrudnienie w wyszukiwaniu poprawnych (prawdziwych)
rekordów
 Dodawanie (INSERT) to operacja, która w bazie temporalnej jest rezultatem zmiany
stanu danego obiektu w tabeli. Działanie to jest ściśle powiązane ze zmianą
znaczników czasu transakcyjnego (oraz pośrednio znaczników czasu rzeczywistego)
stanu aktualnie dodawanego oraz stanu poprzedniego.
 Usuwanie (DELETE) - w przypadku bazy temporalnej operacji fizycznego usunięcia
(DELETE) z bazy danych nie wykonuje się ( ewentualnie sporadycznie, jeśli byłaby
taka konieczność), ponieważ wiąże się to z licznymi problemami, jakimi są chociażby
luki czasowe ( przerwanie ciągłości historii), ale przede wszystkim ze względu na
potrzebÄ™ przechowywania wszelkich operacji, jakie sÄ… wykonywane na danych w tej
bazie. Z tego właśnie względu nawet przy korektach wykorzystuje się działania
dodawania ( INSERT) oraz modyfikowania (UPDATE) a nie usuwania (DELETE).
 Modyfikowanie, (UPDATE) jak sama nazwa wskazuje jest operacjÄ… zmiany jednej
wartości na inną w danym stanie. W momencie korekty stanu w bazie temporalnej
przeważnie wykonywana jest w parze z działaniem dodawania (INSERT).


Wyszukiwarka