Wzorce dystrybucji i wspólbieżności autonomicznej

Podobne dokumenty
Wzorce logiki dziedziny

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

Wykład 8. SQL praca z tabelami 5

Bezstanowe komponenty sesyjne i zdarzenia zwrotne

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

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

Metody dostępu do danych

Podejście obiektowe do relacyjnych baz danych Hibernate.

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Przykładowa implementacja

Projektowanie Aplikacji Internetowych Jarosław Kuchta. Wzorce projektowe warstwy biznesowej

Struktura drzewa w MySQL. Michał Tyszczenko

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

JAVA I BAZY DANYCH. MATERIAŁY:

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

PHP: bazy danych, SQL, AJAX i JSON

1 Przetwarzanie transakcyjne Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa... 3

METODY PROGRAMOWANIA

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Współbieżność w środowisku Java

Projektowanie Aplikacji Internetowych. Wzorce projektowe warstwy usług

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

prepared by: Programowanie WWW Model-View-Controller

MVC w praktyce tworzymy system artykułów. cz. 1

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

Aplikacje RMI

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Programowanie komponentowe 5

Kurs programowania aplikacji bazodanowych

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

Metody dostępu do danych

Stanowe komponenty sesyjne

Programowanie w języku Java. Bazy danych SQLite w Javie

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Oracle PL/SQL. Paweł Rajba.

BAZA DANYCH SIECI HOTELI

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia).

Programowanie obiektowe

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

przykłady problemów; realizacja dostaw części od producenta do klienta:

Wywoływanie metod zdalnych

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Język SQL, zajęcia nr 1

Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Klasy abstrakcyjne, interfejsy i polimorfizm

Enkapsulacja, dziedziczenie, polimorfizm

akademia androida Składowanie danych część VI

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

Pakiety podprogramów Dynamiczny SQL

15. Funkcje i procedury składowane PL/SQL

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

1. Model ACID. 2. Deklaratywne zarządzanie transakcjami, atrybuty transakcji. 3. Propagacja transakcji. transakcje rozproszone, propagacja kontekstu

Wykład 8: klasy cz. 4

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory.

Aplikacje bazodanowe. dr inż. Arkadiusz Mirakowski

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Internetowe bazy danych

Hurtownia Świętego Mikołaja projekt bazy danych

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Wykład 5: PHP: praca z bazą danych MySQL

Programowanie w języku Java WYKŁAD

Aplikacje RMI Lab4

1. CZYM JEST SERIALIZACJA

"Biznesowe" wzorce projektowe

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Lock Manager Deadlock Źródła Jak starczy czasu. Dreadlocks. Konrad Błachnio MIMUW 19 maja 2010

Protokół JDBC współpraca z relacyjnymi bazami danych lab4. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

BAZY DANYCH. Transakcje. opracowanie: Michał Lech

Programowanie obiektowe

Wykład 05 Bazy danych

Analiza i projektowanie aplikacji Java

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

Zaawansowane programowanie obiektowe - wykład 5

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

Oracle PL/SQL. Paweł Rajba.

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Autor: Joanna Karwowska

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Wywoływanie metod zdalnych

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.

Wykład 5. SQL praca z tabelami 2

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Prototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp.

Kursory. A. Pankowska 1

PL/SQL. Zaawansowane tematy PL/SQL

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Programowanie obiektowe

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

Wzorce projektowe. dr inż. Marcin Pietroo

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Transkrypt:

Wzorce dystrybucji i wspólbieżności autonomicznej 1. Wzorce dystrybucji, fasada zdalna (Remote Facade), obiekt transfery danych (Data Transfer Object), 2. Wzorce współbieżności autonomicznej, blokada optymistyczna (Optimistic Offline Lock), blokada pesymistyczna (Pessimistic Offline Lock), blokada gruboziarnista (Coarse-Grained Lock), blokada domyślna (Implicit Lock). 1

Remote Facade fasada klienta klient getclientdata() getname() getaddress() getbirthdate() Fasada ma na celu ograniczyć liczbę zdalnych wywołań poprzez grupowanie żądań i odpowiedzi. 2

Remote Facade Podstawowe cechy fasady zdalnej: umożliwia wyłącznie komunikację pomiędzy interfejsem szczegółowym (lokalnym) a ogólnym (zdalnym). nie zawiera logiki jedynie przesyła dane, udostępniane operacje zwykle odpowiadają konkretnym działaniom aplikacji klienckiej, Inne często wykorzystywane funkcje: mechanizm zabezpieczeń poprzez listy użytkowników mogących wywoływać metody fasady, naturalna kontrola zakresu transakcji. 3

Remote Facade Podobne wzorce: Session Facade obudowuje dostęp do komponentów encyjnych. Zwykle jest to implementacja wzorca Transaction Script czyli zawiera logikę dziedziny. Service Layer podstawowa różnica: warstwy usług nie musi być zdalna oraz może zawierać logikę aplikacji. W niektórych wypadkach fasada zdalna może być częścią warstwy usług lub umożliwiać dostęp do niej. 4

Data Transfer Object OrderDTO value address serialize deserialize OrderAssembler Order value * 1 Customer address Data Transfer Object przenosi dane pomiędzy procesami, pozwalając na zmniejszenie liczby zdalnych wywołań. 5

Data Transfer Object Ze względu na długi czas realizacji zdalnych operacji bardziej opłacalne jest przesłanie zbyt wielu danych niż wielokrotne wywoływanie zdalnych metod. Często spotykaną formą DTO jest wzorzec Record Set. Obiekty DTO zwykle tworzy się ze względu na potrzeby klienta np. jeden obiekt zawiera wszystkie informacje potrzebne do wyświetlenia strony www. Dane są przesyłane w formie zserializowanej (zwykle binarnej lub XML). Obiekty DTO powinny być całkowicie niezależne od obiektów dziedziny (i odwrotnie). Dlatego do aplikacji dołącza się odpowiednie obiekty potrafiące tworzyć obiekty DTO na podstawie obiektów dziedziny i odwrotnie. 6

Przetwarzanie współbieżne Współbieżność rodzi szereg charakterystycznych problemów związanych z możliwymi interakcjami pomiędzy działającymi procesami. Typowe problemy pojawiające się w aplikacjach biznesowych to: utracone aktualizacje wprowadzone zmiany nie są widoczne dla wszystkich procesów i w związku z tym mogą zostać niezapisane, niespójne odczyty odczytywane w różnych momentach części danych są niespójne ze względu na wprowadzone w międzyczasie zmiany. Problemy rozwiązuje się wprowadzając blokady. 7

Optimistic Offline Lock Blokada optymistyczna zakłada niskie ryzyko wystąpienia konfliktu i w związku z tym dopuszcza wielu użytkowników do operowania na wspólnych danych. W przypadku, gdy jeden z procesów chce dokonać aktualizacji danych należy sprawdzić czy w międzyczasie inny proces ich nie zmodyfikował. W takim przypadku wprowadzone zmiany są wycofywane. Najczęstszy sposób implementacji: numery wersji. 8

Optimistic Offline Lock proces baza danych SELECT Document edycja dokumentu UPDATE Document SET, version = v+1, WHERE id =? AND version = v ilość zaktualizowanych wierszy if (ilość!=1) failed(); 9

Optimistic Offline Lock Alternatywna implementacja: warunki dla każdego pola w dokumencie. Zalety: nie trzeba dodawać pola wersji do tabeli, Wady: skomplikowana postać instrukcji UPDATE (DELETE), negatywny wpływ na wydajność. Należy zwrócić uwagę, że obie implementacje nie chronią przed niespójnymi odczytami. 10

Pessimistic Offline Lock Blokada pesymistyczna zapobiega konfliktom poprzez całkowite ich wyeliminowanie. Transakcja biznesowa musi uzyskać blokadę umożliwiającą modyfikowanie danych zanim zacznie ich używać. Blokada pesymistyczna jest implementowana w trzech fazach: określenie rodzaju blokady, stworzenie menedżera blokad, zdefiniowanie procedur używanych w celu uzyskania blokady. 11

Pessimistic Offline Lock CREATE TABLE lock(lid bigint primary key, owner varchar(64) ) public class ExclusiveReadLockManagerImpl implements ExclusiveReadLockManager{ public void getlock(long lock, String sowner){ if(!this.haslock(lock, sowner)){ try{ Connection con = ConnectionManager.getInstance(). getconnection(); PreparedStatement pstmt = con.preparestatement( "INSERT INTO lock VALUES(?,?)"); pstmt.setlong(1, lock); pstmt.setstring(2, sowner); pstmt.executeupdate(); catch(sqlexception ex){ throw new LockException( "Nie mozna uzyskac blokady"); finally{ this.closedb(); 12

Pessimistic Offline Lock private void releaselock(long lock, String sowner){ try{ Connection con = ConnectionManager.getInstance(). getconnection(); PreparedStatement pstmt = con.preparestatement( "DELETE FROM lock WHERE lid =? AND owner =?"); pstmt.setlong(1, lock); pstmt.setstring(2, sowner); pstmt.executeupdate(); catch(sqlexception ex){ throw new LockException(""); finally{ this.closedb(); 13

Pessimistic Offline Lock Przykład zastosowania (aktualizacja danych klienta przez www): właścicielem blokady jest sesja klienta przy jej tworzeniu usuwane są wszystkie założone przez nią blokady. metoda getlock() jest wywoływana przed każdą operacją dotyczącą obiektu reprezentującego klienta. Argumenty metody to identyfikator klienta oraz identyfikator sesji. obiekt klienta jest utrwalany w bazie danych po czym blokada jest usuwana releaselock(). na końcu sesji usuwane są wszystkie jej blokady. 14

Coarse-Grained Lock Blokada gruboziarnista blokuje grupę powiązanych ze sobą obiektów za pomocą pojedynczej blokady. Często, w przypadku zmiany powiązanych ze sobą obiektów stosowanie blokady optymistycznej pojedynczych obiektów jest nieefektywne (duża liczba odwołań do bazy), natomiast blokada pesymistyczna dotycząca poszczególnych obiektów jest trudna do realizacji i powodować rywalizację procesów na poziomie dostępu do tablicy blokad. Typowym problemem jest też wyszukanie obiektów, które powinny być zablokowane (np. w momencie zakładania blokady mogą one nie istnieć). 15

Coarse-Grained Lock Implementacja polega na stworzeniu obiektu wykorzystywanego do blokowania całej grupy. Przykład obiekt wersji dla blokady optymistycznej. Order value * 1 Customer address * 1 * 1 Version getvalue() increment() 16

Coarse-Grained Lock public class Version { public static Version find(long id){ Version v = session.getidentitymap.getversion(id); if (v==null) v = Version.load(id); return v; private static Version load(long id) { "SELECT id, value, modifiedby, date FROM version WHERE id =?"; public static Version create(){ Version v = new Version(IdGenerator.nextId(), 0, session.getuser(), new Date()); v.isnew = true; return v; 17

Coarse-Grained Lock public void insert(){ if (this.isnew){ "INSERT INTO version VALUES(?,?,?,?)"; this.isnew = false; public void increment(){ if (!this.islocked){ "UPDATE version SET value = value+1, WHERE id =?"; this.value++; locked = true; if (updatedrowcount==0) throw new ConcurencyException(""); 18

Coarse-Grained Lock W przypadku blokady pesymistycznej wspólny obiekt pełni rolę żetonu określającego, czy dana grupa może zostać zablokowana. Order value * 1 Customer address * 1 Version * 1 getvalue() increment() 1 1 Pessimistic Lock 19

Implicit Lock Mechanizm blokowania działa dopóki jest spójnie i konsekwentnie stosowany. Brak pobrania blokady choćby w jednym miejscu kodu może sprawić, że cały schemat blokowania staje się bezużyteczny. Jednym z pomysłów rozwiązania tego problemu jest stosowanie blokad domyślnych, które nie muszą (nie powinny) być wywoływane jawnie przez programistę. 20

Implicit Lock transakcja biznesowa wczytaj obiekt szkielet zablokuj obiekt menedżer blokad zwróć obiekt powodzenie W przypadku blokad optymistycznych mechanizm blokady domyślnej zaleca się stosować zawsze. Dla blokad pesymistycznych należy uważać na możliwe zaglożenia np. zakleszczenia. 21

Podsumowanie W aplikacjach biznesowych stosuje się mechanizmy mające na celu zwiększenie wydajności systemu. Podstawowe techniki to optymalizacja zdalnych wywołań oraz współbieżność. W tym drugim przypadku należy mieć na uwadze problemy związane z jednoczesnym dostępem kilku procesów do tych samych danych. Aby zlikwidować potencjalne trudności stosuje się blokady, które w miarę możliwości nie ograniczają poziomu współbieżności. 22