Obiektowe bazy danych

Podobne dokumenty
Obiektowe bazy danych

Odwzorowanie obiektowo-relacyjne. Wykład opracował: Tomasz Koszlajda

Obiektowe bazy danych

Przypomnienie najważniejszych pojęć z baz danych. Co to jest baza danych?

Bazy danych. Andrzej Łachwa, UJ, /15

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Program szkoleniowy Efektywni50+ Moduł III Standardy wymiany danych

InsERT GT Własne COM 1.0

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

Chemoinformatyczne bazy danych - Wprowadzenie do technologii baz danych. Andrzej Bąk

Postanowienia ogólne. Usługodawcy oraz prawa do Witryn internetowych lub Aplikacji internetowych

Baza danych. Baza danych jest to zbiór danych powi zanych mi dzy sob pewnymi zale no ciami.

System zarządzania bazą danych (SZBD) Proces przechodzenia od świata rzeczywistego do jego informacyjnej reprezentacji w komputerze nazywać będziemy

System kontroli wersji SVN

PL/SQL. Zaawansowane tematy PL/SQL

Projektowanie bazy danych

SIECI KOMPUTEROWE I BAZY DANYCH

Wartości domyślne, szablony funkcji i klas

Zarządzanie Zasobami by CTI. Instrukcja

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

API transakcyjne BitMarket.pl

Sieci komputerowe cel

Zarządzanie projektami. wykład 1 dr inż. Agata Klaus-Rosińska

KATEDRA INFORMATYKI STOSOWANEJ PŁ ANALIZA I PROJEKTOWANIE SYSTEMÓW INFORMATYCZNYCH

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

Charakterystyka systemów plików

Obiektowe bazy danych

Obiektowe bazy danych

Architektura komputerów

Warunki Oferty PrOmOcyjnej usługi z ulgą

Wiedza niepewna i wnioskowanie (c.d.)

Komunikat dla osób rozliczających umowy w sprawie nowego sposobu rozliczania umów w związku z likwidacją II fazy rozliczeń.

Kompozycja i dziedziczenie klas

Programowanie obiektowe

POLITYKA PRYWATNOŚCI SKLEPU INTERNETOWEGO

Harmonogramowanie projektów Zarządzanie czasem

Praca na wielu bazach danych część 2. (Wersja 8.1)

Oracle11g: Wprowadzenie do SQL

Tworzenie modelu obiektowego

Konfiguracja historii plików

epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji

Ładowanie i reorganizacja

W dobie postępującej digitalizacji zasobów oraz zwiększającej się liczby dostawców i wydawców

INTERAKTYWNA APLIKACJA MAPOWA MIASTA RYBNIKA INSTRUKCJA OBSŁUGI

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy

Post-relacyjne bazy danych

Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych ul. Koszykowa 75, Warszawa

Aplikacje internetowe oparte na kluczowych technologiach Java Enterprise(Servlet,JSP,JDBC, )

PROCEDURA ADMINISTROWANIA ORAZ USUWANIA

Obliczenia arytmetyczne. Konkatenacja pól. Aliasy kolumn. Aliasy tabel. Co dalej? Rozdział 4. Korzystanie z funkcji. Zastosowanie funkcji

DE-WZP JJ.3 Warszawa,

Edycja geometrii w Solid Edge ST

Projektowanie i programowanie obiektowe (materiały do wykładu cz. VI)

Jak usprawnić procesy controllingowe w Firmie? Jak nadać im szerszy kontekst? Nowe zastosowania naszych rozwiązań na przykładach.

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

Oprogramowanie FonTel służy do prezentacji nagranych rozmów oraz zarządzania rejestratorami ( zapoznaj się z rodziną rejestratorów FonTel ).

Polityka prywatności strony internetowej wcrims.pl

Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x

Obiektowe bazy danych Obiektowe i obiektowo-relacyjne bazy danych

Elementy i funkcjonalno

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Programowanie obiektowe

Odpowiedzi na pytania zadane do zapytania ofertowego nr EFS/2012/05/01

ZARZĄDZENIE WEWNĘTRZNE Nr 10 / 2006 WÓJTA GMINY RABA WYŻNA z dnia 07 lutego 2006 roku

Systemy mikroprocesorowe - projekt

PRAWA ZACHOWANIA. Podstawowe terminy. Cia a tworz ce uk ad mechaniczny oddzia ywuj mi dzy sob i z cia ami nie nale cymi do uk adu za pomoc

REGULAMIN Komendy Powiatowej Policji w Świeciu z dnia 12 września 2011 r. naboru na wolne stanowiska w Korpusie Służby Cywilnej

System do kontroli i analizy wydawanych posiłków

Wykład 8. SQL praca z tabelami 5

Katedra Informatyki i Automatyki Politechnika Rzeszowska. Administrowanie bazą danych Oracle za pomocą programu DBA Studio. I.

Miejski System Zarządzania - Katowicka Infrastruktura Informacji Przestrzennej

OPIS PRZEDMIOTU ZAMÓWIENIA DO ZAPYTANIA KE1/POIG 8.2/13

GENERALNY INSPEKTOR OCHRONY DANYCH OSOBOWYCH

P 0max. P max. = P max = 0; 9 20 = 18 W. U 2 0max. U 0max = q P 0max = p 18 2 = 6 V. D = T = U 0 = D E ; = 6

WARUNKI TECHNICZNE ARCHIWIZACJI DOKUMENTÓW

Regulamin Zarządu Pogórzańskiego Stowarzyszenia Rozwoju

Metody dostępu do danych

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento (plugin dostępny w wersji ecommerce)

Sieć komputerowa grupa komputerów lub innych urządzeo połączonych ze sobą w celu wymiany danych lub współdzielenia różnych zasobów, na przykład:

SBQL. język zapytań dla obiektowych baz danych. Kamil Adamczyk. Uniwersytet Warszawski 20.IV.2009

System Zarządzania Relacyjną Bazą Danych (SZRBD) Microsoft Access 2010

REJESTRATOR RES800 INSTRUKCJA OBSŁUGI

Zobacz to na własne oczy. Przyszłość już tu jest dzięki rozwiązaniu Cisco TelePresence.

EdgeCAM 12.0 brak moŝliwości instalacji na Windows 2000

Jak rozwi zania SAP BusinessObjects wspieraj dzia alno NBP analityka w Narodowym Banku Polskim

HAŚKO I SOLIŃSKA SPÓŁKA PARTNERSKA ADWOKATÓW ul. Nowa 2a lok. 15, Wrocław tel. (71) fax (71) kancelaria@mhbs.

Archiwum Prac Dyplomowych

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

Microsoft Management Console

Paweł Kurzawa, Delfina Kongo

Programowanie Zespołowe

Instrukcja sporządzania skonsolidowanego bilansu Miasta Konina

Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate

Spis tre±ci. Przedmowa... Cz ± I

DOTACJE NA INNOWACJE ZAPYTANIE OFERTOWE

SQL. Ćwiczenia praktyczne. Wydanie II

KOMISJA WSPÓLNOT EUROPEJSKICH. Wniosek DECYZJA RADY

Transkrypt:

Obiektowe bazy danych Obiektowy model danych Wyk ad prowadzi: Tomasz Koszlajda Plan wyk adu Przes anki dla nowej generacji systemów baz danych Podstawowe elementy obiektowego modelu danych Konstruktory z o onych typów danych Abstrakcyjne typy danych Dziedziczenie Zwi zki mi dzy danymi Hierarchie kolekcji obiektów Polimorfizm i pó ne wi zanie To samo danych Trwa o danych

Nowe dziedziny zastosowa baz danych Systemy wspomagania projektowania CAD/CAM Systemy informacji przestrzennej Multimedialne bazy danych Charakterystyka nowych dziedzin zastosowa Z o one, hierarchiczne struktury danych Z o one behawioralne w asno ci danych Nowe modele przetwarzania: ad hoc dynamiczna struktura transakcji, nawigacja vs. selekcja, kooperuj ce i intensywnie przetwarzaj ce dane transakcje Nowe technologie budowy aplikacji J zyki obiektowe Przyk ad z o onej rzeczywisto ci Obraz {persistence} #utworzony : Date #elementy[1..*] : Figura +dodaj(figura) +utwórzkopi () :Obraz [1..*] [0..*] utworzy a [1..*] Osoba {persistence} +imi : String +nazwisko : String +adres : Adres jest_pierwowzorem [0..1] Adres +miasto : String +ulica : String +NrDomu : Integer Odcinek #Wierzcho ki[2] : Punkt +D ugo () : Float +Przesu (Float, Float) Wielok t #Kraw dzie[3..*] : Odcinek +Powierzchnia() : Float +Przesu (Float, Float) Punkt +X : Float +Y : Float +przesu (Float,Float) Figura {abstract} +typ : String +Powierzchnia() : Float +Przesu (Float, Float) Ko o # rodek : Punkt #promie : Float +Powierzchnia() : Float +Przesu (Float, Float)

Ograniczenia relacyjnego modelu danych P askie jednowymiarowe struktury danych Identyfikacja danych jedynie za pomoc ich warto ci Zamkni ty zbiór prostych i predefiniowanych typów danych Brak poj cia zwi zków mi dzy danymi Brak hierarchii typów danych Figury(id_f PK, typ, powierzchnia) Odcinki(id_odc PK FK(Figury), typ, x1, y1, x2, y2) Wielok ty(id_w PK FK(Figury), typ) Kraw dzie(id_k PK, x1, y1, x2, y2, id_w FK(Wielok ty)) Ko a(id_k PK FK(Figury), typ, x, y, promie ) Obrazy(id_ob PK, utworzony) Osoby(id_os PK, imi, nazwisko, miasto, ulica, numer_domu) Autorstwo(id_ob FK(Obrazy), id_os FK(Osoby)) Modyfikacje(wzorzec FK(Obrazy), modyfikacja FK(Obrazy)) Przes anki nowej generacji modelu danych Potrzeba bogatszego modelu danych Rozszerzalny model danych umo liwiaj cy cis e dopasowanie dla dowolnych dziedzin zastosowa ci lejsza integracja z obiektowymi aplikacjami bazy danych Aplikacja Aplikacja Semantyka wiata rzeczywistego Prosty model danych Silny model danych Semantyka wiata rzeczywistego

Podstawowe elementy obiektowego modelu danych Obiekt: stan i funkcjonalno Cechy obiektów: atrybuty i zwi zki Funkcjonalno obiektu: metody To samo obiektu Hermetyczno obiektów Klasa: typ danych i modu programowy Dziedziczenie: wspó dzielenie implementacji i relacja podtypu Przeci anie i dynamiczne wi zanie funkcjonalno ci obiektów Drogi rozwoju obiektowych baz danych Obiektowe j zyki programowania Relacyjne bazy danych Obiektowe bazy danych ODMG Obiektowe interfejsy O/RM Obiektowo-relacyjne bazy danych SQL3/99 Obiektowe Obiektowe Relacyjne Relacyjne Obiektowe

Architektury obiektowych i obiektowo relacyjnych systemów baz danych Struktury danych aplikacji 4GL kopiowanie i konwersja danych brak konwersji danych OQL SQL Obiektoworelacyjne bazy danych Struktury danych bazy danych Obiektowe bazy danych Baza danych jako zbiór kolekcji obiektów Stan obiektowej bazy danych jest zbiorem kolekcji trwa ych i rozró nialnych obiektów. Schemat obiektowej bazy danych jest zbiorem klas, które definiuj struktur i funkcjonalno obiektów. W obiektowych bazach danych rozró nia si poj cie klasy jako definicji w asno ci obiektów od poj cia rozszerzenia klasy b d cego zbiorem trwa ych obiektów. class Figura { // nazwa klasy jako typu (extent Figury) // nazwa rozszerzenia klasy jako // zbioru wyst pie

Abstrakcyjne typy danych Mo liwo definiowania nowych typów danych o dowolnej z o ono ci i funkcjonalno ci. Typy danych u ytkownika mog by podstaw definicji pojedynczych atrybutów klas jak równie ca ych klas. class Punkt { attribute Float X, Y; void przesu (in Float x, in Float y);}; class Odcinek { attribute Punkt W1, W2; void przesu (in Float a, in Float b) { W1.przesu (a, b); W2.przesu (a, b); }}; Punkt +X : Float +Y : Float +przesu (Float,Float) Odcinek {persistence} #Wierzcho ki[2]:punkt +przesu (Float,Float) Dziedziczenie Klasy mog by specjalizowane przez mechanizm dziedziczenia. Klasa pochodna dziedziczy funkcjonalno i implementacj klasy bazowej. W klasie pochodnej mo na doda now funkcjonalno lub redefiniowa funkcjonalno odziedziczon. Figura class Wielok t extends Figura // dziedziczenie {...}; class Wielok t : Figura // relacja podtypu {...}; Relacja podtypu Dziedziczenie {abstract, persistence} +Powierzchnia() : Float +Przesu (Float, Float) Wielok t {persistence} #Kraw dzie[3..*] : Odcinek +Powierzchnia() : Float +Przesu (Float, Float)

Z o one struktury danych Mo liwo naturalnego modelowania atrybutów z o onych i wielowarto ciowych. Przyk ad zastosowania konstruktorów typów z o onych w j zyku ODL. class Wielok t { struct Punkt { //typ Float X, Y; } struct Odcinek { //typ Punkt Wierzcho ek_1; Punkt Wierzcho ek_2;} //atrybut attribute set<odcinek> kraw dzie;}; Punkt +X : Float +Y : Float Odcinek #Wierzcho ki[2] : Punkt Wielok t {persistence} #Kraw dzie[3..*] : Odcinek Zwi zki miedzy danymi Mo liwo definiowania i sk adowania w bazie danych zwi zków mi dzy danymi. Osoba {persistence} +imi : String +nazwisko : String +adres : Adres jest_autorem [1..*] [1..*] Obraz {persistence} #utworzony : Date #elementy[1..*] : Figura +dodaj(figura) +utwórzkopi () class Osoba { relationship set<obraz> jest_autorem inverse Obraz::jest_utworzony_przez;...} typ zwi zku nazwa zwi zku zwi zek odwrotny

Hierarchia kolekcji obiektów Zwi zek dziedziczenia mi dzy klasami, których rozszerzenia s sk adowane w bazie danych implementuje zwi zek zawierania si podzbiorów obiektów. Rozszerzenie klasy pochodnej jest podzbiorem rozszerzenia klasy bazowej. class Figura { (extent Figury)...}; class Wielok t extends Figura{ (extent Wielok ty)...}; Wielok ty Figury Figura {persistence} #typ : String +Powierzchnia() : Float +Przesu (Float, Float) Wielok t {persistence} #Kraw dzie[3..*] : Odcinek +Powierzchnia() : Float +Przesu (Float, Float) Polimorfizm i pó ne wi zanie Relacja podtypu cz ca klasy i interfejsy umo liwia podstawienia polimorficzne polegaj ce na podstawieniu pod zmienn typu klasy bazowej obiektu, który jest wyst pieniem klasy pochodnej. Podstawienia polimorficzne umo liwiaj dynamiczne wi zanie nazw metod. zmienna polimorficzna podstawienie polimorficzne Figura f = new Ko o(10,6,5); Float p = f.powierzchnia(); Ko o::powierzchnia( ) f = new Wielok t(p1,p2,p3); wi zanie dynamiczne p = f.powierzchnia(); Wielok t::powierzchnia( )

To samo danych Obiektowe j zyki programowania: identyfikacja danych przez symboliczn nazw i fizyczny adres w pami ci operacyjnej. class Pracownik {...}; PAO Pracownik Nowak("Jan","Nowak"); 0c78:89ad Nowak.nazwisko = "Kowalski"; To samo danych Model relacyjny: identyfikacja danych przez ich warto ci SELECT * FROM p atnicy WHERE Nazwisko = 'NOWAK'; JAN TADEUSZ MACIEJ JAN KUBA JÓZEF JAN NOWAK KOWALSKI NOWAK RZEPA TARZAN MALINIAK NOWAK Jednoznaczna identyfikacja danych wymaga zdefiniowania dla ka dej relacji klucza podstawowego

To samo danych w obiektowej bazie danych Identyfikacja na podstawie warto ci identyfikatora obiektu nazywanego OID Identyfikacja przez OID jest niezale na od warto ci atrybutów obiektu Osoba *kowalski, *kowalska; kowalski = new Osoba("Jan","Kowalski"); kowalska = new Osoba("Janina","Kowalska"); Kowalska->ma onek = kowalski; //podstawienie oid Kowalski->nazwisko = "Nowak"; Kowalski->pesel = 68040102766; Kowalski->p e = "K"; Kowalska->ma onek->dochody->poka (); Trwa o danych Obiekty mog by tworzone w trwa ym lub ulotnym obszarze sk adowania Trwa o powinna by w asno ci poszczególnych obiektów, a nie klas obiektów Trwa o powinna by w asno ci obiektów dowolnej klasy Sposób operowania na obiektach trwa ych i ulotnych powinien by taki sam Obiekty w ci gu cyklu ycia mog by przenoszone mi dzy trwa ym i nietrwa ym obszarem sk adowania

Trwa o danych Obiekty staj si trwa e przez jawne utrwalenie lub przez bycie osi galnymi przez inne obiekty trwa e. Obiekty trwa e Wszystkie wyst pienia klasy o3 Baza danych o1 o2 o4 Obiekty nietrwa e pm = pmf.getpersistencemanager(); Punkt p = new Punkt(10.5, 7.1); // obiekt nietrwa y Ko o k = new Ko o(p, 4); // obiekt nietrwa y transaction = pm.currenttransaction(); pm.makepersistent(k); // utrwalenie obiektów p i k w bazie danych transaction.commit(); Odwzorowanie obiektowo-relacyjne Wyk ad opracowa : Tomasz Koszlajda

Odwzorowanie obiektowo-relacyjne Odwzorowanie obiektowej architektury systemu informatycznego w relacyjne struktury danych bazy danych Aplikacja obiektowa OQL (HSQL, Linq) NativeQuery Wielok t #typfigury string #liczbawierzch integer +Powierzchnia() : Float +Przesu (Float, Float) +DodajWierzch(Punkt) O/RM Middleware select * from Wielok ty insert into wielok ty values (w.typfigury, ) Relacyjna baza danych Wielok ty idwielok ta number(9) PK typfigury varchar(15) LiczbaWierzch number(3) wbaziedanych boolean Logiczny model danych logika biznesowa Odwzorowanie O/R Fizyczny model danych Architektura przetwarzania O/RM O-R DB OO DB O/RM Aplikacja OQL DBMS dane Przetwarzanie obiektów Aplikacja Przetwarzanie obiektów QBE SODA NQuery DBMS obiekty Aplikacja Przetwarzanie obiektów OQL DBMS Przetwarzanie danych dane obiekty

Rozwi zania O/RM Odwzorowanie modelu obiektowego w relacyjny Odwzorowanie prostych atrybutów Odwzorowanie OID Odwzorowanie sieci dziedziczenia klas Odwzorowanie zwi zków mi dzy klasami Odwzorowanie atrybutów klas Zarz dzanie transakcjami Zarz dzanie obiektami Dodatkowe atrybuty implementacyjne Oprócz odwzorowania atrybutów informacyjnych w O/RM niezb dne jest utrzymywanie dodatkowych atrybutów implementacyjnych Wielok t #typfigury string #liczbawierzcho ków integer +Powierzchnia() : Float +Przesu (Float, Float) +DodajWierzcho ek(punkt) jestwierzcho kiem [1] [3..*] Punkt #X : Float #Y : Float +K t() : Float +Odleg o () : Float +Przesu (Float, Float) tworzkraw d Z [2] [2] Wielok ty idwielok ta number(9) PK typfigury varchar(15) LiczbaWierzcho ków number(3) wbaziedanych boolean Klucze podstawowe i obce Zapewnienie trwa o ci danych Znaczniki czasowe Punkty idpunktu number(10) PK idwielok ta number(9) FK X number(5,2) Y number(5,2) wbaziedanych boolean Fizyczny model danych

Dodatkowe atrybuty implementacyjne Narz dzia O/RM wspieraj korzystanie z atrybutów implementacyjnych. Na przyk ad w JPA przewidziano np. definiowane identyfikatorów obiektów, wersji obiektów lub atrybutów informuj cych o klasie obiektu: @Entity public class Osoba implements Serializable {... @Version @Column(name="OPTIMISTIC_LOCK") public Integer getversion() {... } @Id @Column(name="id_osoby") @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq_store") } Przyk adowa definicja klas Dany model klas przetwarzanych przez aplikacje bazy danych Osoba Samochód +imi : String +nr_rejestracyjny : String +nazwisko : String [1] [0..*] +producent : String +wiek : integer posiada +model : String +p e : P e +moc : Integer {non complete, overlapping} Pracownik +etat: String +p aca: float +firma: Sring Student +Uczelnia: String +Kierunek: String +rokstudiów: integer

Odwzorowanie prostych atrybutów Przyk ad odwzorowania klas w schemat relacyjnej bazy danych za pomoc adnotacji j zyka Java w O/RM EJB3/JPA. @Entity @Table(name="t_Osoby") public class Osoba implements Serializable { public String imi ; @Column(name="t_imi ", nullable = false, length = 25); public String nazwisko; @Column(name="t_nazwisko");... } Odwzorowanie OID W JPA mo liwe okre lanie OID obiektów (@id) oraz sposobu generowania jego warto ci @GeneratedValue. Dost pne s nast puj ce sposoby generowania warto ci OID: TABLE - relacja dedykowana do generowania OID IDENTITY atrybut relacji przechowuj cej obiekty SEQUENCE systemowy sekwenser AUTO automatycznie jedno z powy szych @Entity @Table(name="t_Osoby") public class Osoba implements Serializable { private Long id; @Id @Column(name="id_osoby") @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq_store") public Integer getid() {... } Cecha Id nie posiada wszystkich cech OID.

Odwzorowanie zwi zków W JAP mo liwe jest odwzorowanie zwi zków typu: 1:1 - @OneToOne, 1:N - @ManyToOne, @OneToMany, M:N - @ManyToMany, Jako zwi zków jedno lub dwukierunkowych. Do okre lenia si y powi zania s u y opcja Cascade: CascadeType.PERSIST oznacza, e utrwalenie danego obiektu poci ga za sob automatyczne utrwalenie obiektu powi zanego. CascadeType.MERGE oznacza, e dla od czonego od bazy danych obiektu, modyfikacje obiektu powi zanego b d synchronizowane metod MERGE razem z obiektem g ównym. CascadeType.REMOVE oznacza, e usuni cie danego obiektu poci gnie za sob usuni cie obiektu powi zanego. CascadeType.ALL wszystkie powy sze. Trwa e zwi zki s implementowane za pomoc wspó dzielonych kluczy podstawowych (1:1), pary klucz podstawowy, klucz obcy lub za pomoc relacji po czeniowych. Odwzorowanie zwi zków Przyk ad implementacji zwi zku 1:N w JPA @Entity public class Samochód implements Serializable { @ManyToOne(cascade = {CascadeType.REMOVE} ) @JoinColumn(name="id_w a ciciela") public W a ciciel GetW a ciciel() { return w a ciciel; }... }

Atrybuty wielowarto ciowe Adnotacja @OneToMany s u y do implementacji atrybutów wielowarto ciowych modelowanych w aplikacji jako: Collection, List, Set. @Entity public class Miasto {... @OneToMany(mappedBy="miasto") @OrderBy("Ulica") public List<Ulica> getulice() {... @Entity public class Ulica { @ManyToOne @JoinColumn(name="Id_miasta",nullable=false) public Miasto getmiasto() {... Odwzorowanie sieci dziedziczenia Znane s nast puj ce metody odwzorowania: Pracownik +etat: String +p aca: float +firma: Sring Osoba +imi : String +nazwisko : String +wiek : integer +p e : P e {non complete, overlapping} Student +Uczelnia: String +Kierunek: String +rokstudiów: integer Odwzorowanie hierarchii klas w pojedyncz tablic Odwzorowanie konkretnych klas w osobne tabele Odwzorowanie ka dej klasy w osobn tabel Odwzorowanie klas w uniwersaln struktur tabel

Odwzorowanie hierarchii klas w pojedyncz tabel Osoby Imi Nazwisko P e Etat P aca Firma Uczelnia Kierunek RokStudiów jeststudentem jestpracownikiem W asno ci: Tabela b dzie przechowywa a du o warto ci pustych Tabela b dzie zajmowa wi ksz powierzchni na dysku atwo przetwarzania polimorficznego wszystkie dane w jednej tabeli Du a wydajno dla przetwarzania polimorficznego Ma a wydajno dla przetwarzania homogenicznego tabela zawiera niepotrzebne dane Ma a wydajno dla modyfikacji struktury pojedynczych klas Trudne utrzymywanie przynale no ci do typów Dobre dla prostych i p askich hierarchii klas Odwzorowanie hierarchii klas w pojedyncz tabel JPA wspiera odwzorowanie klas w jedn tabel. Dla roz cznych i kompletnych podzbiorów proste warunki weryfikacji klasy. @Entity @Table(name= t_osoby") @Inheritance(strategy=InheritanceType.SINGLE_TABLE) @DiscriminatorColumn( name="t_p e ") public class Osoby{... } @Entity @DiscriminatorValue("K") public class Kobieta extends Osoba {... } @DiscriminatorValue("M") public class M czyzna extends Osoba {... } // transformacja zapyta select k from Kobieta k -> select... from t_osoby where t_p e ='K' select o from Osoba o -> select... from t_osoby

Odwzorowanie hierarchii klas w pojedyncz tabel Dla nieroz cznych podzbiorów niezb dne jest stosowanie z o onych warunków weryfikacji klasy. @Entity @Table(name= t_osoby") @Inheritance(strategy=InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name="jestStudentem") @DiscriminatorColumn(name="jestPracownikiem") @DiscriminatorFormula( "case when jeststudentem=true then 0 when jestpracownikiem=true then 1 end") public class Osoby{... } @Entity @DiscriminatorValue(0) public class Student extends Osoba {... } @DiscriminatorValue(1) public class Pracownik extends Osoba {... } Odwzorowanie konkretnych klas w osobne tabele Je eli klasa Osoba jest klas abstrakcyjn Zale no mi dzy podzbiorami danych typu complete Pracownicy idpracownika Imi Nazwisko P e Etat P aca Firma Studenci idstudenta Imi Nazwisko P e Uczelnia Kierunek RokStudiów W asno ci: Trudna implementacja overlapping - konieczno implementacji wspólnej dziedziny dla kluczy relacji Ma a wydajno dla przetwarzania polimorficznego dane w ró nych tabelach Du a wydajno dla przetwarzania homogenicznego Modyfikacja klasy z podklasami wymaga modyfikacji schematów wielu tabel Dobre dla roz cznych podzbiorów rozszerze klas

Odwzorowanie konkretnych klas JPA wspiera odwzorowanie konkretnych klas w tabele za pomoc strategii Table per class (Hibernate Union class ). @Entity @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) public class Osoby{... } @Entity @Table(name="t_Kobiety") public class Kobieta extends Osoba {... } @Table(name="t_M czy ni") public class M czyzna extends Osoba {... } // transformacja zapyta select o from Kobieta k -> select * from t_kobiety select o from Osoba o -> select... from t_kobiety union select... from t_m czy ni Odwzorowanie ka dej klasy w osobn tabel W asno ci: Pracownicy idosoby FK Etat P aca Firma Osoby idosoby Imi Nazwisko P e Studenci idosoby FK Uczelnia Kierunek RokStudiów Proste odwzorowanie 1:1 atwo przetwarzania polimorficznego atwe utrzymywanie dla modyfikacji nadklas i dodawania podklas Rozmiar struktur proporcjonalny do liczby danych Du a liczba tablic Ma a wydajno przetwarzania homogenicznego konieczno czenia tabel Dobre dla pokrywaj cych si podzbiorów rozszerze klas i cz sto zmieniaj cych si definicji klas

Odwzorowanie ka dej klasy w osobn tabel JPA wspiera odwzorowanie klasy w osobn tabel za pomoc strategii Joined subclass. @Entity @Inheritance(strategy=InheritanceType.JOINED) @Table(name="t_Osoby") public class Osoby{... } @Entity @Table(name="t_Kobiety") @PrimaryKeyJoinColumn(name="id_osoby") public class Kobieta extends Osoba {... } // transformacja zapyta select o from Kobieta k -> select o.*, k.* from t_osoby o JOIN t_kobiety k ON o.id_osoby = k.id_osoby Odwzorowanie klas w uniwersaln struktur tabel W asno ci: atwo utrzymania dla zmian schematu Trudne i ma o wydajne przetwarzanie Dobre dla z o onych aplikacji przetwarzaj cych niezbyt du e zbiory danych

Odwzorowanie cech klas Osoby +imi : String +nazwisko : String +p e : P e +liczbaosób : Integer +procentkobiet: Integer Osoby_LiczbaOsób LiczbOs Osoby LiczbaOsób ProcentKobiet Mo liwe strategie: Jednokolumnowa i jednowierszowa tabela dla ka dej cechy Wielokolumnowe i jednowierszowe tabele dla ka dej z klas Wielokolumnowa i jednowierszowa tabela wspólna dla wszystkich klas Wielowierszowa tabela o generycznym schemacie wspólna dla wszystkich klas ZmienneKlasowe Os_LiczbaOsób Os_ProcentKobiet Optymistyczna synchronizacja transakcji W wi kszo ci protoko ów gwarantuj cych poprawno wspó bie nego przetwarzania transakcji implementowane jest pesymistyczne podej cie do synchronizacji, polegaj ce na modyfikacji historii konfliktowych transakcji przez czasowe zawieszenie dzia ania jednej z nich. Optymistyczne protoko y synchronizacji transakcji przesuwaj wykrywanie potencjalnych konfliktów do czasu akceptacji transakcji. Wykryte konflikty s obs ugiwane przez wycofanie jednej z konfliktowych transakcji. przepustowo transakcji protokó pesymistyczny protokó optymistyczny liczba konfliktów

Optymistyczna synchronizacja transakcji Schemat protoko u optymistycznej synchronizacji wspó bie no ci zak ada przeprowadzenie ka dej transakcji przez trzy kolejne fazy: Faza odczytów i lokalnych modyfikacji potencjalnie d uga i obejmuj ca interakcje z u ytkownikiem transakcji. Faza walidacji, która zaczyna si w punkcie akceptacji transakcji i s u y do weryfikacji mo liwo poprawnego zako czenia transakcji. Synchronizowana transakcyjnie faza zapisu danych buforowanych w PAO do bazy danych. Zaletami optymistycznej synchronizacji transakcji s : niewyst powanie w tym protokole zakleszcze transakcji oraz mniejsze obci enie zasobów DBMS (brak blokad). Optymistyczna synchronizacja transakcji nie gwarantuje pe nej uszeregowalno ci nie obs uguje anomalii fantomów. Optymistyczna synchronizacja transakcji Algorytm fazy walidacji jest nast puj cy [H.T.Kung, J.T.Robinson 1981]: Validation (T j ) <valid := true; // pocz tek sekcji krytycznej for TNR i from TNR start+1 to TNR finish do if RS j WS i then valid:=false; if valid then begin (write); TNR j := TNC; TNC := TNC+1 end> // koniec sekcji krytycznej if not valid then (rollback); gdzie: TNR start jest najwi kszym znacznikiem transakcji w momencie startu transakcji T j, TNR finish jest najwi kszym znacznikiem transakcji w momencie rozpocz cia fazy walidacji, a RS i WS s zbiorami czytanych i modyfikowanych danych.

Dzia anie algorytmu T 1 Przyk ad synchronizacji dwóch transakcji T 1 i T 2. zapis lokalny r 1 [x] lw 1 [x] r 1 [y] lw 1 [y] c' 1 val 1 w 1 [x] w 1 [y] c 1 zapis do bazy danych T 2 r 2 [x] lw 2 [x] c' 2 val 2 a 2 TNR(T 1 ) = 10 Walidacja transakcji T 2 : TNR start+1 = 10, TNR finish =10 RS(T 2 ) = {x}, WS(T 1 ) = {x, y}, sk d: RS(T 2 ) WS(T 1 ) = {x} Transakcja T 2 musi zosta wycofana. Ulepszona wersja algorytmu Pomijanie nieistotnych konfliktów T 1 r 1 [x] lw 1 [x] r 1 [y] lw 1 [y] c' 1 val 1 w 1 [x] w 1 [y] c 1 T 2 r 2 [x] lw 2 [x] c' 2 val 2 a 2 r 3 [x] lw 3 [x] T 3 c 3 val 3 a 3 Transakcja T 3 zostanie wycofana, mimo e dysponuje zatwierdzon warto ci danej x. Wykryty konflikt jest nieistotny dla poprawno ci przetwarzania, ale jest przyczyn wycofania transakcji. Modyfikacja protoko u OC o rozszerzenie zbioru danych czytanych przez transakcj o znaczniki ko ców wspó bie nych transakcji. Dla transakcji T 3, zbiór czytanych danych RS 3 ={EOT 1, x}. Weryfikowany w fazie walidacji warunek zostanie zmodyfikowany do postaci: RS ij W i, gdzie RS ij jest podzbiorem tylko tych danych, które zosta y odczytane po zako czeniu transakcji T i. RS 13 =, co znaczy, e w zmodyfikowanym protokole transakcja T 3 nie zostanie wycofana.

Zarz dzanie wspó bie no ci transakcji W rodowiskach O/RM zalecanym sposobem synchronizacji transakcji s protoko y zarz dzania wspó bie nymi transakcjami wzorowane na podej ciu optymistycznym. Modyfikacje obiektów s wykonywane lokalnie. Ich zapis do bazy danych, realizowany przez systemow operacj flush, jest przesuwany na koniec transakcji. W zwi zku z tym blokady do zapisu s utrzymywane krótkoterminowo, tylko na czas walidacji transakcji. Dodatkowe rozwi zania maj ce na celu zwi kszenie skalowalno ci wspó bie nego dost pu zak adaj, e transakcje systemu bazy danych nie obejmuj czasu interakcji z u ytkownikiem aplikacji bazy danych. W efekcie równie blokady do odczytu zak adane przez system bazy danych s krótkoterminowe. Logiczna transakcja (biznesowa) sk ada si z kilku transakcji systemu bazy danych. Transakcja biznesowa ACID Transakcja bazy danych interakcja Transakcja bazy danych interakcja Transakcja bazy danych Blokada do odczytu Blokada do zapisu Zarz dzanie wersjami obiektów W rodowiskach O/RM do implementacji protoko ów optymistycznej synchronizacji transakcji stosuje si rozproszony algorytm zarz dzania. Transakcje biznesowe synchronizuj si ze sob poprzez weryfikacj w fazie walidacji stanu bazy danych. Walidacja transakcji odbywa si poprzez kontrol wersji modyfikowanych danych. Kontrola wersji mo e by realizowana r cznie przez aplikacj lub wspierana systemowo. Weryfikacja wersji obiektów odbywa si przez kontrol : znaczników czasowych, identyfikatora wersji obiektu lub przez porównanie warto ci obiektu zapami tanych z fazy odczytu z warto ci odczytan w fazie walidacji.

Synchronizacja transakcji przez aplikacj Ka da interakcja z baz danych jest osobn sesj. Aplikacj musi za adowa /prze adowa z bazy danych wszystkie obiekty przetwarzane w ramach danej interakcji oraz kontrolowa wersje modyfikowanych danych dla unikni cia anomalii lost update. // o1 jest wersj obiektu za adowanego przez poprzedni sesj session = factory.opensession(); // po czenie z baz danych Transaction t = session.begintransaction(); int oldversion = o1.getversion(); // zapami taj numer wersji session.load(o1, o1.getkey() ); // aduj aktualn wersj if ( oldversion!= o1.getversion() ) // sprawd zgodno throw new StaleObjectStateException(); o1.setproperty("j23"); t.commit(); // wykonanie metody flush zapis o1 do bazy danych session.close(); //zamkni cie po czenia z baz danych // ci g dalszy transakcji biznesowej Synchronizacja transakcji przez aplikacj Rozwi zanie charakteryzuje si w ogólno ci niskim poziomem izolacji. Transakcje biznesowe uzewn trzniaj przed zako czeniem wprowadzone modyfikacje danych. Nie wyklucza anomalii: brudny odczyt, brudny zapis, rozmyty odczyt, skro ny zapis i fantomów. Ponadto transakcji biznesowa zarz dzana przez logik aplikacji nie jest jednostk odtwarzania nie jest atomowa. Dodatkowo rozwi zanie to charakteryzuje si du ym obci eniem systemu bazy danych operacjami otwierania i zamykania sesji. W praktyce powinno by stosowane jedynie dla pojedynczej interakcji z u ytkownikiem - jednej transakcji odczytuj cej i jednej modyfikuj cej stan bazy danych. Transakcja biznesowa zapis do bazy danych r[x] r[y] f c lw[y] r[z] f c lw[z] f c Sesja interakcja Sesja interakcja Sesja Transakcja bazy danych R/W Transakcja bazy danych R/W f flush c - commit Transakcja bazy danych R/W

Systemowa synchronizacja z kontrol wersji Aplikacja biznesowa jest implementowana przez pojedyncz tzw. rozszerzon sesj (extended session). Ka da interakcja z baz danych jest osobn transakcj. Ostatnia transakcja sesji jest odpowiedzialna za zapisanie wszystkich modyfikacji sesji. Kontrola poprawno ci wersji obiektów jest realizowana automatycznie. // o1 jest wersj obiektu za adowanego przez poprzedni transakcj // w tej samej sesji, w ramach innego po czenia z baz danych Transaction t = session.begintransaction(); // uzyskaj nowe po czenie z baz danych z puli aktywnych po cze o1.setproperty("j23"); t.commit(); // oddanie po czenia z baz danych // interakcja z u ytkownikiem t = session.begintransaction(); // ostatnia transakcja w sesji o2.setproperty("007"); session.flush(); // zrzucenie do bazy danych zapisów z ca ej sesji t.commit(); session.close(); Systemowa synchronizacja z kontrol wersji Rozwi zanie charakteryzuje si niekompletnym poziomem izolacji. Nie wyklucza anomalii: rozmyty odczyt, skro ny zapis i fantomów. Jednak transakcja biznesowa jest atomowa. Rozwi zanie to charakteryzuje si du skalowalno ci w dost pie do systemu bazy danych. W danym momencie aktywna jest sta a i znacznie mniejsza od liczby wspó bie nych u ytkowników aplikacji liczba po cze z baz danych *. Transakcja biznesowa zapis do bazy danych r[x] r[y] c lw[y] r[z] c lw[z] f c interakcja Sesja interakcja Transakcja bazy danych RO Transakcja bazy danych RO f flush c - commit Transakcja bazy danych R/W *) W DBMS Oracle maksymalnie 4*10 9 wspó bie nych transakcji RO read only RW read/write

W asno ci optymistycznej synchronizacji Adaptacja optymistycznego protoko u zarz dzania wspó bie no ci transakcji w platformach O/RM zawiera pewne uproszczenia: Zaimplementowany mechanizm synchronizacji zbudowany jest w oparciu o pesymistyczne mechanizmy systemów baz danych. St d przebieg transakcji biznesowych wi e si z zak adaniem blokad do odczytu i zapisu. Blokady do zapisu s u do zapewnienia poprawnej realizacji faz walidacji (dzia ania operacji flush) wspó bie nych transakcji. Czas utrzymywania blokad jest znacznie krótszy ni w pesymistycznych protoko ach synchronizacji. Dzi ki temu, ewentualne zawieszenia przetwarzania trwa krócej, a prawdopodobie stwo zakleszczenia jest mniejsze. Kontrola modyfikowanych wersji obiektów ma bardziej ograniczony zasi g ni w protokole Kunga i Robinsona. Warunek weryfikuj cy mo no zatwierdzenia transakcji jest zredukowany do sprawdzenia zbioru modyfikowanych, a nie do wszystkich odczytywanych danych: zamiast RS j WS i, weryfikowany jest warunek WS j WS i. Mo liwa jest r czna weryfikacja niemodyfikowanych danych: Session.lock() Anomalie wspó bie nego wykonania B dne wyniki przetwarzania warto ci odczytanych z bazy danych w dwóch ró nych transakcjach. r[x] c r[y] c wy wietl: x + y c Transakcja bazy danych RO interakcja Transakcja bazy danych RO interakcja B dny stan bazy danych b d cy konsekwencj braku atomowo ci pary operacji odczytu i zapisu. r[x] c if(x>0) then w[y] else w[z] lw[y] f c Transakcja bazy danych RO interakcja x=10 x=0 Transakcja bazy danych R/W Skro ny zapis, fantomy

Wycofanie transakcji W wypadku konfliktów wykrytych w fazie walidacji dla unikni cia anomalii lost update transakcja biznesowa musi zosta wycofana. try { Transaction t = session.begintransaction(); // przetwarzanie danych... session.flush(); t.commit(); session.close(); } catch (RuntimeException e) { t.rollback(); throw e; } finally { session.close(); } Implementacja walidacji transakcji Do walidacji poprawno ci wykonania wspó bie nych transakcji mog by u ywane ró ne mechanizmy : Znaczniki czasowe/numery wersji struktura wszystkich danych jest rozszerzona o dodatkowy atrybut systemowy do sk adowania czasu modyfikacji lub numeru wersji danej zmienianego przez ka d modyfikacj. Wad jest konieczno stosowania tego rozwi zania przez wszystkie transakcje. Weryfikacja warto ci danych polegaj ca na porównaniu warto ci danych z fazy odczytu z warto ciami danych w fazie zapisu. Mo e dotyczy wszystkich pól obiektu, lub tylko tych które zosta y zmienione przez dan transakcj.

Obiektowe j zyki zapyta W platformach O/RM stosuje si j zyki zapyta wzorowane na j zyku SQL. S one ubo sze od obiektowo relacyjnego j zyka SQL, np. o polecenia modyfikacji danych lub niemo no wywo ywania metod. Przyk adowe j zyki wzorowane na SQL: H SQL, EJB SQL, Linq EJB SQL selekcja obiektów EJB SQL pozwala na selekcj obiektów w bazie danych: select osoba from Osoba as osoba where osoba.nazwisko = 'Tarzan' Warunki selekcji mog si odwo ywa jedynie do cech strukturalnych, a nie do metod, ze wzgl du na to, e zapytania s w EJB SQL s zamieniane na zapytania SQL w relacyjnej bazie danych, a te nie maj dost pu do metod sk adowanych po stronie aplikacji.

EJB SQL wyra enia cie kowe W klauzuli WHERE mo liwe jest stosowanie wyra e cie kowych nawiguj cych wzd u powi za mi dzy obiektami i w g b atrybutów z o onych. select o from Osoba as o where o.szef.adres.miasto.nazwa = 'Pozna ' Powy sze zapytanie zostanie zmienione na zbiór zapyta SQL na relacyjnej bazie danych EJB SQL po czenia strukturalne Dost pne s po czenia strukturalne, wewn trzne i zewn trzne (jedynie lewostronne), które zwracaj kolekcj tablic obiektów. select zespó, pracownik, dzieci from Zespó as zespó inner join Pracownik as pracownik left join fetch Dzieci as dzieci Opcja po czenia fetch powoduj, e dost p do obiektów po czonych zwi zkiem typu 1:N albo dost p do obiektów lub warto ci sk adowanych w atrybucie wielowarto ciowym jest realizowane za pomoc pojedynczego zapytania w bazie danych.

EJB SQL po czenia dynamiczne Dost pne s równie po czenia dynamiczne konstruowane na podstawie wyra e logicznych odwo uj cych si do prostych warto ci obiektów lub do ich to samo ci. select pracownik, szef from Pracownik as pracownik inner join Pracownik as szef where pracownik.etat = 'Referent' // równo warto ci and pracownik.szef = szef // to samo obiektów EJB SQL odwo anie do OID W warunkach selekcji mo liwe jest odwo ywanie si do identyfikatora obiektów: select pracownik from Pracownik as pracownik where pracownik.etat = 'Referent' and pracownik.szef = 11432

EJB SQL zapytania polimorficzne W EJB SQL umo liwia wykonywanie zapyta polimorficznych na wyst pieniach klas tworz cych hierarchi dziedziczenia. Nie ma mo liwo ci korzystania z dynamicznego wi zania. select osoba from Osoba as osoba // wynik zapytania obejmuje wyst pienia wszystkich // specjalizacji klasy Osoba select osoba from Osoba as osoba.class = Student // wynik zapytania obejmuje wyst pienia jedynie // tych osób, które s studentami Podzapytania, sortowanie, grupowanie Grupowanie wynikiem zapyta zawieraj cych operacje projekcji lub grupowania dla wyznaczania danych statystycznych s warto ci lub obiekty nie tworz ce logicznego modelu danych. Jednak mo liwo przetwarzania du ych zbiorów danych po stronie systemu bazy danych zwi ksza radykalnie wydajno przetwarzania. select avg(s. rednia), max(s. rednia), count(s) from Student s group by s.rok_studiów

Strojenie wydajno ci Strojenie przez wybór wydajnego mapowanie struktur obiektowych na relacyjne: wybór strategii odwzorowania hierarchii dziedziczenia, zwi zków i cech klas Opó nione/natychmiastowe czytanie: dla du ych obiektów danie dost pu do obiektu mo e by realizowane jako odczyt jedynie podzbioru danych sk adaj cych si na obiekt. Pozosta e cz ci obiektu b d doczytane w momencie wyst pienia dania dost pu do nich Autofetch inteligentny wybór momentu odczytu powi zanych danych Oferta platform OR/M O/RM dla j zyka Java JDO Java Data Object Enterprise Java Bean Java Persistance API JPA Hibernate Top Link Oracle O/RM dla platformy.net ADO.NET Entity Framework Linq Nhibernate SODA

Obiektowe bazy danych Wyk ad prowadzi: Tomasz Koszlajda Przyk ad systemu obiektowej bazy danych db4o Projekt Open Source Uproszczenie architektury systemu bazy danych Dost pne ró ne architektury aplikacji Ró ne j zyki dost pu: QBE, SODA, Native Query Language Skalowalno Wielo platformowo Java,.Net, VBA Wydajno dla zapyta specyficznych dla obiektowych baz danych

Nowa architektura przetwarzania Przetworzone dane O R DB Aplikacja DBMS Przetwarzanie obiektów OO DB, O/RM Aplikacja DBMS Wybrane obiekty Prostota budowy aplikacji // zdefiniowanie klasy public class Pracownik { public Pracownik(String nazwisko, String etat, float placa)...} // otworzenie prywatnej bazy danych ObjectContainer db = Db4o.openFile("BazaDanych"); Pracownik p=new Pracownik("Tarzan","Prezes",25000); // sk adowanie obiektu w bazie danych db.store(p); // zamkni cie bazy danych db.close();

Klasa: Object Container Klasa object Container reprezentuje system bazy danych Obs uguje ona dost p do lokalnego, prywatnego pliku danych Wspiera transakcyjne przetwarzanie danych Zarz dza referencjami do obiektów przechowywanych w bazie danych Zapewnia wydajne przetwarzanie danych w bazie danych, przez u ywanie indeksów Schemat bazy danych Definicje klas w aplikacji = schemat bazy danych // zdefiniowanie klasy public class Pracownik { public Pracownik(String nazwisko, String etat, float placa)}... Pracownik p=new Pracownik("Tarzan","Prezes",25000); // Je eli jest to pierwszy obiekt klasy Pracownik // sk adowany w bazie danych, do schematu bazy danych // dodawana jest definicja klasy Pracownik db.store(p);

Hierarchia rozszerze klas Wyst pienia podklas tworz podzbiór wyst pienia nadklas class Kierownik extends Pracownik {...} Kierownik k = new Kierownik("Kowalski",4500.00); db.store(k);... /* Obiekt k b dzie osi galny zarówno jako element zbioru Kierowników i jaki Pracowników */ // Kowalski znajdzie si w wyniku zapytania ObjectSet wynik = db.get(pracownik.class); J zyki zapyta w db4o System bazy danych db4o oferuje trzy ró ne j zyki zapyta : QBE Query By Example SODA Simple Object Database Access NativeQuery Preferowane w asno ci j zyków zapyta : 1. J zyki do masowego przetwarzania danych 2. Czyste j zyki obiektowe 3. Statyczna weryfikacja typów danych 4. Jednorodno z j zykiem aplikacji 5. Systemowa optymalizacja zapyta

J zyk zapyta QBE Prosty j zyk zapyta QBE Query by Example Wymaga utworzenia obiektu, który b dzie wzorcem dla zapytania // wyszukiwanie obiektów - QBE Pracownik p=new Pracownik(null,"Prezes",0.0f); // nie mo na pyta o warto ci: null, 0, ObjectSet wynik = db.get(p); // obiektem wzorcowym mo e by klasa wynik = db.get(pracownik.class); Nie umo liwia definiowania z o onych warunków zapyta : AND, OR, NOT. Konstruktor obiektu musi umo liwi tworzenie obiektu bez zainicjowanych atrybutów : null, "". J zyk zapyta SODA Simple Object Database Access J zyk SODA umo liwia definiowanie z o onych zapyta w postaci drzew, których w z ami s warunki selekcji. Funkcjonalno j zyka zapyta jest zaimplementowana w dwóch podstawowych klasach: Constraint i Query Ich funkcjonalno obejmuje nast puj ce operacje: Query: descend constrain sortby Execute orderascending Constraint: and (Constraint) contains equal greater identity like not or (Constraint) smaller

J zyk zapyta SODA Simple Object Database Access Query query=db.query(); // okre lenie klasy zapytania query.constrain(pracownik.class); // okre lenie warunku prostego Constraint warunek = query.descend("placa").constrain(5000).greater(); // okre lenie drugiego warunku prostego // i z o enie warunków query.descend("etat").constrain("prezes").or(warunek); // wykonanie zapytania ObjectSet wynik=query.execute(); System.out.println(wynik.size()); while(wynik.hasnext()) { Pracownik znaleziony = (Pracownik) wynik.next(); System.out.println(znaleziony); } J zyk zapyta SODA drzewo zapytania Query query=db.query(); query.constrain(pracownik.class); query.descend ("placa").constrain(5000).greater().or (descend("etat").constrain("prezes")) "p aca" OR Klasa: Pracownik.class "etat" greater: 5000 "Prezes"

J zyki zapyta w obiektowych bazach danych OQL String oql = "select * from o in Osoby where p.wiek < 20"; OQLQuery query = new OQLQuery(oql); Object osoba = query.execute(); Zapytania jako tekst JDOQL Query query = persistencemanager.newquery(osoba.class, "wiek < 20"); Collection osoby = (Collection)query.execute(); db4o SODA C# Query query = database.query(); query.constrain(typeof(osoba)); query.descend("wiek").constrain(20).smaller(); IList osoby = query.execute(); S abo ci j zyków zapyta w bazach danych Brak syntaktycznej i semantycznej weryfikacji zapyta w trakcie kompilacji aplikacji Brak wsparcia dla refaktoryzacji Brak wsparcia dla wielokrotnego u ytku: wywo ywania metod, polimorfizmu, redefinicji Nieodporno na ataki typu wstrzykiwanie kodu Wymagany dost p do prywatnych atrybutów klas Brak systemowej optymalizacji zapyta dla du ych zbiorów danych Brak skalowalno ci

Konstrukcja j zyka zapyta NativeQuery Warunki logiczne s u ce do selekcji obiektów s wyra ane w obiektowym j zyku programowania: prac.placa() > min Z o one wyra enia logiczne zapytania s tworzone w ca o ci w obiektowym j zyku programowania: prac.etat().equals("prezes") (prac.placa() > min && prac.placa() < max) Mechanizm przesy ania obiektów do zapyta : // pseudo kod (Pracownik prac){ return prac.etat().equals("prezes") (prac.placa() > min && prac.placa() < max)} J zyk zapyta NativeQuery Generyczna klasa systemowa Predicate z abstrakcyjn metod match zwracaj c warto ci logiczne. ObjectSet sp=db.query(new Predicate<Pracownik>() // redefinicja metody match { public boolean match(pracownik prac) { return prac.weznazwisko().equals("tarzan") (prac.placa() > 4500 && prac.placa() < 10000);}; } ); public abstract class Predicate <ExtentType> { public <ExtentType> Predicate (){} public abstract boolean match(extenttype candidate);} Definicja anonimowej klasy dziedzicz cej po klasie Predicate

J zyk zapyta NativeQuery Wyra enia cie kowe w NativeQuery ObjectSet sp=db.query(new Predicate<Pracownik>() // dziedziczenie i redefinicja metody match { public boolean match(pracownik prac) { return prac.zespol().nazwa().equals( Zarz d"); } ); J zyk zapyta NativeQuery C# Zastosowanie typu danych delegate ObjectSet sp=db.query<pracownik> ( delegate Pracownik p) // definicja operacji uruchamianej jako delegate p { return prac.weznazwisko().equals("tarzan") (prac.placa() > 4500 && prac.placa() < 10000); } );

Usuwanie i modyfikacja obiektów Pracownik p=new Pracownik(null,null,10000.00); ObjectSet wynik = db.get(p); while(wynik.hasnext()) { Pracownik prac=(pracownik)wynik.next(); // usuni cie db.delete(prac); }... while(wynik.hasnext()) { kopia obiektu Pracownik prac=(pracownik)wynik.next(); // modyfikacja obiektu na podstawie jego OID prac.podniesplace(1500); db.store(prac); // uspójnienie kopii z orygina em } Powi zania mi dzy danymi System db4o respektuje zwi zki mi dzy obiektami zdefiniowanymi w aplikacji public class Pracownik {... private Pracownik szef; private Set<Pracownik> podwladni; public Pracownik(String nazwisko,string etat){ this.podwladni= new HashSet<Pracownik>(); } public void dodajpodwladnego(pracownik pod) { this.podwladni.add(pod); } }

Sk adowanie z o onych obiektów Metoda set gwarantuje niejawne zapisanie do bazy danych wszystkich powi zanych obiektów Pracownik p = new Pracownik( "Tarzan","Prezes",25000); Pracownik pp1 = new Pracownik( "Nowak","Sekretarka",2500); Pracownik pp2 = new Pracownik( "Kula","Kierwoca",3000); // Przypisanie szefowi podw adnych p.dodajpodwladnego(pp1); p.dodajpodwladnego(pp2); // Sk adowanie obiektów w bazie danych db.store(p); // W bazie danych znajd si wszystkie powi zane obiekty Odczyt powi zanych obiektów Za adowanie do pami ci operacyjnej obiektu jako wyniku zapytania mo e wymaga dost pu do kolejnych powi zanych obiektów. Stosowane s dwie strategie: 1. Natychmiastowe za adowanie wszystkich powi zanych obiektów (ca a baza danych). 2. Leniwe adowanie obiektów na danie. W db4o mo liwe jest elastyczne dopasowanie zbioru adowanych obiektów za pomoc parametru Activation Depth (domy lna warto = 5).

Kaskadowe usuwanie obiektów z o onych Usuni cie z bazy danych obiektu, który ma powi zania z innymi obiektami mo e wymaga usuni cia tych obiektów semantyka zwi zku kompozycji W tym celu, nale y wykona na klasie obiektu z o onego metod cascadeondelete( ) G boko kaskadowego usuwania mo e by konfigurowana za pomoc metody: set(object, depth) Indeksy w db4o System db4o umo liwia zak adanie indeksów na wybranych atrybutach obiektów sk adowanych w bazie danych. Indeks musi by utworzony przed otwarciem obiektu ObjectContainer/ObjectServer: // w bazie danych sk adowane s obiekty klasy Pracownik class Pracownik { String nazwisko; } Db4o.configure().objectClass(Pracownik.class). objectfield("nazwisko").indexed(true);

Ewolucja schematu bazy danych W db4o schemat tworz definicje klas i ich wzajemne zale no ci: referencje i dziedziczenie. Schemat bazy danych musi nad a za zmianami w klasach definiowanych w aplikacjach: dodawanie i usuwanie klas, zmiana w asno ci klas, zmiana sieci powi za mi dzy klasami. Zmiany w schemacie wi si równie z refaktoryzacj kodu programów. W czysto obiektowych bazach danych refaktoryzacja jest prostsza ni w bazach O R i O/RM ze wzgl du na jeden spójny schemat bazy danych i definicje klas w aplikacjach. Transakcyjno db4o Przetwarzanie danych w db4o ma charakter transakcyjny. Niejawnym rozpocz ciem transakcji jest otwarcie bazy danych. Niejawnym zako czeniem jest zamkni cia bazy danych. Funkcjonalno bazy danych obejmuje jawne zatwierdzanie i wycofywanie transakcji. Synchronizacja transakcji nie jest transparentna dla programisty. Aby j zapewni nale y jawnie wywo ywa dodatkowe funkcje systemowe. Systemowo zapewniona jest w asno read committed. String bd = "BazaDanych"; ObjectContainer db = Db4o.openFile(bd); Pracownik p=new Pracownik("Tarzan","Prezes",25000); // sk adowanie obiektu w bazie danych db.store(p); // zatwierdzenie transakcji db.commit();

Synchronizacja wspó bie nych transakcji Unikanie anomalii lost update, b d cej konsekwencj optymistycznego zarz dzania wspó bie no ci, mo e by realizowane z zastosowaniem metody systemowej peekpersisted klasy ExtObjectContainer. Metoda tworzy kopi warto ci wskazanego obiektu, do okre lonego poziomu zagnie d enia, nie powi zanej z obiektem w bazie danych. Kopia ta mo e zosta wykorzystana do weryfikacji aktualnego stanu obiektu przed jego modyfikacj w bazie danych. Nowak = (Pracownik)result[0]; // odczyt obiektu z bazy danych Nowak_przed_modyf = Nowak.clone(); // kopia obiektu... // przetwarzanie obiektu Nowak Pracownik akt_kopia = oc.ext().peekpersisted(nowak, 7, true); // porównaj warto ci, w przypadku ró nicy wycofaj transakcj if (akt_kopia.p aca() == Nowak_przed_modyf.p aca()) { oc.commit(); } else { oc.rollback(); } musi by atomowe Synchronizacja wspó bie nych transakcji System db4o umo liwia synchronizacj wspó bie nych transakcji przez jawne zak adanie blokad na ca y system. Blokady s u do synchronizacji dost pu do sekcji krytycznych. Blokady s globalne, ale rozró nialne przez nazwy ObjectContainer oc = Db4o.openClient(...);... czas czekania na zwolnienie blokady [ms] if (oc.ext().setsemaphore("lock_"+oc.ext().getid(obj),1000)) { // wejd do sekcji krytycznej... blokada na obiekcie obj // zwolnij blokad (semafor) po zako czeniu sekcji krytycznej co.ext().releasesemaphore("lock_"+oc.ext().getid(obj)); }

Architektura systemu db4o Architektura aplikacji db4o Pojedyncza aplikacja zintegrowana z plikiem danych Aplikacja db4o Plik danych // otworzenie bazy danych String bd = "BazaDanych"; ObjectContainer db = Db4o.openFile(bd); Pracownik p=new Pracownik("Tarzan","Prezes"); // niejawne zdefiniowanie schematu i // sk adowanie obiektu w bazie danych db.store(p); // zamkni cie bazy danych db.close();

Architektura aplikacji db4o Lokalny serwer bazy danych Aplikacja db4o Serwer db4o Baza danych String bd = "BazaDanych"; ObjectServer server = Db4o.openServer(db,0); // port = 0, serwer lokalny try { // otwarcie klienta ObjectContainer client=server.openclient();... client.close(); } finally { server.close(); } Architektura aplikacji db4o Architektura klient - serwer Aplikacja db4o sie Serwer db4o Baza danych String bd = "BazaDanych"; // port <> 0, serwer zdalny ObjectServer server=db4o.openserver(db,1521); server.grantaccess("user","password"); // otwarcie klienta ObjectContainer client = server.openclient( "localhost",port,user,password );... client.close(); server.close();

Wydajno Benchmark OO7 Benchmark Pole Position Barcelona circuit 100 zapyta na 30 000 obiektów o 5 poziomach dziedziczenia Producenci OODBS db4objects Objectivity/DB Progress ObjectStore Enterprise Versant Object Database, FastObject.Net GemStone/S, Gemstone Facets EyeDB GNU Open Source

Odwzorowanie obiektowo-relacyjne Wyk ad opracowa : Tomasz Koszlajda Odwzorowanie obiektowo-relacyjne Odwzorowanie obiektowej architektury systemu informatycznego w relacyjne struktury danych bazy danych Aplikacja obiektowa OQL (HSQL, Linq) NativeQuery Wielok t #typfigury string #liczbawierzch integer +Powierzchnia() : Float +Przesu (Float, Float) +DodajWierzch(Punkt) O/RM Middleware select * from Wielok ty insert into wielok ty values (w.typfigury, ) Relacyjna baza danych Wielok ty idwielok ta number(9) PK typfigury varchar(15) LiczbaWierzch number(3) wbaziedanych boolean Logiczny model danych logika biznesowa Odwzorowanie O/R Fizyczny model danych

Architektura przetwarzania O/RM O-R DB OO DB O/RM Aplikacja OQL DBMS dane Przetwarzanie obiektów Aplikacja Przetwarzanie obiektów QBE SODA NQuery DBMS obiekty Aplikacja Przetwarzanie obiektów OQL DBMS Przetwarzanie danych dane obiekty Rozwi zania O/RM Odwzorowanie modelu obiektowego w relacyjny Odwzorowanie prostych atrybutów Odwzorowanie OID Odwzorowanie sieci dziedziczenia klas Odwzorowanie zwi zków mi dzy klasami Odwzorowanie atrybutów klas Zarz dzanie transakcjami Zarz dzanie obiektami

Dodatkowe atrybuty implementacyjne Oprócz odwzorowania atrybutów informacyjnych w O/RM niezb dne jest utrzymywanie dodatkowych atrybutów implementacyjnych Wielok t #typfigury string #liczbawierzcho ków integer +Powierzchnia() : Float +Przesu (Float, Float) +DodajWierzcho ek(punkt) jestwierzcho kiem [1] [3..*] Punkt #X : Float #Y : Float +K t() : Float +Odleg o () : Float +Przesu (Float, Float) tworzkraw d Z [2] [2] Wielok ty idwielok ta number(9) PK typfigury varchar(15) LiczbaWierzcho ków number(3) wbaziedanych boolean Klucze podstawowe i obce Zapewnienie trwa o ci danych Znaczniki czasowe Punkty idpunktu number(10) PK idwielok ta number(9) FK X number(5,2) Y number(5,2) wbaziedanych boolean Fizyczny model danych Dodatkowe atrybuty implementacyjne Narz dzia O/RM wspieraj korzystanie z atrybutów implementacyjnych. Na przyk ad w JPA przewidziano np. definiowane identyfikatorów obiektów, wersji obiektów lub atrybutów informuj cych o klasie obiektu: @Entity public class Osoba implements Serializable {... @Version @Column(name="OPTIMISTIC_LOCK") public Integer getversion() {... } @Id @Column(name="id_osoby") @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq_store") }

Przyk adowa definicja klas Dany model klas przetwarzanych przez aplikacje bazy danych Osoba Samochód +imi : String +nr_rejestracyjny : String +nazwisko : String [1] [0..*] +producent : String +wiek : integer posiada +model : String +p e : P e +moc : Integer {non complete, overlapping} Pracownik +etat: String +p aca: float +firma: Sring Student +Uczelnia: String +Kierunek: String +rokstudiów: integer Odwzorowanie prostych atrybutów Przyk ad odwzorowania klas w schemat relacyjnej bazy danych za pomoc adnotacji j zyka Java w O/RM EJB3/JPA. @Entity @Table(name="t_Osoby") public class Osoba implements Serializable { public String imi ; @Column(name="t_imi ", nullable = false, length = 25); public String nazwisko; @Column(name="t_nazwisko");... }

Odwzorowanie OID W JPA mo liwe okre lanie OID obiektów (@id) oraz sposobu generowania jego warto ci @GeneratedValue. Dost pne s nast puj ce sposoby generowania warto ci OID: TABLE - relacja dedykowana do generowania OID IDENTITY atrybut relacji przechowuj cej obiekty SEQUENCE systemowy sekwenser AUTO automatycznie jedno z powy szych @Entity @Table(name="t_Osoby") public class Osoba implements Serializable { private Long id; @Id @Column(name="id_osoby") @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq_store") public Integer getid() {... } Cecha Id nie posiada wszystkich cech OID. Odwzorowanie zwi zków W JAP mo liwe jest odwzorowanie zwi zków typu: 1:1 - @OneToOne, 1:N - @ManyToOne, @OneToMany, M:N - @ManyToMany, Jako zwi zków jedno lub dwukierunkowych. Do okre lenia si y powi zania s u y opcja Cascade: CascadeType.PERSIST oznacza, e utrwalenie danego obiektu poci ga za sob automatyczne utrwalenie obiektu powi zanego. CascadeType.MERGE oznacza, e dla od czonego od bazy danych obiektu, modyfikacje obiektu powi zanego b d synchronizowane metod MERGE razem z obiektem g ównym. CascadeType.REMOVE oznacza, e usuni cie danego obiektu poci gnie za sob usuni cie obiektu powi zanego. CascadeType.ALL wszystkie powy sze. Trwa e zwi zki s implementowane za pomoc wspó dzielonych kluczy podstawowych (1:1), pary klucz podstawowy, klucz obcy lub za pomoc relacji po czeniowych.