Problematika datového přístupu v business aplikacích

Slides:



Advertisements
Podobné prezentace
© 2000 VEMA počítače a projektování spol. s r. o..
Advertisements

Stodůlky 1977 a 2007 foto Václav Vančura, 1977 foto Jan Vančura, 2007.
Deník veřejné knihovny na rok 2009 Změny v evidenci činnosti knihoven.
Stránka 1, © Vema, a. s.. Stránka 2, © Vema, a. s. Podnikové aplikace  Integrovaný podnikový systém (Integrated Business System):  komplex aplikací.
Města ČR – orientace na mapě
Nadpis Portál pro komunikaci s občany 1 Portál pro komunikaci s veřejností Portál pro komunikaci s veřejností DATRON, a.s. ing. Jaromír Látal projektový.
Nový přístup k aplikacím Vema
Zpracování informací a znalostí Další přístupy k vyhledávání textových dokumentů Doc. RNDr. Jan Rauch, CSc. Katedra informačního a znalostního inženýrství.
11 Udržovatelnost a servisní logistika
Přednáška č. 1 Úvod, Historie zpracování dat, Základní pojmy
Český Internet po (uši v?) krizi Marek Antoš. snímek |datum |dokument | 1. Internetové prostředí 2.
 Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele, která odhaluje uspořádání, vztahy, tendence a trendy  Existuje celá.
Přednáška č. 5 Proces návrhu databáze
Student: Ing. Olga Minaříková školitel: doc.akad.soch. Miroslav Zvonek, PhD. srpen 2009.
Téma 3 ODM, analýza prutové soustavy, řešení nosníků
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
Násobíme . 4 = = . 4 = = . 4 = = . 2 = 9 .
Uživatelé, Role, Schémata
Úvod do databází Databáze.
Vzdělávací materiál / DUMVY_32_INOVACE_02B14 Příkazový řádek: obsah souborů PŘÍKLADY AutorIng. Petr Haman Období vytvořeníLeden 2013 Ročník / věková kategorie3.
VY_32_INOVACE_INF_RO_12 Digitální učební materiál
MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA reg. č.: CZ.1.07/1.4.00/ Základní škola, Šlapanice, okres Brno-venkov, příspěvková organizace Masarykovo nám.
Praktický modelem řízený vývoj softwaru
Databáze Jiří Kalousek.
VY_32_INOVACE_ 14_ sčítání a odčítání do 100 (SADA ČÍSLO 5)
Dělení se zbytkem 6 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
Dělení se zbytkem 5 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
M O R A V S K O S L E Z S K Ý K R A J 1 Vedení správních řízení ve spisové službě a statistika vyřizování dokumentů.
Jazyk vývojových diagramů
Čtení myšlenek Je to až neuvěřitelné, ale skutečně je to tak. Dokážu číst myšlenky.Pokud mne chceš vyzkoušet – prosím.
52_INOVACE_ZBO2_1364HO Výukový materiál v rámci projektu OPVK 1.5 Peníze středním školám Číslo projektu:CZ.1.07/1.5.00/ Název projektu:Rozvoj vzdělanosti.
Analýza informačního systému
Dělení se zbytkem 8 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
Zásady pozorování a vyjednávání Soustředění – zaznamenat (podívat se) – udržet (zobrazit) v povědomí – představit si – (opakovat, pokud se nezdaří /doma/)
Rozvojový plán statutárního města České Budějovice v oblasti sociálních služeb na období Ing. Martina Kučerová.
D ATOVÉ MODELY Ing. Jiří Šilhán. D ATABÁZOVÉ SYSTÉMY Patří vedle textových editorů a tabulkových kalkulátorů k nejrozšířenějším představitelům programového.
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Novinky a strategie společnosti Vema, a. s.
Rozšíření jednouživatelské verze IS na víceuživatelskou Prezentace Diplomové práce Autor : Libor Tomášek Spoluautoři : Pobucký M., Drábek L. Vedoucí :
Relační databáze.
1 Celostátní konference ředitelů gymnázií ČR AŘG ČR P ř e r o v Mezikrajová komparace ekonomiky gymnázií.
Technické kreslení.
Databázové systémy Architektury DBS.
Základní pojmy Systém je abstrakce, kterou si lidé vytvářejí v procesu poznávání jako nástroj zkoumání reálných objektů.
Metainformační systém založený na XML Autor: Josef Mikloš Vedoucí práce: Ing. Jan Růžička, Ph.D. V/2004.
Informatika pro ekonomy II přednáška 10
Krajský rok informatiky České Budějovice 26. –
Databázové systémy Přednáška č. 6 Proces návrhu databáze.
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
LiveContent Univerzální Formulářové Řešení Michal Petrtýl, Marek Beneš.
Strana: 1 © Vema, a. s. Ucelené řešení pro řízení lidských zdrojů, ekonomiky a logistiky.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Copyright (C) 1999 VEMA počítače a projektování, spol. s r.o.1 Lucián Piller Intranet HR.
Dokumentace informačního systému
Copyright (C) 1999 VEMA počítače a projektování, spol. s r.o.
DATABÁZOVÉ SYSTÉMY. 2 DATABÁZOVÝ SYSTÉM SYSTÉM ŘÍZENÍ BÁZE DAT (SŘBD) PROGRAM KTERÝ ORGANIZUJE A UDRŽUJE NASHROMÁŽDĚNÉ INFORMACE DATABÁZOVÁ APLIKACE PROGRAM.
Databázové modelování
2 Petr Žitný znalosti.vema.cz 3 Báze znalostí Nová služba zákazníkům ▸Báze naplněná informacemi, ke které mají uživatelé přímý přístup Základní cíl ▸Poskytovat.
Databáze Lokální systémy a SQL servery VY_32_INOVACE_7B10.
Databázové systémy Informatika pro ekonomy, př. 18.
ISSS IS HN/SS Softwarová architektura informačního systému hmotné nouze a sociálních služeb Jindřich Štěpánek
Analýza informačního systému. Podrobně zdokumentovaný cílový stav Paramentry spojené s provozem systému – Cena – Přínosy – Náklady a úspory – …
Delphi a databáze MS SQL Server.
1 E - S V Ě T S E T O Č Í S T Á L E R Y C H L E J I. S T A Č Í T E M U ? Fenix II –IS na platformě.NET Michal Varga.
1 E - S V Ě T S E T O Č Í S T Á L E R Y C H L E J I. S T A Č Í T E M U ? Fenix II - IS nové generace Michal Varga.
YOUR LOGO C# Entity Framework. YOUR LOGO  Entity framework nám poskytuje: -Vytváří objektový model na základě databázového schématu -Mapuje tabulky,
Budování Integrovaného informačního systému Národního památkového ústavu Petr Volfík, NPÚ ÚP
Informatika pro ekonomy přednáška 8
Vytvořil: Robert Döring
Transkript prezentace:

Problematika datového přístupu v business aplikacích Bc. Michal Jakubec MCSE, MCSD, MCDBA, MCTS http://www.jakubec.cz/

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

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

Na počátku stojí požadavky Interakce Uživatel Systém

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

Kompetence vrstev modelu Uživatelské rozhraní Aplikační logika Datový 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

Fyzické uspořádání vrstev 2-vrstvá architektura Webová architektura 3-vrstvá architektura Webový server Prohlížeč Uživatelské rozhraní Aplikační logika Datové úložiště Datový přístup Databázový server Klienti Datové úložiště Uživatelské rozhraní Aplikační logika Datový přístup Databázový server „Tlustí“ klienti Aplikační logika Datový přístup Datové úložiště Uživatelské rozhraní Databázový server Aplikační server „Chytří“ klienti Této oblasti se budeme dále věnovat!

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

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

Požadavky na datový přístup Seznam položek Detail položky Tisková sestava Uložit Storno Off-line úložiště Datový přístup Metadata SQL Server XML Oracle BLOB Access

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) Detail položky Uložit Storno

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é Seznam položek

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<Title> titles = from t in context.Titles where t.AuthorName.StartsWith("Knuth") and t.PublisherId == publisherId select t; LINQ IList<Title> titles = session.CreateCriteria(typeof(Title)) .Add(Restrictions.Like("AuthorName", "Knuth%")) .Add(Restrictions.Eq("PublisherId", publisherId).List(); NHibernate

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 <selector entity="Task" property="Id"> <condition property="Disabled" comparison="Equals" type="flag" value="false"/> <set junction="Or"> <condition property="Type.Mark" comparison="Equals" value="Development"/> <condition property="Type.Mark" comparison="Equals" value="Repair"/> </set> <condition property="State.Mark" comparison="Equals" value="Billed"/> </selector> 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"

Dynamický dotaz – ukázka Název publikace ^2 Autor Vydavatelství ^1 Jádro systému Windows Dráb, Martin Computer Press Umění programování Knuth, Donald E. Destilované UML Fowler, Martin Grada Objektové programování Čada, Ondřej 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

Dynamický dotaz – restrikce Název publikace ^2 Autor Vydavatelství ^1 Jádro systému Windows Dráb, Martin Computer Press Umění programování Knuth, Donald E. Destilované UML Fowler, Martin Grada Objektové programování Čada, Ondřej SELECT T.Name, T.AuthorName, P.Name FROM Title AS T INNER JOIN Publisher AS P ON T.PublisherId = P.Id WHERE T.PublisherId = @DefaultPublisherId ORDER BY P.Name, T.Name

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

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

Ú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á! BLOB

Ú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. Metadata

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 Off-line úložiště

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ě

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

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

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

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

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

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

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!

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

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 

Konceptuální model (1/4) Nalezení pojmů problémové domény Poskytne přehled o rozsahu požadované byznys funkčnosti příkladové aplikace.

Konceptuální model (2/4) Vyznačení vztahů mezi pojmy Poskytne přehled o rozsahu požadované byznys funkčnosti příkladové aplikace.

Konceptuální model (3/4) Určení násobnosti vztahů Poskytne přehled o rozsahu požadované byznys funkčnosti příkladové aplikace.

Konceptuální model (4/4) Přiřazení atributů Poskytne přehled o rozsahu požadované byznys funkčnosti příkladové aplikace.

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

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

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

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

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

Závislosti jednotlivých projektů

DEMO 1 Projektová struktura

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

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

Repository, EntityBroker DEMO 2 Repository, EntityBroker

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

Implementace dekorátorů DEMO 3 Implementace dekorátorů

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

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

Shrnutí Tvorba datového modelu Vytvoření entitních tříd a mapování 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

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?