Velké databáze High Performance Databases Jan Géryk, Miroslav Křipač Vývojový tým IS MU Služby počítačových sítí, 15. 12. 2010 Témata přednášky 1. Databáze, historie 2. Databáze jako služba počítačové sítě 3. Architektury rozsáhlých databází 4. Distribuované databázové systémy Databáze, historie ● Co je databáze? ● Uspořádaná množina dat ● Nástroje pro manipulaci a správu ● Historie ● 50. léta, COBOL ● Síťové a hierarchické db ● 70. léta relační db, SQL ● Objektové db, kombinace ● DB jako mechanismus přístupu k datům - jednotné rozhraní pro efektivní vývoj a provoz malých aplikací - pouze jednouživatelský režim (více uživatelů => síťové FS) ● DB jako služba sítě - služba obsluhující aplikace přes vlastní jednotné rozhraní po síti - implementace vlastních síťových protokolů, ne sdílený síťový FS - server <-> více klientů = striktně klient – server pohled (klientem z hlediska databáze může být i aplikační server) - služba odstíněná od uživatelů dalšími vrstvami (aplikační, prezentační vrstvy) Databáze jako služba sítě ● Systém pro zpracování transakcí splňující: – Atomičnost ● Transakce jsou zpracovány jako celek – Konzistence ● Transakce uchovávají databázi v konzistentním stavu – Izolovanost ● Jednotlivé operace jsou prováděny izolovaně vůči ostatním trans. – Trvanlivost ● Data úspěšně ukončených transakcí musí být uložena trvanlivě Vlastnosti DB systémů ● Realizace – zámky – zamykání na úrovni řádků (ne tabulek, bloků) – vše zajišťuje databázový systém ● Kompromis: propustnost x konzistence – „read commited“ režim ● každý příkaz čte co bylo commitnuto ● ochrana před čtením dočasných dat (verze dat) ● během transakce může dojít ke změně hodnoty ● Deadlock – prevence, detekce, obcházení, neřešení – kultura programování – pořadí zámků Zpracování transakcí ● Principy spojení klienta s DB – aplikační rozhraní – klientské knihovny – spojení, session ● Způsoby zpracování požadavku – vyhrazený server – sdílený server ● Příklad: Architektura Oracle Database – Oracle instance + databáze – instance: SGA + procesy na pozadí Architektury rozsáhlých DB ● Ochrana před chybou (uživatel, HW, SW) – Uživatel: transakce (rollback), flashback (i DDL), PITR – HW: multiplexed redo logs, archive logs – SW: distribuované systémy ● Redo log – každá změna zapsaná na redolog disk – před ukončením commit – zápis samotných dat asynchronní (vyšší výkon) ● Undo records (undo/rollback segments) – zajišťuje verzování (původní data) – „before image“ u necommitnutých transakcí Vlastnost: dostupnost ● Výkon jedné operace x propustnost celku ● Omezení klasické role OS ● Přístup na disk, velké množství dat – vlastní systém cache dat = sdílená paměť (pers.) – přímý (raw) přístup k disku, asynchronní ● Provádění příkazů – prepare, execute, { fetch }, ... – optimalizace přístupu k datům na úrovni DB serveru – uložení dat – rychlý zápis x rychlý přístup, (indexy, ... ) ● In-memory DB – SQL dotazy, které se neprovádí Vlastnost: výkon ● Motivace: – vysoká dostupnost, transparentní vůči aplikacím – navýšení propustnosti, horizontální zvýšení výkonu ● „share-nothing“ clustery – standby databáze – single point of failure – In-memory databáze ● „share-everything“ clustery – on-line sdílení dat více instancemi (čtení i zápis) – „global cache“ - sdílení na úrovni paměti Distribuované DBS