Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Problematika datového přístupu v business aplikacích Bc. Michal Jakubec MCSE, MCSD, MCDBA, MCTS 1.

Podobné prezentace


Prezentace na téma: "Problematika datového přístupu v business aplikacích Bc. Michal Jakubec MCSE, MCSD, MCDBA, MCTS 1."— Transkript prezentace:

1 Problematika datového přístupu v business aplikacích Bc. Michal Jakubec MCSE, MCSD, MCDBA, MCTS 1

2 Obsah Stručně o architektuře aplikací Požadavky na datový přístup Možnosti datového přístupu Ukázka řešení datového přístupu 2

3 Co nás nyní čeká? (1/4) Stručně o architektuře aplikací Požadavky na datový přístup Možnosti datového přístupu Ukázka řešení datového přístupu 3

4 Na počátku stojí požadavky Interakce UživatelSystém 4

5 Konceptuální model systému Uživatelské rozhraní Aplikační logika Datové úložiště Datový přístup Uživatel 5

6 Kompetence vrstev modelu Uživatelské rozhraníAplikační logikaDatový přístup identifikace uživatele přihlášení odhlášení přístup k funkcím systému nabídky zkratkové klávesy vstup údajů formuláře ovládací prvky prezentace údajů tabulky, grafy řízení přístupu autentizace autorizace vykonávání činností zpracování údajů koordinace aktivit kontrola přijatých údajů validace verifikace sledování provozu auditing práce s daty úložiště načítání dat aktualizace dat výběr dat dle podmínek práce se strukturou úložiště (volitelně) načítání aktualizace porovnávání práce s konfigurací aplikace 6

7 Fyzické uspořádání vrstev Datové úložiště Uživatelské rozhraní Aplikační logika Datový přístup Databázový server „Tlustí“ klienti Webový server Prohlížeč Uživatelské rozhraní Aplikační logika Datové úložiště Datový přístup Prohlížeč Databázový server Klienti Aplikační logika Datový přístup Datové úložiště Uživatelské rozhraní Databázový server Aplikační server „Chytří“ klienti 2-vrstvá architektura Webová architektura3-vrstvá architektura 7

8 Shrnutí Funkčnost aplikace lze rozčlenit do vrstev (layers)  uživatelské rozhraní  aplikační logika  datový přístup Fyzické umístění vrstev (tiers) určuje architekturu  2-vrstvá (2-tier) architektura  3-vrstvá/n-vrstvá (n-tier) architektura (distribuovaná)  webová architektura V dalších částech se budeme věnovat výhradně vrstvě datového přístupu 8

9 Co nás nyní čeká? (2/4) Stručně o architektuře aplikací Požadavky na datový přístup Možnosti datového přístupu Ukázka řešení datového přístupu 9

10 Požadavky na datový přístup Datový přístup SQL Server Oracle Access BLOB Off-line úložiště Off-line úložiště Uložit Storno 10 Metadata

11 Elementární práce se záznamy Operace se strukturovanými daty (CRUD)  vytvoření, úprava, smazání, načítání, vyhledávání  obecně řešeno pomocí O/R mapování Operace s nestrukturovanými daty (BLOB)  ukládání, načítání, vyhledávání, indexace  řešeno individuálně (např. FILESTREAM) 11

12 Hromadná práce se záznamy Zobrazení záznamů v pohledech  filtrace, řazení, stránkování, počet  navigace mezi záznamy různých typů  obecně dynamické dotazy => univerzální Zobrazení záznamů v sestavách  spojování, seskupování, hierarchie  obecně statické dotazy => jednoúčelové 12

13 Statické dotazy Výběrové příkazy sestavené přímo v kódu  např. LINQ, NHibernate Criteria API Ideálně s podporou kontroly syntaxe  LINQ podporuje, NHibernate nikoliv Použití v kódu aplikační logiky a v sestavách IList titles = session.CreateCriteria(typeof(Title)).Add(Restrictions.Like("AuthorName", "Knuth%")).Add(Restrictions.Eq("PublisherId", publisherId).List(); NHibernate IList titles = from t in context.Titles where t.AuthorName.StartsWith("Knuth") and t.PublisherId == publisherId select t; LINQ 13

14 Dynamické dotazy Výběrové příkazy sestavené či upravené za běhu  zpravidla vyžadována vhodně definovaná syntax  objektový model potřebný pro programovou manipulaci Použití zejména v uživatelsky definovaných pohledech kombinují pevnou definici dotazu a volitelné filtrační podmínky 14 SELECT T.Id FROM Task AS T INNER JOIN TaskType AS TT ON T.TypeId = TT.Id INNER JOIN TaskState AS TS ON T.StateId = TS.Id WHERE T.Disabled = 0 AND (TT.Mark = "Development" OR TT.Mark = "Repair") AND TS.Mark = "Billed"

15 Dynamický dotaz – ukázka Název publikace ^2AutorVydavatelství ^1 Jádro systému WindowsDráb, MartinComputer Press Umění programováníKnuth, Donald E.Computer Press Destilované UMLFowler, MartinGrada Objektové programováníČada, OndřejGrada SELECT T.Name, T.AuthorName, P.Name FROM Title AS T INNER JOIN Publisher AS P ON T.PublisherId = P.Id ORDER BY P.Name, T.Name 15

16 Dynamický dotaz – restrikce SELECT T.Name, T.AuthorName, P.Name FROM Title AS T INNER JOIN Publisher AS P ON T.PublisherId = P.Id WHERE T.PublisherId ORDER BY P.Name, T.Name Název publikace ^2AutorVydavatelství ^1 Jádro systému WindowsDráb, MartinComputer Press Umění programováníKnuth, Donald E.Computer Press Destilované UMLFowler, MartinGrada Objektové programováníČada, OndřejGrada 16

17 Dynamický dotaz – filtrace SELECT T.Name, T.AuthorName, P.Name FROM Title AS T INNER JOIN Publisher AS P ON T.PublisherId = P.Id WHERE T.PublisherId AND T.AuthorName LIKE 'Knuth%' ORDER BY P.Name, T.Name Název publikace ^2Autor [Knuth*]Vydavatelství ^1 Jádro systému WindowsDráb, MartinComputer Press Umění programováníKnuth, Donald E.Computer Press Destilované UMLFowler, MartinGrada Objektové programováníČada, OndřejGrada 17

18 Relační databázová úložiště Prakticky „standardem“ ukládání dat v podnikových informačních systémech  dostatek znalostí a zkušeností mezi vývojáři  dobrá kompatibilita produktů různých výrobců  intuitivní i pro neškolené uživatele („tabulky“) V dohledné době „není lepší volba“  již bylo investováno do relačních technologií  čistě objektová úložiště se zatím neprosadila 18

19 Úložiště objektů typu BLOB Určeno pro správu velkých objemů dat  dokumenty, obrázky, audio, video Možnosti realizace  samostatně v souborovém systému  „in-line“, SQL Server FILESTREAM Kombinovaná řešení mají vyšší náklady na provoz a údržbu  zálohování i obnova by měla být atomická! 19 BLOB

20 Úložiště metadat Obsahuje informace o struktuře údajů, se kterými aplikace pracuje Umožňuje přizpůsobení aplikace za běhu  pohledy, dynamické dotazy, business pravidla Podporuje flexibilní implementaci zabezpečení  řízení a sledování přístupu k entitám, atributům Implementováno staticky či dynamicky  doménové třídy Entity, Attribute, atd. 20 Metadata

21 Off-line úložiště na klientu Poskytuje možnost práce uživatele i bez připojení k primárnímu datovému zdroji  např. pracovníci v terénu mimo dosah sítě Řešeno nejčastěji instalací „odlehčeného“ databázového stroje  např. MS SQL Server Express či Compact Lze řešit také jednoduššími prostředky  serializací kolekce doménových objektů  serializací instancí třídy DataSet  pomocí práce se sadou dokumentů XML 21 Off-line úložiště Off-line úložiště

22 Shrnutí Komplexní požadavky na datový přístup  Zobrazení záznamů v pohledech  Zobrazení záznamů v sestavách  Operace se strukturovanými daty (CRUD)  Operace s nestrukturovanými daty (BLOB) Obsluhujeme různé typy datových úložišť  Relační databázová úložiště  Úložiště pro BLOBy  Úložiště pro metadata, Off-line úložiště 22

23 Co nás nyní čeká? (3/4) Stručně o architektuře aplikací Požadavky na datový přístup Možnosti datového přístupu Ukázka řešení datového přístupu 23

24 Druhy datového přístupu Přístup k relačním databázím  ADO.NET, NHibernate, Entity Framework,... Přístup k dokumentům XML  XmlDocument, XDocument,... Přístup k BLOB objektům (soubory)  souborový systém  SQL Server FILESTREAM 24

25 Možnosti přístupu k databázi Elementární řádkový přístup (Command)  INSERT, UPDATE, DELETE, příp. SELECT Manipulace s množinami řádků  serverový kurzor (Command/DataReader)  odpojený režim (DataAdapter/DataSet) Objektově-relační mapování (ORM)  manipulace s entitními instancemi  objektově-orientované dotazy 25

26 Srovnání způsobů práce s DB Konvenční přístup var con = new SqlConnection( connString); var cmd = new SqlCommand( InsertCommandText, con); cmd.Parameters.AddWithValue( "Čapek"); cmd.Parameters.AddWithValue( "Karel"); cmd.Parameters.AddWithValue( new DateTime(1890, 1, 9)); con.Open(); cmd.ExecuteNonQuery(); con.Close(); Přístup přes ORM var ctx = new LibraryContext(); var a = new Author(); a.LastName = "Čapek"; a.FirstName = "Karel"; a.BornOn = new DateTime( 1890, 1, 9); ctx.AuthorSet.AddObject(a); ctx.SaveChanges(); 26 Pozor! Z důvodu přehlednosti kód neobsahuje ošetření korektního uvolnění prostředků (IDisposable).

27 Proč je ORM užitečné? Dobře zapadá do obecného vývojového procesu  analýza požadavků => konceptuální model  návrh řešení => doménový model  realizace řešení => ORM => relační datový model Zjednodušuje práci aplikace s databází  vývojář soustředí výhradně na business logiku nemusí řešit problémy datového přístupu Vytváří oddělovací vrstvu mezi aplikací a databází  menší citlivost kódu aplikace vůči změnám relačních databázových struktur 27

28 V čem ORM působí potíže? Obtížná volba té „správné“ platformy  existuje mnoho technologií s různou škálou funkčnosti Skrývá implementační detaily relační databáze  vývojáři nedokáží odhadnout důsledky kódu, který tvoří Často ovlivňuje strukturu doménových tříd  dědění z určené bázové třídy ORM  přítomnost atributů reprezentujících PK, FK Nutno spravovat údaje o mapování  buď v samostatných souborech či jako anotace v kódu V mezních případech vznikají problémy s výkonem 28

29 Používat či nepoužívat ORM? ORM rozhodně ano, ale samo nepostačí  vhodné zejména pro rozsáhlejší aplikace Je vhodné oddělit použité ORM od kódu aplikační logiky (viz následující téma)  usnadní případnou změnu použitého ORM  vhodný a flexibilní je vzor Repository  nejedná se však o triviální problematiku! V žádném případě však ORM nezbavuje vývojáře nutnosti rozumět relačním databázím! 29

30 Co nás nyní čeká? (4/4) Stručně o architektuře aplikací Požadavky na datový přístup Možnosti řešení datového přístupu Ukázka řešení datového přístupu 30

31 Příklad zadání aplikace Navrhněte databázi informačního systému Městské knihovny Systém bude evidovat publikace, jejich autory, kategorie a exempláře Systém bude sledovat čtenáře, jejich výpůjčky a zaplacení ročních členských poplatků Evidované údaje jednotlivých agend jsou požadovány v obvyklém rozsahu  jejich volba je na uvážení řešitele 31

32 Konceptuální model (1/4) Nalezení pojmů problémové domény 32

33 Konceptuální model (2/4) Vyznačení vztahů mezi pojmy 33

34 Konceptuální model (3/4) 34 Určení násobnosti vztahů

35 Konceptuální model (4/4) 35 Přiřazení atributů

36 Doménový model aplikace (1/3) Transformace identifikátorů 36

37 Doménový model aplikace (2/3) Vyznačeny (primární) průchodnosti 37

38 Relační model aplikace (1/2) Vytvořen dle doménového modelu 38

39 Doménový model aplikace (3/3) Rozšířen o prvky podporující ORM 39

40 Relační model aplikace (2/2) Rozšířen o prvky podporující ORM 40

41 Závislosti jednotlivých projektů 41

42 DEMO 1 Projektová struktura 42

43 Přístup přes Repository Typově nespecifický přístup Zapouzdření CRUD a dotazů Implementuje IRepositoryProvider Třída Repository jako Singleton 43

44 Přístup přes EntityBroker Typově specifický přístup Zapouzdření entitně-specifických dotazů Rozhraní IEntityBroker Skeletální implementace IEntityBroker Konkrétní třídy XxxBroker přístupné jako Singleton 44

45 DEMO 2 Repository, EntityBroker 45

46 Implementace dekorátorů Zabezpečení přístupu Logování změn Neinvazivní mazání záznamů 46

47 DEMO 3 Implementace dekorátorů 47

48 Jak na vícevláknový přístup alokace SessionManageru dle přistupujícího vlákna každé vlákno tak má k dispozici vlastní SessionManager nutno řešit situaci, kdy se pracuje s transakcemi 48

49 DEMO 4 Ošetření vícevláknového přístupu 49

50 Shrnutí Tvorba datového modelu  konceptuální, doménový a relační model Vytvoření entitních tříd a mapování  preferována strategie Database First relační datové struktury jsou jednoznačné Implementace Repository a dekorátorů  zapouzdření datových služeb => modularita  zabezpečení, mazání, auditing Ošetření vícevláknového přístupu  snadné použití např. v ASP.NET 50

51 Závěr Stručně o architektuře aplikací Požadavky na datový přístup Možnosti datového přístupu Ukázka řešení datového přístupu Dotazy? 51


Stáhnout ppt "Problematika datového přístupu v business aplikacích Bc. Michal Jakubec MCSE, MCSD, MCDBA, MCTS 1."

Podobné prezentace


Reklamy Google