netezza – to pravé řešení pro analytický datový sklad – technický pohled na řešení...
DESCRIPTION
Netezza – to pravé řešení pro analytický datový sklad – technický pohled na řešení Martin Pavlík 23. Listopadu 2011. Masivní paralelní architektura “ Rozděl a panuj ”. MPP architektura Koncept “Shared Nothing” Rozdělení práce na několik menších úloh - PowerPoint PPT PresentationTRANSCRIPT
Netezza
– to pravé řešení pro analytický datový sklad
– technický pohled na řešení
Martin Pavlík23. Listopadu 2011
• MPP architektura– Koncept “Shared Nothing”– Rozdělení práce na několik menších úloh
• Velká úloha je rozdělena vertikálně do série menších úloh• Menší úlohy běží paralelně / naprosto nezávisle• Pro každou menší úlohu je přiděleno stejné množství fyzických zdrojů• Komunikace mezi jednotlivými úlohami je jen na začátku a konci
• Přínosy– Obrovské úlohy jsou vykonány ve významně kratším čase– Maximální využitelnost zdrojů
Masivní paralelní architektura“Rozděl a panuj”
Massively Parallel Intelligent Storage
1
2
3
920
ŸŸŸ
Network FabricSMP Host
Front End
Netezza TwinFin Appliance
High-Speed Loader/Unloader
ODBC 3.XJDBC Type 4
OLE-DBSQL/92
Execution Engine
Execution Engine
SQL Compiler
Query Plan
Optimize
Admin
SQL Compiler
Query Plan
Optimize
Admin
Source Systems
Client
High Performance
Loader
3rd PartyApps
DBA CLI
ETL Server
SOLARIS
LINUX
HP-UX
AIX
WINDOWS
TRU64
High-PerformanceDatabase EngineStreaming joins,
aggregations, sorts
S-Blade
Processor &
streaming DB logic
S-Blade
Processor &
streaming DB logic
S-Blade
Processor &
streaming DB logic
S-Blade
Processor &
streaming DB logic
High-PerformanceDatabase EngineStreaming joins,
aggregations, sorts
S-Blade
Processor &
streaming DB logic
S-Blade
Processor &
streaming DB logic
S-Blade
Processor &
streaming DB logic
S-Blade
Processor &
streaming DB logic
Execution Engine
Execution Engine
Massively Parallel Intelligent Storage
1
2
3
920
ŸŸŸ
Network FabricSMP Host
Front End
Netezza TwinFin Appliance
High-Speed Loader/Unloader
SQL Compiler
Query Plan
Optimize
Admin
SQL Compiler
Query Plan
Optimize
Admin
SQL
1 2 3
1 2 3
1 2 3
1 2 3
Snippets
1 2 31 2 3
SQL
Source Systems
Client
High Performance
Loader
3rd PartyApps
DBA CLI
ETL Server
SOLARIS
LINUX
HP-UX
AIX
WINDOWS
TRU64
Zpracování toku dat jednotkou S-Blade
Jádro (Core) FPGA Jádro CPU
Dekomprese dat
ProjekceSelekce,
AutorizaceKomplexní ∑
Joiny, Aggr, atd.
DatováCache
Select sex, age, count(*)From MultiBillionRowTable
Where BirthDate < ’01/01/1967’ And PostCode like ’SW%’
Group by sex, age;
Každý S-Blade obsahuje 8 n-tic s vlastním:• Diskem• Datovou cache• Jádrem FPGA jednotky• Jádrem CPU
High-PerformanceDatabase EngineStreaming joins,
aggregations, sorts, etc.
S-Blade
Processor &
streaming DB logic
S-Blade
Processor &
streaming DB logic
S-Blade
Processor &
streaming DB logic
S-Blade
Processor &
streaming DB logic
Asymmetric Massively Parallel Processing™
Massively Parallel Intelligent Storage
1
2
3
920
ŸŸŸ
Network FabricSMP Host
Front End
Netezza TwinFin Appliance
High-Speed Loader/Unloader
SQL Compiler
Query Plan
Optimize
Admin
SQL Compiler
Query Plan
Optimize
Admin
1 2 3
1 2 3
1 2 3
1 2 3
Consolidate
Execution Engine
Execution Engine
ODBC 3.XJDBC Type 4
OLE-DBSQL/92
Source Systems
Client
High Performance
Loader
3rd PartyApps
DBA CLI
ETL Server
SOLARIS
LINUX
HP-UX
AIX
WINDOWS
TRU64
Specifikace IBM Netezza 1000-12
Kapacita (uživatelská data): 128 TBScan rate: 144 TB/hLoad Speed: 0.5 TB/h
Počítáme s kompresním poměrem 1:4
S-Blade / SPU / Snippet Processing Unit
Propojení S-Blades a disků
• 5 ze 6 S-Blades vlastní 8 disků
• Každý S-Blade má v sobě:
• 8 jader CPU• 8 jader FPGA
• => CPU:FPGA:disk je 1:1:1
• 6. S-Blade vlastní pouze 6 disků
• 2 jádra CPU a FPGA jsou nevyužitá
• Protože 2 disky zůstavají volné do zálohy
Níže uvedené údaje platí pro half-rack systém IBM Netezza 1000-6, který má 6 S-Blades
• V systému jsou použity 1TB disky– Ty jsou rozděleny na 1/3
• Všechna uživatelská data jsou replikována z Primary do Mirror oblasti• Výpadek disku je transparentní pro uživatelské dotazy
– Na Spare (volný) disk jsou automaticky zreplikovaná data„nemocného“ disku
• S využitím odpovídajícího disku z páru (jen se otočí Primary a Mirror oblasti)
Disk mirroring & řešení výpadku disku
• Disky, které patřily „nemocné“ jednotce S-Blade jsou rovnoměrně rozdistribuovány zbývajícím jednotkám S-Blade
• Read-only dotazy jsou automaticky restartovány• Všechny zápisové operace jsou přerušeny, označeny jako aborted a
spustí se znovu od místa posledního checkpointu
Řešení výpadku jednotky S-Blade
• Data jsou na jednotlivé disky (a potažmo tedy i jádra CPU a FPGA) distribuována pomocí hashování dle tzv. distribučního klíče
– Rovnoměrná distribuce je základem vysoké výkonnosti
• Implicitní distribuce je RANDOM
Distribuce dat a její dopad na výkonnost
• Data jsou na disk ukládána po tzv. extentech
– Má velikost 3 MB
• Pro sloupce tabulek jsou udržovány tzv. zónové mapy
– Udržují informace o minimální a maximální hodnotě v daném extentu
Využití tzv. zónových map
Jak mohou zónové mapy omezit čtení z disku
Cust_ID = 300
Ext1
Ext3
Vysoká selektivita je především u tabulek, které jsou setřízené
podle atributu z where klauzule
Clustered Based Tables a jejich přínos
• Jsou řešením pro časté situace, kdy se v …• Ve WHERE klauzulích• V JOINech …… používá více než 1 atribut
Data jsou v tabulce seřazena dle křivky vyplňující Hilbertův prostor
2 atributy
3 atributy
2 hodnoty 4 hodnoty 8 hodnot
….
….
1234
A B C D
ZM I ZM II A 2A4
A – B 3 – 4 *B4
B3
A3
A2
A – B 1 – 2 * *A1
B1
B2
C2
C – D 1 – 2 *C1
D1
D2
D3
C – D 3 – 4C3
C4
D4
Clustered Base Tables – ilustrační příklad
Myšlenka tzv. Clustered base tables je založena na křivce vyplňující hilbertův
prostor
Implicitní výkonnost je vysoká
Zónové mapy Clustered Base Tables
Koncepty, které posouvají výkonnost ještě o kus dál
Výkonnost systému je extrémně vysoká i bez nich
Masivní paralelismus a FPGA
Distribuční klíče
sloupce
Původní záznam je označen jako smazaný
Záznam je INSERTován
Do tabulky je vložen nový záznam Záznam je UPDATEován
I „změněný“ záznam je označen jako smazaný Záznam je DELETEován
Realizace transakcí v Netezze
Děkuji za pozornost