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).