Lazy load Použity informace z knihy Patterns of Enterprise Application Architecture od M. Fowlera Jan Sládek.

Slides:



Advertisements
Podobné prezentace
Normalizace Řada analytiků se mylně domnívá, že pro každý objekt existuje jedno jediné univerzálně použitelné nejlepší řešení bez ohledu na řešený problém.
Advertisements

Stránka 1, © Vema, a. s.. Stránka 2, © Vema, a. s. Podnikové aplikace  Integrovaný podnikový systém (Integrated Business System):  komplex aplikací.
(instance konkrétní třídy)
© 2000 VEMA počítače a projektování spol. s r. o..
MS ACCESS - DOTAZY DATABÁZOVÉ SYSTÉMY.
Základy jazyka SQL Jan Tichava
Ing. Jan Mittner Rozšíření modelu 2. Vazba 1:n 3. Vazba m:n 2.
Jan Zmátlík / Petr Pošvic / Martin Rendl
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 1 Cvičení č. 4 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy II Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 1 Cvičení č. 3 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Možnosti implementace temporálních Databází v Caché Lukáš Rychnovský
Úvod do databází Databáze.
Adéla Masopustová Alena Seifrtová Lukáš Hůla
Hana Kotinová Struktura a cíl práce Metody předzpracování dat Systémy předzpracování dat Historie vývoje DPT Jak program pracuje Budoucnost.
State. State – kontext a problém Kontext  chování objektu má záviset na jeho stavu, který se typicky mění za běhu Neflexibilní řešení  metody obsahují.
Textový procesor Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je MGR. MILOŠ NYGRÝN.
Architektura databází Ing. Dagmar Vítková. Centrální architektura V této architektuře jsou data i SŘBD v centrálním počítači. Tato architektura je typická.
Identity Field Radim Veselý ČVUT v Praze Radim Veselý ČVUT v Praze Michal Kouřík ČVUT v Praze
Objektové programování
Relační databáze.
Současný svět Projekt č. CZ /3. 1
Ing. Jan Mittner Základy MVC 2. Rozšíření layoutu 3. helpery 4. Bootstrap a přepis URL adres 2.
KIV/ZIS cvičení 6 Tomáš Potužák. Pokračování SQL Klauzule GROUP BY a dotazy nad více tabulkami Stáhnout soubor studenti_dotazy_sql.mdb.
Informatika pro ekonomy II přednáška 10
Databázové systémy Přednáška č. 4 Proces návrhu databáze.
Databázové systémy Přednáška č. 6 Proces návrhu databáze.
Memento. Obnovení operačního systému ( Windows | Linux...) Všichni víme, co jsou transekce v databázi Memento – zálohování databáze.
Možnosti modelování požadavků na informační systém
Fakulta elektrotechniky a informatiky
Association table mapping Jakub Chalupa Naim Ashhab ČVUT FEL A7B36ASS – Architektura SW systémů LS 2014.
Tabulky – vyhledávání (v dalších tabulkách pomocí relací)
OSNOVA: a) Úvod do OOPb) Třídy bez metod c) Třídy s metodamid) Konstruktory a destruktory e) Metody constf) Knihovní třídy g) Třídy ve tříděh) Přetížení.
IB111 Programování a algoritmizace
Podnikání na Internetu letní semestr 2004 Jana Holá VIII.
Jazyk XML Jazyk pro tvorbu strukturovaných dokumentů Syntaxí velmi podobný HTML Hlavní cíle návrhu: Snadná editace - jazyk je textový Snadné strojové zpracování.
OSNOVA: a) Přetížení členských funkcí b) Dědičnost tříd Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 2 pro obor EST BPC2E.
Základní principy řešení a využití ERP aplikací
Ukládání heterogenních dat pomocí rozvolněných objektů Michal Žemlička.
Uvodni strana. Řešitelský tým Vedoucí pracovník Roman Čapek Řadoví zaměstnanci Petr Kotál Bohumír Baier
PHP Vytváření formuláře.
organizační struktury Implementace EOS III na Olomouckém kraji Pro:Krajský rok informatiky 2005 Autor:Jan Kadlec Datum:
Aplikační a programové vybavení
Databáze velké množství dat pevně dané struktury
SOFTware Adresář, soubor, OS Informatika – 6. třída Bc. Josef Štainer
FEL Komunikátor. Memory Leak program konsumuje operační paměť, kterou neumožňuje uvolnit o uvolnění paměti stará Garbage Collector ▫plně v režii Java.
Normalizace v objektových databázích Vojtěch Merunka
IKT MS Office Access Sestavy Ing. Jana Horáková
Foreign key mapping Jakub Chalupa Naim Ashhab ČVUT FEL
Databázové systémy 2 Zkouška – 8:00. Příklad I - Funkce Vytvořte funkci ZK_DIFF_MIN_MAX (P_ZAM_ID NUMBER) RETURN VARCHAR2. Funkce může vracet.
Service layer. Service layer – úvod Problém  Vytvoření API aplikace  Odstínění bussiness logiky a transakčního chování od zbytku aplikace  Kam s aplikační.
Databázové systémy Datové modely.
XSLT překladač Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
Vzory a antivzory Dobrá a špatná řešení často se vyskytujících problémů.
Klient pro správu databází MySQL 1 Klient pro správu databází MySQL Zbyněk Munzar České vysoké učení technické v Praze Fakulta elektrotechnická.
Objektově relační mapování - ORM. Obsah Co je to ORM Využití ORM Dědičnost –jednoduchý příklad –metody jak dědičnost popsat pomocí relační databáze Vztahy.
Algoritmizace a programování Soubory. Oč jde? Vytvoření externího souboru Vytvoření externího souboru Tento soubor může být: Tento soubor může být: Textový.
Business Activity Monitoring Jiří Kolář. Pojmy a zkratky ● SOA ● Servis Oriented Architecture ● BPMS ● Business Process Management System ● BAM ● Business.
Optimistic and pessimistic offline lock. Naivní přístup:  Uživatel A načte data  Uživatel B načte (stejná) data  Uživatel A upraví data a uloží je.
Základní škola T. G. Masaryka a Mateřská škola Poříčany, okr. Kolín VY_32_INOVACE_ICT_04 ORGANIZACE DAT V PC Zpracovala: Mgr. Květoslava Štikovcová Číslo.
Kapitola 5: Úvod do analytických technologií Webu Vítězslav Šimon (SIM0047) Adaptivní webové systémy (AWS)
NÁZEV ŠKOLY:SOŠ Net Office, spol. s r.o. Orlová Lutyně
Rastrová grafika Základní termíny – Formáty rastrové grafiky.
Úvod do databázových systémů
Architektura tužkou a v 3D
Evidence aplikací a jejich dokumentace
Návrhový vzor Flyweight
Informatika pro ekonomy přednáška 8
Unit of Work vzor z P of EAA (Fowler) 1.
Transkript prezentace:

Lazy load Použity informace z knihy Patterns of Enterprise Application Architecture od M. Fowlera Jan Sládek

Motivace Všichni to známe... Lazy load Zdroj: http://sliptalk.s3.amazonaws.com/wp-content/uploads/2014/08/12150537/lazy-25.png Všichni to známe... Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Motivace Příklad: Seznam objednávek - načteme pouze nutné minimum Lazy load - načteme pouze nutné minimum - ale víme, kam sáhnout pro doplňující data Příklad: Seznam objednávek Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Motivace Příklad: Seznam objednávek - objednávka může obsahovat Lazy load Příklad: Seznam objednávek - objednávka může obsahovat cenu, jméno zákazníka, odkaz na další objednávky zákazníka náhledy produktů v objednávce ... Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Motivace Příklad: Seznam objednávek Lazy load Příklad: Seznam objednávek - opravdu budeme to vše předem stahovat / načítat z databáze? - raději si jen připravíme přístupové metody a vyčkáváme – třeba nic z toho nebudeme potřebovat Zdroj: http://globe-views.com/dcim/dreams/smile/smile-01.jpg Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Myšlenka Příklad: Seznam objednávek Lazy load Příklad: Seznam objednávek Pokud pracujeme s objektem, jsme líní - nestahujeme hned vše, co s ním souvisí Pro informace si sáhneme až v případě, kdy je potřebujeme (např. zobrazit?) Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Myšlenka Příklad: Seznam objednávek Lazy load Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Lazy initialization (nejjednodušší) Virtual proxy Value holder Ghost O vzoru Lazy load Existují 4 typy lazy load: Lazy initialization (nejjednodušší) Virtual proxy Value holder Ghost Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Je prvek NULL? Načteme ho Jinak ho vrátíme Typy vzoru Lazy load 1) Lazy initialization Je prvek NULL? Načteme ho Jinak ho vrátíme Co se může pokazit? Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Problém 1: NULL je povolená hodnota v databázi Typy vzoru Lazy load 1) Lazy initialization Problém 1: NULL je povolená hodnota v databázi Je prvek opravdu nenačten? Nebo jsme ho načetli, a je prázdný? Řešení Special Case (Null Object) + Flyweight MissingOrder, UnknownOrder... Source: http://sliptalk.s3.amazonaws.com/wp-content/uploads/2014/08/12150537/lazy-25.png Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Typy vzoru Lazy initialization Problém 2 Lazy load Jan Sládek Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Typy vzoru Lazy initialization Problém 2 Lazy load Jan Sládek Architektury Softwarových Systémů, FEL ČVUT

Problém 2: Zapomeneme použít getter Typy vzoru Lazy load 1) Lazy initialization Problém 2: Zapomeneme použít getter Pokud nepoužijeme getter, ale přímo atribut třídy, inicializace neproběhne Řešení Pro vnější přístup – zapouzdření Pro vnitřní přístup ? Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Je prvek příliš složitý? Vytvoříme pro něj kostru/náhled Typy vzoru Lazy load 2) Virtual proxy Je prvek příliš složitý? Vytvoříme pro něj kostru/náhled Co se může pokazit? Source: http://sliptalk.s3.amazonaws.com/wp-content/uploads/2014/08/12150537/lazy-25.png Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Problém: Dvojí identita téhož objektu Typy vzoru Lazy load 2) Virtual proxy Problém: Dvojí identita téhož objektu Virtual proxy se sice chová jako zastupovaný objekt, ale má jiný hashcode Pro jeden objekt může dokonce existovat více proxy! Řešení Překrýt metodu equals() - nutné minimum Neporovnávat pomocí == Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Typy vzoru 3) Value holder Lazy load 3) Value holder Pro každou informaci si sáhneme pouze jednou Uložíme je do zvláštního objektu Jaké to přináší problémy? Source: http://sliptalk.s3.amazonaws.com/wp-content/uploads/2014/08/12150537/lazy-25.png Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Problém: Ztráta silné typovosti Typy vzoru Lazy load 3) Value holder Problém: Ztráta silné typovosti Pokud vytvoříme univerzální holder, pracujeme uvnitř něj s generickými parametry, nikoli přímo s typy Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Typy vzoru 4) Ghost Lazy load Po načtení z DB má objekt pouze ID Ostatní atributy se načtou až když k nim přistoupíme ID: 1051 Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Typy vzoru 4) Ghost Lazy load Vychází z: Lazy inicializace – vše kromě ID je lazy inicializováno (najednou) Virtual proxy – objekt je svým vlastním proxy Vychází z: Lazy inicializace – vše kromě ID je lazy inicializováno (najednou) Virtual proxy – objekt je svým vlastním proxy Rozšíření: Light object Pokud má objekt další často používané atributy (např. název), načteme je společně s ID – vznikne Light object Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Typy vzoru 4) Ghost – implementace (Data Mapper) Lazy load Zdroj: Patterns of Enterprise Applications Architecture, M. Fowler Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Typy vzoru 4) Ghost – implementace (Data Mapper) Lazy load Zdroj: Patterns of Enterprise Applications Architecture, M. Fowler Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Na co si dát pozor Na co si dát pozor u Lazy load Ripple loading Prohlížíme lazy loaded objekty po jednom – každé zobrazení pak znamená zvláštní dotaz do databáze Bez lazy loadu bychom načetli všechny objekty „jednou ranou“, pokud nejsou přílíš rozsáhlé - a při zobrazení uživatel nečeká - může být výhodnější Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Doplnění k Lazy load Identity table Výhody: Uložíme si všechna ID určité sady objektů do hashovací tabulky Při dotazu na tuto sadu: - projdeme tabulku - načteme objekty na základě ID - sestavíme a vrátíme kolekci Výhody: - objekty budou vždy aktuální - ušetříme dotaz na databázi pro získání sady Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Související vzory Související vzory Lazy load Singleton Data Mapper Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Příklad implementace – Value holder Lazy load 1) Bez lazy loadu Provede se vždy Architektury Softwarových Systémů, FEL ČVUT Jan Sládek

Příklad implementace – Value holder Lazy load 2) S lazy loadem Provede se pouze napoprvé Architektury Softwarových Systémů, FEL ČVUT Jan Sládek