Databáze II. 2. přednáška. Helena Palovská

Podobné dokumenty
Databáze I. 5. přednáška. Helena Palovská

Transakce a zamykání. Administrace MS SQL Serveru (NDBI039) Pavel Hryzlík

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Transakce a zamykání Jiří Tomeš

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Transakce. Ing. Marek Sušický, RNDr. Ondřej Zýka

Databáze II. 1. přednáška. Helena Palovská

Databázové systémy Cvičení 5.2

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.

Paralelní přístup k databázi

Databáze I. 1. přednáška. Helena Palovská

Databáze I. Přednáška 4

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Kapitola 6: Omezení integrity. Omezení domény

Analýza a modelování dat 6. přednáška. Helena Palovská

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

Fakulta elektrotechniky a informatiky Databázové systémy 2. Leden 2010 souhrn. Červené dobře (nejspíš), modré možná

Zápisování dat do databáze

PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Zotavení z chyb. Databázové systémy

Optimalizace dotazů a databázové transakce v Oracle

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

9. Transakční zpracování

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

KIV/ZIS cvičení 6. Tomáš Potužák

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

SQL - trigger, Databázové modelování

Jazyk SQL 3 - DML, DDL, TCL, DCL

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

Text úlohy. Systémový katalog (DICTIONARY):

Úvod do databázových systémů

8.2 Používání a tvorba databází

O Apache Derby detailněji. Hynek Mlnařík

Použití databází na Webu

Transakční zpracování Bezpečnost databází. Vladimíra Zádová, KIN, EF TUL- DBS 1

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např.

Základy databází. O autorech 17 PRVNÍ ČÁST. KAPITOLA 1 Začínáme 19

Databázové systémy. Integritní omezení. Vilém Vychodil. V. Vychodil (KMI/DATA1, Přednáška 9) Integritní omezení Databázové systémy 1 / 33

6. SQL složitější dotazy, QBE

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

Databázové systémy I

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

Semestrální práce z DAS2 a WWW

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Databázové systémy I. 7. Přednáška

Databázové systémy Cvičení 5.3

Nerelační databázové modely. Helena Palovská

Architektura SW pro transakční zpracování se skládá ze 3 modulů: - manažer dat - rozvrhovač - manažer transakcí

Operátory ROLLUP a CUBE

Databáze I. 4. přednáška. Helena Palovská

Replikace je proces kopírování a udržování databázových objektů, které tvoří distribuovaný databázový systém. Změny aplikované na jednu část jsou

Deklarativní IO shrnutí minulé přednášky

Databáze I. Přednáška 7

Databáze SQL SELECT. David Hoksza

Transakce Profinit. All rights reserved.

Analýza a modelování dat 3. přednáška. Helena Palovská

Obsah přednášky. Databázové systémy RDBMS. Fáze návrhu RDBMS. Coddových 12 pravidel. Coddových 12 pravidel

Analýza dat a modelování. Přednáška 3

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Marian Kamenický. Syntea software group a.s. marian.kamenicky. MFFUK Praha 2012/13

DUM 12 téma: Příkazy pro tvorbu databáze

Databázové systémy a SQL

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:

FRED & PostgreSQL. CZ.NIC, z.s.p.o. Jaromír Talíř <jaromir.talir@nic.cz>

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Roční periodická zpráva projektu

Marketingová komunikace. 2. a 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3aph)

4IT218 Databáze. 4IT218 Databáze

Programování a implementace Microsoft SQL Server 2014 databází

Embedded SQL v C/C++ úvod. Administrace Oracle Kateřina Opočenská

Jazyk SQL databáze SQLite. připravil ing. petr polách

Administrace Oracle. Práva a role, audit

1. Databázové systémy (MP leden 2010)

Optimalizace plnění a aktualizace velkých tabulek. Milan Rafaj, IBM

04 - Databázové systémy

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL)

Database engine (databázový stroj, databázový motor, databázové jádro) Systém řízení báze dat SŘBD. Typy SŘBD podle způsobu práce s daty

Audit DB. Referát. Vypracoval: Zdeněk Doležal MFF UK Praha 11/5/06

Transakční zpracování

Databázové systémy BIK-DBS

8. Zpracování dotazu. J. Zendulka: Databázové systémy 8 Zpracování dotazu 1

Databázové systémy úvod

Konceptuální modelování a SQL

30. března Je možné dle analýzy implementovat systém tak, aby splňoval požadavky zadavatele?

J. Zendulka: Databázové systémy 8 Zpracování dotazu Podstata optimalizace zpracování dotazu

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Relační databázový model. Vladimíra Zádová, KIN, EF, TUL- DBS

Databáze I. Přednáška 6

Oracle XML DB. Tomáš Nykodým

A5M33IZS Informační a znalostní systémy. Relační databázová technologie

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

10. Architektura klient/server a třívrstvá architektura

Transkript:

Databáze II 2. přednáška Helena Palovská palovska@vse.cz

SQL a aplikace

Program přednášky Řízení transakcí v SQL Integritní omezení v SQL Triggery a uložené procedury Zpracování množin záznamů

Řízení transakcí v SQL

Transakce Jednotka zpracování dat ACID Atomická: má se provést vše nebo nic. Pokud nelze dokončit, má se navrátit stav zpracovávaných dat před začátek transakce Udržuje databázi v konzistentním stavu. Před dokončením transakce mohou být data špatně neodrážejí fakta tak, jak jsou ale po potvrzení jsou správně. pokračování

Transakce Jednotlivé transakce jsou navzájem izolovány: nevědí o nepotvrzených stavech dat měněných jinou transakcí. Změny provedené potvrzenou transakcí jsou trvalé ACID zkratka: Atomicity, Consistency, Isolation, Durability pokračování

Řízení transakcí v SQL Určení začátku transakce BEGIN, event. BEGIN TRANSACTION režim může být nastaven tak, že jednotlivé příkazy jsou automaticky považovány za samostatnou transakci (obvykle při interaktivním zadávání příkazů) po ukončení předchozí transakce někdy automaticky začíná následující pokračování

Řízení transakcí v SQL Izolace transakcí závisí na nastavení TRANSACTION ISOLATION LEVEL Serializable úplná izolace Repeatable reads mohou nastat phantom reads (opakovaný SELECT vrací ev. jinou množinu řádků) Read committed čten je poslední potvrzený stav dat, během transakce se může měnit - non-repeatable reads Read uncommitted mohou být čtena nepotvrzená data dirty reads pokračování

Řízení transakcí v SQL Nastavení TRANSACTION ISOLATION LEVEL volíme v aplikaci, ovlivňuje následující transakce v této ní. Ovlivňuje, jaký zámek je prováděn na data čtená (příkazem SELECT) transakcí. Ovlivňuje, zda je pro transakci vedená dočasná kopie čtených dat. Ovlivňuje rychlost zpracování. pokračování

Řízení transakcí v SQL Zámky pro zápis implicitně provedeny na každá měněná data (INSERT, UPDATE, DELETE příkazy) lze provést explicitně SELECT... FOR UPDATE lze zamknout i celou tabulku či pohled LOCK TABLE (nezamyká pro čtení) pokračování

Řízení transakcí v SQL Ukončení transakce COMMIT požadavek na trvalé uložení změn pokud se transakce dostala do stavu chyby (návratový kód některého příkazu sdělil chybu), pak COMMIT není proveden, je nutný ROLLBACK ROLLBACK požadavek vrátit změny před začátek transakce pokud nastala chyba (viz výše) pokud stav dat nevyhovuje pokračování

Řízení transakcí v SQL Uvolňování zámků zámky pro zápis jsou uvolněny s ukončením transakce zámky pro čtení uvolňovány dle nastavení TIL: TIL zápis čtení čtení rozsahu Read Uncommitted S S S Read Committed C S S Repeatable Read C C S Serializable C C C S po příkazu, C po ukončení transakce

Deadlock uváznutí 1. transakce: 2. transakce: update ucty set stav=stav-100 where cislouctu=501; update ucty set stav=stav+100 where cislouctu=1230; update ucty set stav=stav+200 where cislouctu=1230; update ucty set stav=stav-200 where cislouctu=501;

Deadlock Uváznutí zámků mezi jednotlivými transakcemi SŘBD obvykle mají proces detekce deadlocků, násilně ukončí některou z transakcí dle vlastních pravidel

Strategie zamykání v aplikacích Proti riziku deadlocku pro všechny aplikace se určí pořadí tabulek a pořadí řádků v tabulkách, v transakcích se zamykají v data v tomto pořadí Pro serializaci V transakci nejprve zamknout všechny potřebné objekty Pak teprve manipulační příkazy

Integritní omezení v SQL

SQL constraints PRIMARY KEY, UNIQUE CHECK() NOT NULL DEFAULT FOREIGN KEY... REFERENCING

Entitní integrita Zajistit, aby žádný entitní výskyt nebyl v databázi dvakrát PRIMARY KEY sémantický, tj. business identifikátor např. rodné číslo umělý, nevýznamový např. automaticky generované ID nezajistí entitní integritu UNIQUE alternativní business identifikátor zajištění entitní integrity, když je primární klíč umělý

Integrita vztahů Aby žádný výskyt vztahu nebyl v databázi dvakrát. V tabulce vztahu: PRIMARY KEY (kombinace cizích klíčů na role) UNIQUE (když je použit umělý ID) Další business pravidlo pro daný vztah UNIQUE např. rozvrh (nelze jeden objekt na dvou místech najednou, nelze dva objekty na jednom místě najednou)

Doménová integrita Zajistit, aby vložené hodnoty odpovídaly doméně CHECK () např. CHECK (Známka IN (1,2,3) )

Pravidla pro jeden řádek Aby hodnoty v řádku tabulky splňovaly danou podmínku CHECK() např CHECK(ČasZačátku<ČasKonce) Pozor na podmínky týkající se systémového času v budoucnu bude čas jiný!

NOT NULL, DEFAULT Povinná hodnota např. jméno klienta počet objednaných kusů (v objednávce) Lze definovat dafaultní hodnotu například nezařazen

Referenční integrita Aby odkazy cizích klíčů nebyly do prázdna Omezuje vkládané hodnoty do slave klíče Pro mazání master klíčů (ON DELETE): RESTRICT (defaultní) CASCADE SET NULL Pro UPDATE master klíčů bývá obvykle RESTRICT http://krokodata.vse.cz/dm/refint

Triggery a uložené procedury

Co je trigger Spouštěč při nějakém typu události Databázový trigger může být spouštěn pokusem o INSERT pokusem o UPDATE pokusem o DELETE To, co trigger dělá, se považuje za součást transakce, která danou operaci přikazuje

Triggery Užití pro: Integritní omezení Vytváření odvozených datových objektů Repliky, archivy, vypočtená pole Akce ven E-mail, zaslání objednávky Množství možných triggerů na jednu tabulku je omezené, zatěžují transakce!

Struktura triggeru událost před/po tabulka INSERT UPDATE DELETE BEFORE AFTER (event. INSTEAD) (u UPDATE výběr polí) jméno pro referenci na vkládaný/měněný/mazaný řádek podmínka akce pro FOR EACH ROW STATEMENT

Integritní omezení triggerem - příklad Titul (ISBN, název, ) Svazek (signatura, titul Titul.ISBN,, umístění) Vypujcka (ctenar, svazek, od, do) Rezervace (ctenar, titul, od, do) Titul není možno rezervovat, když existuje volný svazek tohoto titulu.

pokračování příkladu událost: INSERT do tabulky Rezervace podmínka: existuje volný svazek EXISTS SELECT * FROM Svazek s LEFT OUTER JOIN Vypujcka v ON (v.svazek=s.signatura AND v.do IS NULL) WHERE s.titul=new.titul AND v.svazek IS NULL akce: vyvolat chybu, vrátit nepovolit málo efektivní

pokračování příkladu Svazek (signatura, titul Titul.ISBN,, umístění, je_volný:a/n) podmínka: existuje volný svazek EXISTS SELECT * FROM Svazek s WHERE s.titul=new.titul AND s.je_volný trigger na údržbu odvozeného pole je_volný

pokračování příkladu událost: UPDATE pole do v tabulce Vypujcky podmínka: - akce: u toho svazku napiš, že je volný UPDATE Svazek SET je_volny=t WHERE Svazek.signatura=NEW.svazek

pokračování příkladu událost: INSERT do tabulky Vypujcky podmínka: - akce: u toho svazku napiš, že není volný UPDATE Svazek SET je_volny=f WHERE Svazek.signatura=NEW.svazek

Uložené procedury Spustitelné programy spravované a prováděné databázovým serverem

Užití uložených procedur Jednotlivé typové SELECTy (proti nebezpečí neoptimalizovaných SELECTů) Zapouzdřené manipulace s daty Těla triggerů Údržbové procedury

Výhody uložených procedur Jsou spravované db serverem Přístupová práva Zkompilované, prováděné db serverem Rychlost, sdílení paměti Logika aplikace je na jediném místě Snadná údržba (opravy, aktualizace) Může programovat nejlepší programátor, jednou Lze omezit přístupová práva k datovým objektům Bezpečnost, spolehlivost přístupu

Nevýhoda uložených procedur Zatěžují DB server Proto jsou vhodné jsou hlavně pro datově intenzivní procesy Otázka, kam umístit aplikační logiku, musí být řešena s ohledem na rozmístění zátěže

Uložené procedury Napsané v SQL Od verze 1999 je SQL úplný programovací jazyk Proměnné Napsané v jiném programovacím jazyce Db server musí mít kompilátor toho jazyka

Databázové kurzory Databázový objekt poskytující přístup jednotlivým řádkům z množiny definované příkazem SELECT Funkcionalita poskytující pohyb kurzorem následující (řádek) event. předešlý, posun o n řádků... event. cyklický průchod všemi řádky...

Databázové kurzory Odlišné režimy pouze pro čtení/ pro zápis (v původní tabulce) statické/dynamické privátní/sdílené jen dopředné/pohyb tam a zpět po jednom řádku/dávkové čtení více řádků

Užití kurzorů Průchod množinou objektů k postupnému zpracovávání manipulaci nějakých dat Znovupoužití výsledku SELECTu uvážené kontrolované užití

API recordsets Objekt aplikace odstiňující od databázového kurzoru

SELECT prvních n řádků ŠRBD může efektivně optimalizovat

Hromadné UPDATE Riziko neúspěchu a nutnosti opakovat Volitelná strategie: po dávkách, s evidencí úspěšných zpracování

Konec