Stromové struktury v relační databázi

Podobné dokumenty
SQL tříhodnotová logika

Stromové struktury v relační databázi

autoři: Rudolf Bayer, Ed McCreight všechny vnější uzly (listy) mají stejnou hloubku ADS (abstraktní datové struktury)

Stromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy

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

Složitosti základních operací B + stromu

Základní datové struktury III: Stromy, haldy

Stromy, haldy, prioritní fronty

Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce)

Algoritmizace prostorových úloh

Amortizovaná složitost. Prioritní fronty, haldy (binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost

Fyzické uložení dat a indexy

Tvorba informačních systémů

6. Fyzická (interní) úroveň databázového systému

6. Fyzická (interní) úroveň databázového systému

TÉMATICKÝ OKRUH Počítače, sítě a operační systémy

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

Vyvažování a rotace v BVS, všude se předpokládá AVL strom

Select sort: krok 1: krok 2: krok 3: atd. celkem porovnání. výběr nejmenšího klíče z n prvků vyžaduje 1 porovnání

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

3 Algoritmy řazení. prvku a 1 je rovněž seřazená.

Kapitola 11: Indexování a hešování. Základní představa

Dynamické programování. Optimální binární vyhledávací strom

ADT STROM Lukáš Foldýna

bin arn ı vyhled av an ı a bst Karel Hor ak, Petr Ryˇsav y 23. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

Základy algoritmizace c2005, 2007 Michal Krátký, Jiří Dvorský1/39

Volné stromy. Úvod do programování. Kořenové stromy a seřazené stromy. Volné stromy

Prioritní fronta, halda

Stromy. Jan Hnilica Počítačové modelování 14

Databázové systémy. Cvičení 6: SQL

Náplň. v Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění

SQL SQL-SELECT. Informační a znalostní systémy. Informační a znalostní systémy SQL- SELECT

Algoritmy a datové struktury

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

Databázové systémy úvod

NPRG030 Programování I, 2018/19 1 / :03:07

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

Binární vyhledávací strom pomocí směrníků Miroslav Hostaša L06620

Využití XML v DB aplikacích

Algoritmizace prostorových úloh

Programování 3. hodina. RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:

a) b) c) Radek Mařík

2 Datové struktury. Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

IB111 Úvod do programování skrze Python

Definice. B-stromu. B-strom řádu m je strom, kde každý uzel má maximálně m následníků a ve kterém platí:

Red Black strom (Red Black Tree) Úvod do programování. Rotace. Red Black strom. Rotace. Rotace

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

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

Časová a prostorová složitost algoritmů

Michal Krátký, Miroslav Beneš

R zné algoritmy mají r znou složitost

TGH07 - Chytré stromové datové struktury

Oracle XML DB. Tomáš Nykodým

Genetické programování

04 - Databázové systémy

vyhledávací stromové struktury

Databáze SQL SELECT. David Hoksza

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

TGH07 - Chytré stromové datové struktury

Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

Jednoduché datové struktury a stromy

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2.

Přijímací zkouška - informatika

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

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

Algoritmizace prostorových úloh

Databázové systémy Tomáš Skopal

Pokročilé haldy. prof. Ing. Pavel Tvrdík CSc. Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010

Datové struktury Úvod

Principy operačních systémů. Lekce 7: Souborový systém

TEORIE ZPRACOVÁNÍ DAT

Binární Vyhledávací Stromy, u kterých je. složitost operací v nejhorším. rovná O(log n)

Základy algoritmizace a programování

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

Profilová část maturitní zkoušky 2013/2014

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

Binární vyhledávací stromy pokročilé partie

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

Databáze v MS ACCESS

AVL stromy. pro každý uzel u stromu platí, že rozdíl mezi výškou jeho levého a pravého podstromu je nejvýše 1 stromy jsou samovyvažující

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

Algoritmy výpočetní geometrie

Lekce 6 - Správa prostorových dat

Vyhodnocování dotazů slajdy k přednášce NDBI001. Jaroslav Pokorný MFF UK, Praha

Hardware ZÁKLADNÍ JEDNOTKA

Informační systémy ve zdravotnictví. 6. cvičení

George J. Klir Vilem Vychodil (Palacky University, Olomouc) State University of New York (SUNY) Binghamton, New York 13902, USA

TimescaleDB. Pavel Stěhule 2018

Dynamické datové struktury II.

IAJCE Přednáška č. 9. int[] pole = new int[pocet] int max = pole[0]; int id; for(int i =1; i< pole.length; i++) { // nikoli 0 if (Pole[i] > max) {

Profilová část maturitní zkoušky 2017/2018

Reprezentace dat v informačních systémech. Jaroslav Šmarda

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

Zadání druhého zápočtového projektu Základy algoritmizace, 2005

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

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

Prioritní fronta, halda (heap), řazení

Transkript:

Stromové struktury v relační databázi

Stromové struktury a relační databáze Zboží Procesory Paměti Intel AMD DDR DIMM Pentium IV Celeron Duron Athlon http://interval.cz/clanky/metody-ukladani-stromovych-dat-v-relacnich-databazich/

Stromové struktury a relační databáze Konceptuální model

Stromové struktury a relační databáze Logický model

Stromové struktury a relační databáze Hledání všech uzlů z podstromu daného uzlu - rekurze void gettree(int parent) { ResultSet rsdata = statement.executequery( SELECT * FROM TREE WHERE Parent_Id= + parent); while (rsdata.next()) { System.out.println(); System.out.println(rsData.getString( Name )); parent = rsdata.getstring( Parent_Id ); gettree(parent); } }

Stromové struktury a relační databáze COMPONENTS ID NAME PARENT_ID LEFT RIGHT 1 Kategorie zboží 0 1 22 2 Procesory 1 2 15 3 Intel 2 3 8 4 Pentium IV 3 4 5 5 Celeron 3 6 7 6 AMD 2 9 14 http://interval.cz/clanky/metody-ukladani-stromovych-dat-v-relacnich-databazich/

Stromové struktury a relační databáze 2 Zboží 1 22 Procesory Paměti 15 16 21 Intel AMD 3 8 9 14 DDR DIMM 17 18 19 20 Pentium IV Celeron Duron Athlon 4 5 6 7 10 11 12 13 http://interval.cz/clanky/metody-ukladani-stromovych-dat-v-relacnich-databazich/

Stromové struktury a relační databáze Zboží 1 22 Procesory Paměti 2 15 16 21 Intel AMD 3 8 9 14 DDR DIMM 17 18 19 20 Pentium IV Celeron Duron Athlon 4 5 6 7 10 11 12 13 SELECT * FROM COMPONETS C1, COMPONENTS C2 WHERE C1.NAME = INTEL AND C2.LEFT > C1.LEFT AND C2.RIGHT < C1.RIGHT

Indexace pomocí B-stromů

Indexace jako prostředek optimalizace výkonu SELECT * FROM PERSON WHERE (GENDER=FEMALE) AND (AGE < 32) Dotaz tohoto typu bude vykonán mnohem rychleji, bude-li k dispozici index, jehož indexačním výrazem bude {GENDER, AGE}. Jednou z hodnot tohoto indexačního výrazu může být například dvojice <FEMALE, 27>. Teorie idexačních technik (vyhledávacích datových struktur) používá pojem klíč namísto pojmu indexační výraz. Nezaměňovat s klíčem tabulky! CREATE INDEX PERSON_GENDER_AGE ON PERSON (GENDER, AGE)

Indexace jako prostředek optimalizace výkonu Opatrně s disjunkcemi v podmínkách. SELECT * FROM PERSON WHERE (GENDER=FEMALE) OR (AGE < 32) DBMS by měl využít dvou klíčů a to {GENDER} a {AGE} Některé DBMS (např. PostgreSQL) nemusejí pro takovéto dotazy využívat efektivně existující indexy.

Princip B-stromu B-strom má definovánu: maximální kapacitu uzlu (max. počet záznamů v uzlu) minimální kapacitu uzlu (min. počet záznamů v uzlu) Záznamy uvnitř uzlu jsou setříděné podle hodnoty klíče.

Princip B-stromu max(min) maximální (minimální) počet záznamů v uzlu n... počet záznamů v databázi log m n K Každý uzel stránka v databázi (typicky stránka = sektor) Smysl minimalizace počtu přístupů do databáze Hloubka B-stromu v nejlepším případě (všechny uzly naplněny na 100%)... log max n v nejhorším případě (všechny uzly naplněny na min)... log min n

Vkládání do B-stromu Každý uzel stránka v databázi (typicky stránka = sektor) Při prvotní konstrukci stromu se uzly naplňují pouze částečně, 25% - 30% kapacity uzly se nechávají volné jako rezerva pro nově vkládané uzly Je-li uzel zcela zaplněn a je třeba do něj přidat další záznam, uzel se rozštěpí na 2 zaplněné z 50%. V takovém případě se musí přidat záznam i do příslušného uzlu o patro výš

Vkládání záznamu do B-stromu Triviální, není-li kapacita daného uzlu naplněna 50 100 10 20 40 30 50 100 Nově vkládaný klíč 10 20 30 40

Vkládání záznamu do B-stromu Je-li kapacita daného uzlu naplněna, musí dojít k rozdělení uzlů: 50 100 Separátor. Hodnota jeho klíče je medián z hodnot 10, 20, 40, 42 a 44 10 20 40 44 40 50 100 42 Nově vkládaný klíč 10 20 42 44

Vkládání záznamu do B-stromu Algoritmus: 1. Pokud uzel, do něhož máme přidat nový záznam, obsahuje méně záznamů, než je jeho kapacita (maximální počet záznamů, který se vejde do jednoho uzlu), vložíme nový záznam do tohoto uzlu při zachování uspořádání záznamů. 2. V opačném případě (uzel je naplněn na svou kapacitu), rozdělíme stávající uzel na dva uzly. a. Nalezneme separační záznam jako medián množiny klíčů, která je tvořena klíči záznamů existujících v děleném uzlu plus klíče vkládaného uzlu. b. Záznamy s klíči menšími než klíč separačního záznamu necháme v původním uzlu, záznamy s klíčem větším než klíč separačního záznamu uložíme do nového uzlu (zařazeného napravo od původního uzlu). c. Separační záznam vložíme do rodičovského uzlu, který se zase může rozlomit, pokud jeho kapacita již byla naplněna. Pokud uzel nemá rodiče (t.j. byl kořenem B-stromu), vytvoříme nový kořen nad tímto uzlem (dojde ke zvětšení hloubky stromu).

Rušení záznamu v listu B-stromu Rušení záznamu v listu B-stromu je jednodušší než rušení záznamu v nelistovém uzlu. Pokud po zrušení záznamu klesne počet záznamů pod minimální kapacitu a sourozenecký uzel má více záznamů, než je minimální kapacita uzlu, přesuneme záznam ze sourozeneckého uzlu. Klesne-li počet záznamů v obou sourozeneckých uzlech pod minimální kapacitu uzlu, uzly spojíme.

Rušení záznamu v listu B-stromu Přesun uzlu 40 50 100 Min... 2 uzly Max... 4 uzly 10 20 30 42 44 30 50 100 Rušený klíč 10 20 40 44

Rušení záznamu v listu B-stromu Spojení uzlů 40 50 100 Min... 2 uzly Max... 4 uzly 10 20 42 44 50 100 Rušený klíč 10 20 40 44

Rušení záznamu v nelistovém uzlu B-stromu Rušený klíč 40 50 100 Min... 2 uzly Max... 4 uzly 10 20 30 42 44 48 42 50 100 Klíč označený? bude nejmenší klíč fialového podstromu. Může následovat: spojení uzlů přesun od sourozence 10 20 30? 44 48

Rušení záznamu v nelistovém uzlu B-stromu Tento přístup znamená, že při rušení uzlu smažeme rušený klíč a poté uvádíme strom znovu do vyváženého stavu. Není to jediný možný algoritmus, existují i jiné.