Blake A Data Warehouse Approach

35
A Data Warehouse Approach to Analyzing All the Data All the Time Bill Blake Netezza Corporation April 2006

Transcript of Blake A Data Warehouse Approach

Page 1: Blake A Data Warehouse Approach

A Data Warehouse Approach to Analyzing All the Data All the Time

Bill BlakeNetezza Corporation

April 2006

Page 2: Blake A Data Warehouse Approach

2

Sometimes A Different Approach Is UsefulSometimes A Different Approach Is Useful

• The challenge of scaling up systems where many applications need to access large data in global parallel file systems is well documented

• At the Multi Terabyte scale, It is hard to move the data from where it is stored to where it is processed …

• But if moving data to processing is so difficult, why not try anapproach where the application owns the data and processing is moved to where the data is stored?

• The application in this case is the relational database, a very useful tool for data intensive computing

Page 3: Blake A Data Warehouse Approach

3

Extraction/Cleansing

Trans-formation Loading

OLAP DatabasesOLAP Databasesaka Data Warehouseaka Data Warehouse

Processing Hundreds Processing Hundreds of Terabytes/hourof Terabytes/hour

ReportsReports

OLTP DatabasesOLTP Databases

Processing Millions Processing Millions Of Transactions/secOf Transactions/sec

Operational vs. Analytical RDBMS

Page 4: Blake A Data Warehouse Approach

4

The Legacy Focus: Transaction ProcessingThe Legacy Focus: Transaction Processing

Database Server Storage

I/O I/O I/O•Raid•Vol Mgr•Lock Mgr

•KAIO•Raw/Cook•Lock Mgr

•DSS Query•FastLoad•Partitioning•Pre Mat Views

•Optimizer•Logging•Lock Mgr

I/O

I/O

Client

Applications

Local Applications

CA

CH

E

CA

CH

E

CA

CH

E

DATA

SQL

SQL

DATA

Page 5: Blake A Data Warehouse Approach

5

ClientBI Applications

Local Applications Netezza Performance

Server®

NetezzaNetezza’’s Data Warehouse Appliances Data Warehouse Appliance

ODBC 3.XJDBC Type 4

SQL/99

RDBMS

Server

Storage

+

+

Page 6: Blake A Data Warehouse Approach

6

The Challenges Driving Us At The Challenges Driving Us At NetezzaNetezza

Forces driving disruptive change• Sub-transactional data in a fully-

connected world• Ever-increasing need for speed• Increasing regulatory requirements• Market mandate for operational simplicity• Need for actionable intelligence from

unlimited data at real-time speeds

This Need Cannot be Met by Today’s SystemsLinux cluster scaling limited by network performance & systemmanagement complexityScaling with large NUMA SMP servers limited by I/O, networkperformance & operating system complexity

Page 7: Blake A Data Warehouse Approach

7

Not All Computing Tasks Fit into Memory Not All Computing Tasks Fit into Memory ––The Analytic DB ChallengeThe Analytic DB Challenge

There are benefits to scaling up analytic DBs:

• Transactional and referential integrity

• High level query language (with parallel run time optimization performed by application’s query planner)

• Operation on sets of records in tables (vs sequential access of records in files)

• Database standards have matured and are now consistent across the industry

• Data volumes have grown from gigabytes to hundreds of terabytes

• Disk storage is now less than $1 per Gigabyte!

Page 8: Blake A Data Warehouse Approach

8

For Perspective (1980For Perspective (1980’’s) s) ……

• The relational database was invented on a system that merged server, storage and database

• It was called a mainframe!

CPU

Memory

IOPIOP

Page 9: Blake A Data Warehouse Approach

9

By The 1990By The 1990’’s, Rules Changeds, Rules Changed

• Mainframes attacked by killer micros!

• Memory grew large

• I/O became weak

• System costs dropped

• Storage moved off to the network

CPU CPU CPU CPU

CPU CPU CPU CPU

Very LargeMemory

I/O

Storage AreaNetwork

Page 10: Blake A Data Warehouse Approach

10

Capacity Was Added By ClusteringCapacity Was Added By Clustering

CPU CPU CPU CPU

Memory

I/O

CPU CPU CPU CPU

Memory

I/O

CPU

CPU

CPU

CPU

Mem

ory

I/O

CPU CPU CPU CPU

Memory

I/O

CPU CPU CPU CPU

Memory

I/O Storage AreaNetwork

SAN limits Moving Data to the Processors

Page 11: Blake A Data Warehouse Approach

11

ClientApplications

Local Applications

Hours or Days

$$$Processing

$$$ Storage

$$$Fiber Channels

SMP HOST 1

SMP HOST 2

SMP HOST N

C6F7

C12F13

C38 F39G13 G22

$$$

$$$

Data Flow – The Traditional Way

Page 12: Blake A Data Warehouse Approach

12

Moving Processing to the DataMoving Processing to the Data

• Active Disk architectures> Integrated processing power and memory into disk units> Scaled processing power as the dataset grew

• Decision support algorithms offloaded to Active Disks to support key decision support tasks> Active Disk architectures use stream-based model ideal

for the software architecture of relational databases

In Netezza’s NPS® System: “Snippet Processing Units”take streams as inputs and generate streams as outputs

Page 13: Blake A Data Warehouse Approach

13

SQL Query Flow DiagramSQL Query Flow Diagram

Join Scan

TableA

TableB

TableC

TableD

Page 14: Blake A Data Warehouse Approach

14

Streaming Data FlowStreaming Data Flow

Netezza Performance ServerClientBI Applications

Fast Loader/ Unloader

Local Applications

ODBC 3.XJDBC Type 4

SQL/92

SPU

FPGA

SPUC12C13

F12F13

G12G13

C14 F14 G14

FPGA

SPUC21C22

F21F22

G21G22

C23 F23 G23

FPGA

SPU

C30C31

F30F31

G30G31

FPGA

SPUC38C39

F38F39

G38G39

C40 F40 G40

FPGA

A B C D E F G H123456789101112131415161718192021222324252627282930313233343536373839404142

SMP Host

C6F7

C12F13

C38 F39

G13 G22

C6C7

F6F7

G6G7

Streaming data, joins, &

aggs @ 50MB/sec

Up to 120 TB/hourCross Section BWper 8650 system

Bulk data movement: 250 GB/hour - uncompressed

(1 TB/hour Target)

Page 15: Blake A Data Warehouse Approach

15

Netezza Performance Server

Snippet Processing Unit (SPU)

Active Disks as Intelligent Storage NodesActive Disks as Intelligent Storage Nodes

Netezza added: •Highly optimized query planning

•Code generation•Stream processing

Result: 10X to 100X performance speedup over existing systems

A compute node for directly processing SQL queries on tables

Page 16: Blake A Data Warehouse Approach

16

Asymmetric Massively Parallel ProcessingAsymmetric Massively Parallel Processing™™

SQL Compiler

Query Plan

Optimize

Admin

Front End

DBOS

Execution Engine

Linux SMP Host Massively Parallel

Intelligent Storage

1

2

3

1000+

Gigabit Ethernet

Processor+

streaming DB logic

High-PerformanceDatabase Engine

Streaming joins, aggregations, sorts, etc.

Processor+

streaming DB logic

Processor+

streaming DB logic

Snippet Processing Unit (SPU)

Netezza Performance ServerClientBI Applications

Fast Loader/Unloader

Local Applications

ODBC 3.XJDBC Type 4

SQL/92

Processor+

streaming DB logic

Move processing to the data (maximum I/O to a single table)

Page 17: Blake A Data Warehouse Approach

17

AFTERHigher Performance – Greater Scalability – Higher Reliability

Packaging For High Density And Low PowerPackaging For High Density And Low Power

Dual NICs1M GateFPGA

1 GB RAMSocketed DIMM

440GXPower PC

Full GigE toeach SPU

Enterprise SATA Disk Drive150 GB / 400 GB

Page 18: Blake A Data Warehouse Approach

18

Binary Compiled Queries Binary Compiled Queries Executed on a Massively Parallel GridExecuted on a Massively Parallel Grid

select c_name, sum(o_totalprice) price from customer, orders where o_orderkey in (select l_orderkey from lineitem2 where o_orderkey=l_orderkey and l_shipdate>='01-01-1995' and l_shipdate<='01-31-1995') and c_custkey=o_custkey group by c_name;" test_tim >test.out

select c_name, sum(o_totalprice) price from customer, orders where o_orderkey in (select l_orderkey from lineitem2 where o_orderkey=l_orderkey and l_shipdate>='01-01-1995' and l_shipdate<='01-31-1995') and c_custkey=o_custkey group by c_name;" test_tim >test.out/********* Code **********/

void GenPlan1(CPlan *plan, char *bufStarts,char *bufEnds, boollastCall) {

//// Setup for next loop (nodes 00..07)//// node 00 (TScanNode)TScanNode *node0 = (TScanNode*)plan->m_nodeArray[0];// For ScanNode:

TScan0 *Scan0 = BADPTR(TScan0*);CTable *tScan0 = plan->m_nodeArray[0]->m_result;

char *nullsScan0P = BADPTR(char *);// node 01 (TRestrictNode)TRestrictNode *node1 = (TRestrictNode*)plan->m_nodeArray[1];// node 02 (TProjectNode)TProjectNode *node2 = (TProjectNode*)plan->m_nodeArray[2];// node 03 (TSaveTempNode)TSaveTempNode *node3 = (TSaveTempNode*)plan->m_nodeArray[3];// For SaveTemp Node:TSaveTemp3 *SaveTemp3 = BADPTR(TSaveTemp3*);CTable *tSaveTemp3 = node3->m_result;CRecordStore *recStore3 = tSaveTemp3->m_recStore;// node 04 (THashNode)

/********* Code **********/

void GenPlan1(CPlan *plan, char *bufStarts,char *bufEnds, boollastCall) {

//// Setup for next loop (nodes 00..07)//// node 00 (TScanNode)TScanNode *node0 = (TScanNode*)plan->m_nodeArray[0];// For ScanNode:

TScan0 *Scan0 = BADPTR(TScan0*);CTable *tScan0 = plan->m_nodeArray[0]->m_result;

char *nullsScan0P = BADPTR(char *);// node 01 (TRestrictNode)TRestrictNode *node1 = (TRestrictNode*)plan->m_nodeArray[1];// node 02 (TProjectNode)TProjectNode *node2 = (TProjectNode*)plan->m_nodeArray[2];// node 03 (TSaveTempNode)TSaveTempNode *node3 = (TSaveTempNode*)plan->m_nodeArray[3];// For SaveTemp Node:TSaveTemp3 *SaveTemp3 = BADPTR(TSaveTemp3*);CTable *tSaveTemp3 = node3->m_result;CRecordStore *recStore3 = tSaveTemp3->m_recStore;// node 04 (THashNode)

…101101010101010101011111010101010010010101011101010100101111010101001010111101101001010101011101010110010101010101111101001001010101010101010101010010101001111110101010101010101001010101010010100101101001111111101010101010011010010101010100101010101010010101010101010010101010100111010101010101010101010…

101101010101010101011111010101010010010101011101010100101111010101001010111101101001010101011101010110010101010101111101001001010101010101010101010010101001111110101010101010101001010101010010100101101001111111101010101010011010010101010100101010101010010101010101010010101010100111010101010101010101010…

c_name | price--------------------+-----------Customer#000000796 | 318356.97Customer#000001052 | 293680.56Customer#000001949 | 215280.98Customer#000002093 | 282531.93Customer#000005656 | 335297.31Customer#000005861 | 233691.03Customer#000006002 | 267000.92Customer#000006343 | 595819.82Customer#000006532 | 442254.91

….real 0m0.552suser 0m0.010ssys 0m0.000s

c_name | price--------------------+-----------Customer#000000796 | 318356.97Customer#000001052 | 293680.56Customer#000001949 | 215280.98Customer#000002093 | 282531.93Customer#000005656 | 335297.31Customer#000005861 | 233691.03Customer#000006002 | 267000.92Customer#000006343 | 595819.82Customer#000006532 | 442254.91

….real 0m0.552suser 0m0.010ssys 0m0.000s

Page 19: Blake A Data Warehouse Approach

19

Netezza Performance ServerGigabit Ethernet

Snippet Processing Unit (SPU)

Primary

SPUSwap

Mirror

PowerPCQuery Engine

JoiningSorting

Grouping

Snippet Queue

ReplicationManager

Main Memory

StreamingRecord Processor

Project Restrict

Transaction/LockManager

A Look Inside the SPUA Look Inside the SPU

Page 20: Blake A Data Warehouse Approach

20

nam

ead

dres

sci

tyst

ate

zip

sex

age

dob

SELECT count ( * ) , sex , age FROM emp WHERE state = ‘VA’ and age > 18 GROUP BY sex , age ORDER BY age ;

Page 21: Blake A Data Warehouse Approach

21

nam

ead

dres

sci

tyst

ate

zip

sex

age

dob

nam

ead

dres

sci

tyst

ate

zip

sex

age

dob

SELECT count ( * ) , sex , age FROM empemp WHERE state = ‘VA’ and age > 18 GROUP BY sex , age ORDER BY age ;

First things first. The table is distributed amongst all of the SPU’s in the system so that is can be processed in parallel.

When the table is read, your scan speed is the SUM of the speed of all of the disk drives combined.

Page 22: Blake A Data Warehouse Approach

22

nam

ead

dres

sci

tyst

ate

zip

sex

age

dob

nam

ead

dres

sci

tyst

ate

zip

sex

age

dob

FPGA

FPGA

FPGA

FPGA

FPGA

SELECTSELECT count ( * ) , sex , agesex , age FROM emp WHERE state = ‘VA’ and age > 18 GROUP BY sex , age ORDER BY age ;

PROJECTION

On each SPU, the FPGA / disk controller SELECTSELECTs just the columns of interest.

Record Level OperationsExtract fields of interest

Page 23: Blake A Data Warehouse Approach

23

nam

ead

dres

sci

tyst

ate

zip

sex

age

dob

nam

ead

dres

sci

tyst

ate

zip

sex

age

dob

FPGA

FPGA

FPGA

FPGA

FPGA

SELECT count ( * ) , sex , age FROM emp WHERE WHERE state = state = ‘‘VAVA’’ and age > 18and age > 18 GROUP BY sex , age ORDER BY age ;

Record Level OperationsExtract fields of interest from records of interest

RESTRICTION

The FPGA is also responsible for choosing the records of interest –applying the conditions of the WHEREWHERE clause.

Page 24: Blake A Data Warehouse Approach

24

nam

ead

dres

sci

tyst

ate

zip

sex

age

dob

nam

ead

dres

sci

tyst

ate

zip

sex

age

dob

FPGAProcessor

Memory

FPGAProcessor

Memory

FPGAProcessor

Memory

FPGAProcessor

Memory

FPGAProcessor

Memory

NIC

NIC

NIC

NIC

NIC

SELECT count ( * )count ( * ) , sex , age FROM emp WHERE state = ‘VA’ and age > 18 GROUP BYGROUP BY sex , age sex , age ORDER BYORDER BY ageage ;

Record Level OperationsExtract fields of interest from records of interest

Set OperationsData is joined, sorted, grouped, aggregated

Page 25: Blake A Data Warehouse Approach

25

nam

ead

dres

sci

tyst

ate

zip

sex

age

dob

nam

ead

dres

sci

tyst

ate

zip

sex

age

dob

FPGAProcessor

Memory

FPGAProcessor

Memory

FPGAProcessor

Memory

FPGAProcessor

Memory

FPGAProcessor

Memory

SMPHost

End

Use

r App

licat

ions

Record Level OperationsExtract fields of interest from records of interest

Results are consolidated

NIC

NIC

NIC

NIC

NIC

SELECT count ( * ) , sex , age FROM emp WHERE state = ‘VA’ and age > 18 GROUP BY sex , age ORDER BY age ;

Set OperationsData is joined, sorted, grouped, aggregated

Page 26: Blake A Data Warehouse Approach

26

What about scientific data What about scientific data and nonand non--SQL heuristics?SQL heuristics?

• BLAST is a widely used tool for finding similar sequences in large databases of sequences

• Netezza has integrated the BLAST heuristic algorithms into a new type of SQL Join:

The syntax is an extension of the SQL92 generalized join syntax:SQL92: SELECT <cols> FROM <t1> <jointype> <t2> ON <join-condition>

The blast join syntax where the controls is a literal string is:SELECT <cols>FROM <haystack> [ALIGN <needles>] [WITH <controls>]ON BLASTX(<haystack.seq>,<needles.seq>,<controls.args>)

Thus a simple literal protein blast looks like:SELECT <cols> FROM haystack ON BLASTP(haystack.seq, 'ZZAADEDAAM', '-e.001')

Page 27: Blake A Data Warehouse Approach

27

Netezza Performance ServerNetezza Performance Server®® FamilyFamilyNPS 8000zNPS 8000z--Series HighSeries High--Performance ProductsPerformance Products

5.5 – 33 TB5.5 – 22 TB5.5 – 11 TB5.5 TB2.75 TBUser Space67244822411256Processors

8650z8450z8250z8150z8050z

8000z Series:1-33 TB

Continued Innovation in the 8000 Family• Built & Priced for PERFORMANCE

• Enhanced performance, reliability and system capacity

• Simple, scalable capacity expansion across the product range

Page 28: Blake A Data Warehouse Approach

28

Netezza Performance ServerNetezza Performance Server®® FamilyFamilyNPS 10000NPS 10000--Series HighSeries High--Density ProductsDensity Products

10 – 50 TB448

10400 HD

10 – 100 TBUser Space896Processors

10800 HD

10000 Series:Up to 100 TB 0.9 Terabyte

Total DRAM0.3 Petabyte

Total Storage

Introducing the 10000 Product Family• HIGH PERFORMANCE & HIGH DATA DENSITY in a single NPS appliance

• Simple, cost-effective, scalable capacity expansion

• Up to 12.5 TB of user space per rack

Page 29: Blake A Data Warehouse Approach

29

Some of Our Some of Our CustomersCustomers by Vertical Marketby Vertical Market……Retail Telecom

Financial Services

Online Analytic Services

Healthcare

Other

Page 30: Blake A Data Warehouse Approach

30

Situation• Competed against a Teradata

system 25x more expensive• Total amt of data loaded: 3.5TB• Time to load: 28 hours• 118GB/hour• Queries included market basket

penetration, Y/Y comparisons, top UPC by movements, price optimization tracking, etc.

• Running SQLResults• NPS system went from loading

dock to installed, configured and running in three hours

• Queries were run substantially faster, including one that was over five times faster

*Netezza results based on an NPS 8150.Teradata queries run on a 40-node system (5200 &5300)

Proven Results: Proven Results: Leading Food & Drug RetailerLeading Food & Drug Retailer

Query 1 Query 2 Query 3 Query 4 Query 5 Query 6

4 min

0

100

400

300

Minutes

55 min

18 min

8 secs

14 min22 min

TeradataNetezza 8150

Page 31: Blake A Data Warehouse Approach

31

Proven Results:Proven Results:Report Execution from a Government POCReport Execution from a Government POC

* Netezza results based on an NPS 8250.Teradata queries run on a 96-node system (52xx and 53xx)

Teradata Netezza 8050Queries

Impact• NPS system went from loading dock to

installed, configured and running in five hours• Queries showed substantial improvement on

Netezza – 15 times faster on average!• Total execution time (13 reports) was

~7 ½ hours on TD vs. only 47 min on Netezza

Situation• Competed against a very large Teradata

system (96 nodes)• Total amount of data loaded: 2.5 TB• 200+GB/hour load rates (single stream)• Representative set of resource-intensive

production MicroStrategy reports

0.00

1000.00

2000.00

3000.00

4000.00

1 2 3 4 5 6 7 8 9 10 11 12 13

Seco

nds

51xfaster!51x

faster!

40xfaster!40x

faster!

Page 32: Blake A Data Warehouse Approach

32

2-Way Table Join

7020

660

268

14

1

10

100

1000

10000

Tim

e (s

ec)

Open Source DB Traditional RDMBS 1 Traditional RDMBS 2 Netezza 8150

Proven Results: Proven Results: Analytic Service Provider Analytic Service Provider

POC Performance• 2-way Cartesian Join Mixed

Read/Write Test• 37.6M rows with 122.9M

rows• Performance Improvement

with Netezza> 497x v. Open Source DB > 46x v. Traditional RDBMS 1> 19x v. Traditional RDBMS 2

497x slower

46x slower19x slower

Page 33: Blake A Data Warehouse Approach

33

Situation• Red Brick: 3.2 billion rows• NPS: 5.4 billion rows• 6 queries–load, expansion and

test• Business Objects and SQL

Query Performance• NPS system handled 69%

more data volume but was able to complete the total workload in 21 minutes vs. 50 hours, 143x faster!

Load Performance• 140+ GB/hr

Proven Results: Proven Results: EE--Business CustomerBusiness Customer

70,000

1 2 3 4 5 6

Seconds

40,000

10,000

Red Brick / HP (3.2 Billion)Netezza 8250 (5.4 Billion) Sequential

*Netezza results based on an NPS 8250. Red Brick results on HP SuperDome 32 CPU/32GB RAM and EMC SAN

19 secs

362 secs

6 secs

205 secs691 secs

6 secs

Queries

Page 34: Blake A Data Warehouse Approach

34

CPU CPU CPU CPU

Very LargeMemory

I/O

Storage AreaNetworkCPU

Memory

IOPIOP

Massively ParallelIntelligent Storage

1

2

3

1000+

Gigabit Ethernet

µProcessor+

streaming DB logic

µProcessor+streaming

DB logic

µProcessor+

streaming DB logic

µProcessor+

streaming DB logic

CPU

CPU

CPU

CPU

Mem

ory

I/O

SMP Host

Massively ParallelIntelligent Storage

1

2

3

1000+

Gigabit Ethernet

µProcessor+

streaming DB logic

µProcessor+streaming

DB logic

µProcessor+streaming

DB logic

µProcessor+streaming

DB logic

µProcessor+

streaming DB logic

µProcessor+

streaming DB logic

CPU

CPU

CPU

CPU

Mem

ory

I/O

SMP Host

CPU CPU CPU CPU

Memory

I/O

CPU CPU CPU CPU

Memory

I/O

CPU

CPU

CPU

CPU

Mem

ory

I/O

CPU CPU CPU CPU

Memory

I/O

CPU CPU CPU CPU

Memory

I/O Storage AreaNetwork

“Mainframe”

Unix“LargeSMP”

“Cluster of Linux Small SMP”

Netezza “Asymmetric MPP”

Optimal Grid for DW

Netezza Optimal “Grid of Grids”reaching Petabyte sizes

within or across locations

NetezzaNetezza’’ss DW System Architecture EvolutionDW System Architecture Evolution

Page 35: Blake A Data Warehouse Approach

Thank You!