design databáze - profinit · uml – notace dle standardu uml, použita ve všechny nástroje...
TRANSCRIPT
2 2
Návrh databáze
Čtyři kroky
Shromáždění business požadavků
Konceptuální model
Logický model
Fyzický model
Modelování od začátku nebo rozvoj stávajících systémů
Nutnost začlenění okolních systémů (prostředí)
Vazba na logický model organizace
Vazba na existující datové modely
3 3
Shromáždění business požadavků
Cíle
Pochopit business doménu
Porozumět potřebám a požadavkům zadavatelů a uživatelů
Ověřit pochopení zadání
Prostředky
Interview
Studium a dokumentace systémů
Spolupráce s experty v business oblasti
Informace o organizační struktuře a další dokumenty
Data assesment
Review stávajících systémů a procesů
Výstup
Prioritizovaný seznam požadavků
Dokument popisující doménu (byznys slovník)
Data-flow diagram
4 4
Data-flow diagram
Data-flow diagram popisuje
S jakými daty se pracuje
Kdo data vytváří
Kdo a jak data zpracovává (modifikuje)
Kde jsou data uložena
Kdo data používá
Interface na úrovni dat
Použití
Datové toky na různých úrovních granularity
Podnikové toky dat (obchodní procesy)
Toky dat na technické úrovni
Popisy ETL procesů
Popisy integračních procesů
Ověření
Všechna data jsou definována
Persistentní data jsou uložena
Každá data mají zdroj
Pro každá data existuje odběratel
5 5
Data-flow diagram - příklad
CUSTOMER_ORDER
Invoice
Book Shipment
[PAYMENT]
[SHIPMENT]
[BOOK_ORDER]
Book Supplier
Book Supplier
Book Supplier
1.1.1
Place Orders
+
1.1.2
Receive Orders
+
1.1.3
Process Invoices
+
Decomposition Level 2
CUSTOMER
databáze/ soubor
funkce
datová entita/ business object
vstup/výstup
7 7
Seznam požadavků
ID požadavku
Krátký popis
Podrobné vysvětlení
Oblast / systém
Vazba na další požadavky
Zadavatel
Priorita
Funkční / nefunkční požadavky
8 8
Konceptuální model
Cíle
Určit entity a jejich atributy
U atributů určit jejich hodnoty a vlastnosti
U entit určit jejich potenciální klíče (identifikátory)
Identifikovat vazby mezi entitami
Kardinalita relace
Jméno relace
Popis (role)
Výstupy
ER diagram
Formální ověření E/R diagramu
Mezi každými dvěma entitami je maximálně jedna relace.
Neexistuje cyklická závislost.
Entity s relací typu 1:1 zřejmě budou tvořit pouze jednu entitu.
Žádná entita nemá atribut, který je kandidátním klíčem jiné entity.
Nepřímé relace jsou asi zbytečné.
11 11
Notace
Mnoho standardů a dodavatelských specifik.
UML – notace dle standardu UML, použita ve všechny nástroje podporující UML.
Information Engineering – standard používaný v mnoha nástrojích. Existuje několik verzí. Obecně, entity jsou obdélníka a relace jsou linky s různými zakončeními.
IDEF1X – standardní notace pro modelování relací a entit. Symboly označují kombinaci volitelnosti a kardinality entity.
Barker – Vytvořena Richardem Barkerem. Používaná zejména case nastroji Oracle. Speciální notace pro dědičnost, vlastní notace pro násobnost a speciální značky pro atributy.
Filtered IE – pouze v Embarcadero. Nezobrazuje cizí klíče.
Entity/Relationship – Sybase specific, Entity/Relationship je speciální verze IE notace.
Merise – používá asociace místo relací.
Crow's Feed – Jedna z verzí IE notace, tuto notaci používá FSLDM.
12 12
Násobnost a volitelnost
Nejvíce jedno auto
Právě jedno auto
Libovolný počet aut
Alespoň jedno auto
CAR
CAR
CAR
CAR
14 14
Notace - příklady
Not Used because not
needed
Allowed
multiplicities
Not Used
Used
N/A substituted by
15 15
Pravidla pro čtení relací
Assertion 2: "Each LINE ITEM must be part of exactly one ORDER "
Assertion 2: "Each ORDER may be composed of one or more LINE ITEMS "
Reading direction
ORDER
Order number
Order date
LINE ITEM
Line number
Quantity
Price
Delivery date
composed of
1part of
0..*
17 17
Vytvoření logického modelu
Cíle Vytvořit platformově nezávislý logický datový model
Postup Převést entity na tabulky Rozhodnout, jak se bude pracovat se složitými atributy Použít vhodné patterny Rozhodnout, jak se bude pracovat s atributy nabývajícími více hodnot Výběr primárních klíčů Převést binární relace (závislosti) typu 1:n na cizí klíče Vyřešit n-ární relace a relace typu n:n Rozhodnout o způsobu reprezentace subtypů Normalizace modelu
Výstup Logický datový model
18 18
Kritéria pro výběr primárního klíče
Primární klíč:
musí mít vždy definovanou hodnotu (not null),
musí mít stálou hodnotu (během celého životního cyklu řádku),
musí být co možná nejmenší,
nesmí obsahovat žádné zakódované informace,
musí být přístupný pro všechny uživatele.
Umělý klíč
Nevýhody: přidává sloupec do tabulky (s indexem), hodnoty nemají význam pro uživatele
Výhody: snadná implementace rozhraní, uniformní řešení
19 19
Vazba na objektové modelování
Object-relational impedance mismatch
Declarative vs. imperative interfaces
RM – data jako interface
Schema bound
RM – Sloupec k jedné tabulce, tabulka do schématu, OOM – dědičnost objektů
Access rules
RM – relační algebra, OOM – volnější a složitější konstrukty
Relationship between nouns and actions
OOM - úzká vazba mezi objekty a operacemi
Uniqueness observation
RM – identifikace na základě klíče s jasným obsahem
Normalization
OOM – nepoužívá se normalizace
Schema inheritance
RM – nepoužívá se
Structure vs. Behaviour
OOM – údržba, srozumitelnost, upravovatelnost, rozšiřitelnost, reuse, RM – logická integrita, efektivita, fault-tolerance
Set vs. graph relationships
21 21
Převod závislosti na cizí klíč
A U T H O R
A U T H O R I D
L A S T N A M E
F I R S T N A M E
P H O N E N U M B E R
A D D R E S S
A U T H O R
A U T H O R I D
L A S T N A M E
F I R S T N A M E
P H O N E N U M B E R
A D D R E S S
P I C T U R E P I C T U R E
P I C T U R E I D
F O R M A T
B Y T E S I Z E
P I X E L W I D T H
P I X E L H E I G H T
P I C T U R E I D
F O R M A T
B Y T E S I Z E
P I X E L W I D T H
P I X E L H E I G H T
A U T H O R I D
22 22
Relace typu n:n
BOOK
BOOK ID
TITLE
CATEGORY
QUANTITY SOLD
AUTHOR
AUTHOR ID
LAST NAME
FIRST NAME
PHONE NUMBER
ADDRESS
AUTHOR-BOOKBOOK
BOOK ID
TITLE
CATEGORY
QUANTITY SOLD
AUTHOR
AUTHOR ID
LAST NAME
FIRST NAME
PHONE NUMBER
ADDRESS
Associative entity
23 23
Rozhodnutí o reprezentaci dědičnosti
Několik používaných možností
V jedné tabulce: L-schéma
Ve více tabulkách
Parent
pouze ID
Společné atributy
Child
Všechny atributy
Jenom specifické atributy
24 24
První normální forma
Tabulka je v první normální formě, když každý sloupec obsahuje právě jeden atomický datový typ, který již nemá vnitřní strukturu z pohledu businessu.
Business pohled je podstatný pro rozhodnutí o první normální formě.
25 25
Vytvoření fyzického modelu
Cíle Vytvořit fyzický model s ohledem na specifika aplikace a použitý typ databáze, použitý
hardware
Postup Tabulky (jmenné konvence)
Datové typy
Vytvoření procesní matice
Rozhodnutí o struktuře tabulek
Rozhodnutí o primárním klíči (indexu)
Implementace business pravidel - constraints
Indexy, partitioning,
Denormalizace, uložení redundantních dat, spojení tabulek
Fyzické uložení tabulek
Výstup Fyzický datový model
Implementační skripty
26 26
Tabulky (jmenné konvence)
Case sensitive/case insensitive servery
Omezení délky jména tabulek (Oracle 30 znaků)
Omezení délky jmen sloupců
Omezení na jmenné prostory (tabulky, view, indexy, procedury, …)
Porozumění modelu
Datové tabulky
Číselníky
Logy
Uživatelské tabulky
Natural join
27 27
Datové typy
Domain – uživatelské datové typy + lepší porozumění
+ zajištění konzistence
- nároky na údržbu
Char, varchar, nvarchar, …
Numerické datové typy int, tinyint, bigint, numeric(p,s), …
Datum – rozsah, přesnost, způsob práce Timestamp – je to čas nebo není
Binary, image, text, memo, …
Boolean - raději "column_name" CHAR(1) default 'A' not null constraint
CKC_check_name check ("column_name" in ('A','Y'))
Identity, Autoincrement
NULL, Not null, Default value
Speciální datové typy
29 29
Rozhodnutí o struktuře tabulek
Cíle:
Minimalizovat velikost
Použít optimální přístupové metody
Standardní tabulka
Insert, Delete, Update, Scan, Index
Index-organized tables (Clustered index)
+ menší
+ rychlejší přístup po indexu
- náročnější insert, delete (update)
Oracle – novější implementace, podpora 7x24
30 30
Blok 1001
Bennet Chet 1421,1 1007
Karsen Kit 1876,4 1306
Smith Ade 1242,3 1062
Blok 1007
Bennet Chet 1421,1 1132
Fox John 1317,3 1133
Hunter Leon 1213,1 1127
Blok 1306
Karsen Kit 1876,4 1198
Larn Pard 1451,2 1199
Peters Mary 1856,4 1200
Blok 1132
Bennet Chet 1421,1
Burns Saly 1409,4
Claim Dave 1129,3
Dull Rob 1409,1
Blok 1212
Larry John 254 A3
Jetkins Paul 244 C3
White Susan 156 A1
Blok 1213
Hunter Leon 124 A3
Green Mitch 125 B1
Smith Ade 156 A3
Blok 1421
Bennet Chet 101 B2
Ringer John 144 C1
Blok 1409
Dull Rob 128 B1
Greene Joe 142 A2
Port Joe 156 C3
Burns Saly 128 A1
Blok 1133
Fox John 1317,3
Greane David 1876,4
Green Mitch 1213,2
Greene Joe 1409,2
Blok 1127
Hunter Leon 1213,1
Jetkins Paul 1212,2
klíč řádek blok
kořen vnitřní blok indexu listová úroveň indexu data
INSERT INTO user VALUES (′Burns′, ′Saly′,128,′A1′)
B-tree index – příklad
31 31
Blok 1001
Bennet Chet 1007
Karsen Kit 1306
Smith Ade 1062
Blok 1007
Bennet Chet 1132
Fox John 1133
Hunter Leon 1127
Blok 1306
Karsen Kit 1198
Larn Pard 1199
Peters Mary 1200
Blok 1132
Bennet Chet 101 B2
Burns Saly 128 A1
Claim Dave 123 A1
Blok 1133
Fox John 100 A0
Greane David 111 E3
Green Mitch 125 B1
Greene Joe 156 C3
Blok 1127
Hunter Leon 122 A3
Jetkins Paul 124 A5
klíč blok
kořen vnitřní blok indexu listová úroveň indexu
INSERT INTO user VALUES (′Burns′, ′Saly′,128,′A1′)
Clustered index – příklad
32 32
Implementace business pravidel
Domain integrity - Check
Na úrovni sloupce Null/Not null
Default
Check (format)
Na úrovni řádku
Entity integrity - primary key
implementováno unikátním indexem na not null sloupcích
záznam v katalogu
Unikátnost hodnot
implementováno unikátním indexem
33 33
Referenční integrita
Implementace foreign key
Deklarativní definice
Použití triggerů
Použití uložených procedur
Kód aplikace
Co se stane když
Primární klíč se přidá/změní/zruší
Cizí klíč se přidá/změní/zruší
34 34
Typy referenčních integrit
Constraint Cascade update / delete
Cascade Null
Cascade Default
Automatic insert
Bez omezení
Restriktivní
Insert PK Zachování PK Zachování PK Zachování PK Zachování PK Zachování PK Zachování PK Zachování PK
Insert FK Pouze existující hodnoty PK
Pouze existující hodnoty PK
Existující hodnoty PK nebo Null
Existující hodnoty PK nebo Default
Existující hodnoty nebo přidá řádek s PK
Bez omezení (sirotci)
Pouze existující hodnoty PK
Update PK Pouze pokud nemá vazbu
Změní i odpovídající FK
Odpovídající FK změní na Null
Odpovídající FK změní na Default
Pouze pokud nemá vazbu
Bez omezení (sirotci)
Není povoleno
Update FK Jen na existující hodnoty
Jen na existující hodnoty
Jen na existující hodnoty PK nebo Null
Jen na existující hodnoty PK nebo Default
Existující hodnoty nebo přidá řádek s PK
Bez omezení (sirotci)
Jen na existující hodnoty
Delete PK Pouze pokud nemá vazbu
Delete všech řádků s odpovídajícím FK
Odpovídající FK změní na Null
Odpovídající FK změní na Default
Pouze pokud nemá vazbu
Bez omezení (sirotci)
Není povoleno
Delete FK Bez omezení Bez omezení Bez omezení Bez omezení Bez omezení Bez omezení Bez omezení
35 35
Důsledky použití integritních omezení
+ zaručují konzistentní model
- zvyšují výpočetní složitost
i v případě, kdy nedochází ke změnám (Oracle not null)
- komplikují údržbu
povolení/zakázání ověřování integritních omezení
36 36
Denormalizace
Partitioning
Horizontální
Vertikální
Uložení vypočtených hodnot
Eliminace nákladných joinů
37 37
Horizontální rozdělení tabulek
Přístupy pouze na část tabulky
Příklady:
Aktivní a neaktivní položky
Historické záznamy
Možnosti
Rozdělení tabulek
Přidání tabulky (duplicitní záznamy)
Partitioning
Synchronizace
Table partitioning
Triggery
Aplikační logika
38 38
Rozdělení tabulky
Rozdělení tabulky
Výhody
práce s menším množstvím dat
méně problémů se zamykáním
lepší řízení indexů
možnost detailní optimalizace
Nevýhody
nutnost synchronizace – triggery, aplikační logika
Náročnější údržba
Table
Part 1
Part 2
Part 3
View Table
Part 1
39 39
Partitioning
Transparentní z pohledu aplikace
Rozdělení dle daného rozsahu nebo hodnot
Dynamicky podle hodnot
Dynamicky vytvářeno pro každý měsíc
Nejčastější použití
Podle hash klíče (určuje se pouze počet partitions)
Více úrovňový partitioning
Podle času, podle pobočky
Možnost individuálního řízení partition
Omezený počet partition podle implementace
Part 1
Part 2
Part 3
Part 4
40 40
Vertikální rozdělení tabulek
Přístupy pouze na některé sloupce tabulky
Příklady:
Bloby, obrázky, popisy
Možnosti
Rozdělení tabulek
Přidání tabulky (duplicitní záznamy)
Vytvoření indexu
Synchronizace
Triggery
Aplikační logika
41 41
Rozdělení tabulky
Rozdělení tabulky
Výhody
práce s menším množstvím dat
méně problémů se zamykáním
možnost optimalizace
Nevýhody
nutnost synchronizace – triggery, aplikační logika
náročnější údržba
Table
Part
1
Part
2
Part 3
View Table
Part 1
42 42
Přidání indexů
Transparentní z pohledu aplikace
Jeden clustrovaný index
Libovolný počet dalších indexů
Automatická údržba
Pokrývající dotazy
Nároky na diskový prostor
Snížení výkonu pro OLTP aplikace
Index 1
Index 2
43 43
Uložení vypočtených dat
Přidání sloupce
Přidání tabulky
Synchronizace
Trigerry
Uložené procedury
Aplikační logika
Nutno zavést procedury pro údržbu a resynchronizaci
44 44
Materializovaná view
Transparentní z pohledu aplikace
Automatické řízení výpočtu view
Nákladné výpočty, nutnost možnosti řízení výpočtů asynchronně
Duplicitní uložení dat
nároky na diskový prostor
45 45
Eliminace nákladných joinů
Neustálé dotahování hodnot z číselníků
Omezení datových serverů (Sybase třicet tabulek v jednom joinu)
Suptype/supertype vazba
Možnosti
Redundantní data
Spojení tabulek
46 46
Fyzické uložení tabulek
Cíl
Distribuce zátěže na co nejvíce fyzických disků
Rozložení tabulek/indexů na disky
Možnosti datových serverů (tablespace, segment)
Možnosti hardware (SAN, NAS, diskové pole)
Pouze RAID 1+0
Vazba na počet procesorů
Možnosti paralelního zpracování datového serveru
47 47
Indexy – přístupové metody
Typy indexů
B-tree
Clustered/nonclustered
Bitmapové indexy
Standardní index
Hledání podle indexu
Scan nejnižší úrovně
Dotaz pokrytý indexem
Ignorování indexu – scan dat
Clustered index
Hledání podle indexu
Scan dat od nalezeného řádku
Scan nejnižší úrovně (scan dat)
48 48
Použití indexů
Select
Pokrývající query
Group by
Order by
Join
Nepoužívat indexy pro malé tabulky
Selektivita indexů
50 50
Tabulka – relační uložení dat
Struktura tabulky
Datové bloky
ID NUMBER
NAME VARCHAR2(50 BYTE)
DESCRIPTION VARCHAR2(500 BYTE)
QTY NUMBER
COLOUR VARCHAR2(20 BYTE)
PRICE NUMBER
PROVIDER VARCHAR2(40 BYTE)
WIDTH NUMBER
HEIGHT NUMBER
DEPTH NUMBER
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
ID NAME DESCRIPTION QTY COLOUR PRICE PROVIDER WIDTH HEIGHT DEPTH
51 51
Tabulka – data uložená po sloupcích
Struktura tabulky
Datové bloky
ID NUMBER
NAME VARCHAR2(50 BYTE)
DESCRIPTION VARCHAR2(500 BYTE)
QTY NUMBER
COLOUR VARCHAR2(20 BYTE)
PRICE NUMBER
PROVIDER VARCHAR2(40 BYTE)
WIDTH NUMBER
HEIGHT NUMBER
DEPTH NUMBER
ID ID ID ID ID ID ID ID ID ID
ID ID ID ID ID ID ID ID ID ID
ID ID ID ID ID ID ID ID ID ID
ID ID ID ID ID ID ID ID ID ID
ID ID ID ID ID ID ID ID ID ID
ID ID ID ID ID ID ID ID ID ID
ID ID ID ID ID ID ID ID ID ID
ID ID ID ID ID ID ID ID ID ID
NAME NAME NAME NAME NAME NAME NAME NAME NAME NAME
NAME NAME NAME NAME NAME NAME NAME NAME NAME NAME
NAME NAME NAME NAME NAME NAME NAME NAME NAME NAME
NAME NAME NAME NAME NAME NAME NAME NAME NAME NAME
NAME NAME NAME NAME NAME NAME NAME NAME NAME NAME
NAME NAME NAME NAME NAME NAME NAME NAME NAME NAME
NAME NAME NAME NAME NAME NAME NAME NAME NAME NAME
NAME NAME NAME NAME NAME NAME NAME NAME NAME NAME
COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR
COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR
COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR
COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR
COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR
COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR
COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR
COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR
QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY
QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY
QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY
QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY
QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY
QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY
QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY
QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY
52 52
Data uložená po sloupcích
SELECT Count(*) FROM sale where color = ′Green′
SELECT Count(*) FROM sale where color in (′Green′, ′Red′)
53 53
Data uložená po sloupcích
SELECT SUM(qty) FROM sale
(2 * 64) + (3 * 32) + (2 * 16) + (1 * 8) + (3 * 4) + (2 * 2) + (3 * 1) = 283
54 54
Bitmapové indexy
Rychlé pro sloupce s malou kardinalitou
Rychlé pro operace na málo sloupcích
Složitý update
Zamykání a rebuild velkých bloků
Pomalé pro dotaz na jeden konkrétní řádek
55 55
Metody ukládání bitmapových indexů
Samé nuly nebo jedničky
Bloky se neukládají – pouze indikátor jejich existence
Do 20% nul nebo jedniček
Data se kódují jako souvislé množiny hodnot
Mezi 20% a 80% jedniček
Ukládá se skutečná mapa hodnot
56 56
Typy sloupcových indexů
Mnoho různých typů
Více indexů na jednom sloupci
Bitový index pro sloupce s malou kardinalitou
Bitový index pro sloupce s velkou kardinalitou a malou selektivností
Indexy pro sloupce s velkou kardinalitou G-Array (příbuzný B-tree)
Prosté komprimované uložení dat (pro textové řetězce)
Speciální indexy pro čas a datum
Indexy pro joiny, porovnání a další operace
57 57
Sybase IQ – uložení dat a indexů
Indexy jsou už data
Nízké náklady na uložení dat
Rychlé zpracování malého množství dat
Vel
iko
st d
atab
áze
(GB
)
Čistá data Tradiční RDBMS
CBRD
500
450
400
350
300
250
200
150
100
50
0
Indexy Sumace Čistá data
58 58
Co si zapamatovat
Jaké jsou hlavní kroky při návrhu datového modelu
Co to je konceptuální model a co obsahuje
Co je cílem sběru byznys požadavků při vytváření konceptuálního modelu
Co je logický model a co obsahuje
Jaké aktivity je nutné provést při převodu konceptuálního datového modelu na logický datový model
Jaké požadavky je potřeba brát v úvahu při výběru primárních klíčů
Jaké jsou hlavní rozdíly mezi relačním a objektově orientovaném modelování
Kdy a proč se vytváří fyzický datový model
Které aktivity je nutné provést při převodu logického datového modelu na fyzický datový model
Co to je denormalizace
Jaké typy denormalizace znáte
Jaký je rozdíl mezi strukturou tabulky s klastrovaným a neklastrovaným indexem
K čemu slouží indexy a pro jaké přístupové metody k datům se používají
Jak vypadají bitmapové indexy
Co to je sloupcové uložení dat (sloupcové indexy)