PresentaciónBig Data – HPE Vertica
Ing. Daniel Robins
Agenda
• Arquitectura de Soluciones de Big Data
• Google, Hadoop, Oracle, HP
• 2 Visiones de Bases de Datos Columnares para Big Data (VerticaHP vs Oracle)
• POC Telco
Pionero de Big Data
Arquitectura de Software Google (circa 2005)
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
Google File System
Map Reduce Big Table
Google Applications
Arquitectura Hadoop
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
Hadoop Distributed File System (HDFS)
Map Reduce/ YARN HBase
Pig Hive Sqoop Flume
Estrategia de Oracle para Big Data
Oracle RAC
Escalar la Arquitectura requiere agregar otro Exadata
Key notes predictions – Oracle Open World 2015
Oracle Big Data en el Cloud
Big Data Platform
FastData
DataFactory
DataLab
Data Management
Arquitectura HP Haven
HPE Big Data in the Cloud or On-premises
HPE Vertica Cluster
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
Network switch
HPE Vertica Cluster escala agregando commodityservers
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
Network switch
DISK
CPU
DISK
CPU
DISK
CPU
La evolución de las bases de datos
Magnetic tape
“flat” (sequential) files
Pre-computer technologies:
Printing pressDewey decimal systemPunched cards
Magnetic Disk
IMS
Relational Model defined
Indexed-Sequential Access Mechanism (ISAM)
Network Model
IDMS
ADABAS
System R
Oracle V2
Ingres
dBase
DB2
Informix
Sybase
SQL Server
Access
Postgres
MySQL
Cassandra
Hadoop
Vertica
Riak
HBase
Dynamo
MongoDB
Redis
VoltDB
Hana
Neo4J
Aerospike
Hierarchical model
1960-701940-50 1950-60 1970-80 1980-90 1990-2000 2000-2010
Michael Stonebraker”La base de datos Oracle y otras están obsoletas y Facebook está luchando contra el mayor problema de datos del mundo”
BIRTH October 11, 1943 in Newburyport, Mass.
EDUCATIONBachelor’s degree in Electrical Engineering (Princeton University, 1965); M.Sc. in Electrical Engineering (Universityof Michigan, Ann Arbor, 1967); Ph.D. in Computer Science & Engineering (University of Michigan, Ann Arbor, 1971).
EXPERIENCEAssistant Professor of Computer Science (University of California at Berkeley, 1971--1976), Associate Professor (1976-1982), Professor (1982-1993), Professor of the Graduate School (1994-1999); Senior Lecturer (Massachusetts Institute of Technology, 2001-2) Adjunct Professor (2002-Present). Concurrently co-founded and held executive or advisory roles with companies including Relational Technology, Inc. (founded 1980, later Ingres Corporation), IllustraCorporation (founded 1992, later acquired by Informix where Stonebraker was Chief Technology Officer 1996-2000), Cohera Corporation (1997, acquired by PeopleSoft), StreamBase Systems (2003, acquired by Tibco in 2013), Vertica Systems (2005, acquired by HP), Goby (2008, acquired by Telenauv in 2012), SciDB (2008), VoltDB (2009), and Tamr(2013).
HONORS AND AWARDS:ACM System Software Award (1992); ACM SIGMOD Innovation Award (1994); National Academy of Engineering (elected 1998); IEEE John von Neumann Medal (2005); Alan M. Turing Award (2014) For fundamental contributions to the concepts and practices underlying modern database systems.
Fuente: http://amturing.acm.org
La 3ra. generación de
dispositivos demandan en las
bases de datos:
• Alta disponibilidad
global
• Grandes volúmenes
• Datos no
estructurados
• Alto nivel de
transacciones
• Latencia
La arquitectura relacional no
puede solucionar todas estos
requerimientos.
Por que necesitamos nuevas bases de datos?
Bases de Datos columnares
• Vertica de HP
• Oracle Database in Memory
Oracle 12c – in memory database column store
Data files
Memory (SGA)Row store Column Store (IMCU)
OLTP Analytics
(SMU)
Redo Logs
Nuevo memory pool
The Vertica Real-Time Analytics Engine
Native High
Availability
Standard SQL
Interface
Column Orientati
on
Auto Database Design
Advanced Compressi
on
MPP Massive Parallel
Processing
Leverages BI, ETL, Hadoop/MapReduceand OLTP investments
No disk I/O bottleneck simultaneously load & query
Native DB-aware clustering on low-cost x86 Linux nodes
Built-in redundancy that also speeds up queries
Automatic setup, optimization, and DB management
Up to 90% space reduction using 10+ algorithms
50x – 1000x faster than traditional RDBMS
Scales from TB to PB with industry-standard hardware
Simple integrationwith existing ETL and BI solutions
SQL-99+ compliant Ultimate
deployment flexibility
Extended advanced analytics
24/7 Load & Query
Desventajas de Exadata frente a Vertica
• Oracle Exadata está basado en un 80% en aqruitectura basada en filas, la solución viene dada desde el HW
• Precio y escalabilidad
• Performace y tuning se basa en índices, planes de ejecución y hints
• Database In memory es inmaduro y es una solución híbrida
• La arquitectura de appliance es muy cara y propietaria para crecer
• La arquitectura de discos compartidos o storage es obsoleto en BigData
• Vertica es una base de datos analítica y Oracle necesita de otros productos
• Vertica tiene la arquitectura de Hadoop y trabaja con Cloudera, Hortonworks y MapR.
POC TELCO
• Instalación de Vertica y Oracle
• Carga de datos, tabla con balance de llamadas
• 80 millones de filas, 1 día
• Creación de tabla de dimensión
• Ejecución de 10 consultas reales
• Update de toda la tabla de balance
• Proceso de Tuning en ambas instancias
• Conclusión
Características de la instancia EC2 - Amazon
• Amazon m4.xlarge, 4 CPU, 16 Gb RAM
• 1 disco ssd 10 Gb
• 1 disco ssd 16 Gb swapp
• 5 discos magnéticos de 100 Gb c/u
• Oracle Linux 7.2
• Oracle database 11.2.0.4
• Vertica Analytic database 7.2
HP Vertica vs Oracle
Software Community Edition 7.2 Enterprise Edition 11.4
Instalación
■ Comprobación de los requisitos de hardware■ Comprobación de los requisitos de software■ Creación de Grupos y usuarios del OS■ Configuración de parámetros de kernel
y Límites de recursos■ Creación de directorios requeridos■ Configuración del entorno del usuario de Oracle■ Creación de filesystems■ Instalación de base de datos Oracle
Tiempo estimado: 2 hs
■ Comprobación requisitos de hardware■ Comprobación requisitos de software■ Creación de Grupos y usuarios del OS■ Instalación de base de datos Vertica
Tiempo estimado: 45 min
HP Vertica vs Oracle
Carga de Datos
■ Herramienta SQL*Loader, nativa de Oracle
■ sqlldr userid=poc
control=control.ctl
log=cargaoracle.log
Tiempo de carga: 27,39 min
■ Comando Copy, nativo de Vertica
■ copy poc.stg_balance_000
from
'/u01/stage/RECORD_BALANCE_2
016-01-01.txt.gz' GZIP
delimiter ',' enclosed by
'"' NULL 'NULL' abort on
error skip 1 direct;
Tiempo de carga: 13,44 min
HP Vertica vs Oracle # Consulta 1: Obtener el balance de
llamadas en un periodo, para un teléfono
determinado.
select trunc(b.end_timestamp) as fecha,
b.id_telefono, count(*)
from poc.stg_balance b
where b.id_telefono=389571
and b.end_timestamp between
to_timestamp('01/01/2016','dd/mm/yyyy')
and
to_timestamp('05/01/2016','dd/mm/yyyy')
group by trunc(b.end_timestamp),
b.id_telefono;0,21 0,01
90
0,010
10
20
30
40
50
60
70
80
90
100
Tiempos Consulta #1 en seg.
Vertica Vertica Opt Oracle Oracle Opt
HP Vertica vs Oracle # Consulta 2: Controlar la
cantidad de tráfico de llamadas
por hora.
select
trunc(b.end_timestamp,'HH') as
fecha, count(*)
from poc.stg_balance b
group by
rollup(trunc(b.end_timestamp,'H
H'))order by 1;
8,41
0,04
36
29
0
5
10
15
20
25
30
35
40
Tiempos Consulta #2 en seg.
Vertica Vertica Opt Oracle Oracle Opt
HP Vertica vs Oracle # Consulta 3: Sumar el balance agrupado
por balance_index en un rango de fechas.
select b.balance_index, sum(balance)
from poc.stg_balance b
where b.end_timestamp between
to_timestamp('01/01/2016
00:00:00','dd/mm/yyyy hh24:mi:ss')
and to_timestamp('01/01/2016
18:59:59','dd/mm/yyyy hh24:mi:ss')
group by b.balance_indexorder by 1,2;
2,810,73
65
58
0
10
20
30
40
50
60
70
Tiempos Consulta #3 en seg.
Vertica Vertica Opt Oracle Oracle Opt
HP Vertica vs Oracle # Consulta 4: Contar las llamadas por
hora, donde to_name comience con el
texto ‘6730%’.
select trunc(b.end_timestamp,'HH') as
fecha, count(*)
from poc.stg_balance b
where to_name like '6730%‘
group by trunc(b.end_timestamp,'HH')
order by 1;
1,930,01
31
22,38
0
5
10
15
20
25
30
35
Tiempos Consulta #4 en seg.
Vertica Vertica Opt Oracle Oracle Opt
HP Vertica vs Oracle # Consulta 5: Crear una dimensión con los tipos
de llamadas y poblar una tabla con los
operadores,
tomando como carrier los 3 primeros dígitos del
teléfono.
create table POC.session_types
(session_type_id NUMBER(8),
carrier VARCHAR(3)
) TABLESPACE USERS NOLOGGING;
insert /*+ append */ into poc.session_types
select session_type_id,
substr(to_char(id_telefono),1,3) carrier
from poc.stg_balance
group by session_type_id,
substr(to_char(id_telefono),1,3);
7,36
0,42
57
65
0
10
20
30
40
50
60
70
Tiempos Consulta #5 en seg.
Vertica Vertica Opt Oracle Oracle Opt
HP Vertica vs Oracle #Consulta 6: Contar la cantidad de llamadas
uniendo con la tabla session_types y generar
por fecha , balance_index, group_name, para
el
periodo = ‘20160101 entre las 05am y 06am’ y
el carrier contenga los valores de
(‘114’,’115’,’124’,’110’,’112’,’113’)
select trunc(b.end_timestamp,'DD') as fecha,
b.balance_index, b.group_name, count(*)
from poc.stg_balance b inner join
poc.session_types l on
(b.session_type_id=l.session_type_id)
where b.end_timestamp between
to_timestamp('01/01/2016
05:00:00','dd/mm/yyyy hh24:mi:ss')
and to_timestamp('01/01/2016
05:59:59','dd/mm/yyyy hh24:mi:ss')and
l.carrier in
('114','115','124','110','112','113')
group by trunc(b.end_timestamp,'DD'),
b.balance_index, b.group_name;
0,46 0,44
104
96
0
20
40
60
80
100
120
Tiempos Consulta #6 en seg.
Vertica Vertica Opt Oracle Oracle Opt
HP Vertica vs Oracle # Consulta 7: Generar un resumen por fecha por
end_timestamp, contar la cantidad de llamadas y
la cantidad de números de teléfono diferentes,
sobre la tabla STG_BALANCE, de manera que se
muestre para
cada fecha, el balance_index, la cantidad de
registros, la cantidad de llamadas
(session_record_id diferentes),
la cantidad de teléfonos (id_telefono
diferentes), se sume el Balance.
select trunc(end_timestamp), balance_index,
count(*), count(distinct session_record_id),
count(distinct id_telefono),
sum(balance)
from poc.stg_balance
group by trunc(end_timestamp), balance_indexorder
by 1,2;
38,4 38,04
298
169,38
0
50
100
150
200
250
300
350
Tiempos Consulta #7 en seg.
Vertica Vertica Opt Oracle Oracle Opt
HP Vertica vs Oracle # Consulta 8: Mostrar el resultado siguiente:
fecha, end_value, balance_index, duración de
las llamadas
(suma de millis/1000), suma del balance,
cantidad de llamadas (session_record_id
diferentes), la cantidad
de teléfonos (id_telefono diferentes).
select trunc(b.end_timestamp) fecha,
b.end_value, b.balance_index,
sum(b.millis/1000), sum(b.balance),
count(distinct b.session_record_id),
count(distinct b.id_telefono)
from poc.stg_balance bgroup by
trunc(b.end_timestamp), b.end_value,
b.balance_index
order by 1,2,3;
44,84 39,5
319
195
0
50
100
150
200
250
300
350
Tiempos Consulta #8 en seg.
Vertica Vertica Opt Oracle Oracle Opt
HP Vertica vs Oracle # Consulta 9: Realizar una consulta usando la tabla Balance
coloque a cada llamada (session_record_id) en filas,
junto con el número de teléfono y coloque en columnas el campo
balance_index, de manera que el balance sea
desplegado pora cada una de las llamadas.
select a.end_timestamp, a.session_record_id,count(b0) as
b0,count(b1) as b1,count(b2) as b2,count(b3) as b3,count(b4) as
b4,count(b5) as b5,
count(b6) as b6,count(b7) as b7,count(b8) as b8,count(b9) as
b9,count(b10) as otros
from(selectb.session_record_id ,b.end_timestamp, CASE WHEN
b.balance_index = 0 then 1 else null end b0, CASE WHEN
b.balance_index = 1 then 1
else null end b1,CASE WHEN b.balance_index = 2 then 1 else null
end b2, CASE WHEN b.balance_index = 3 then 1 else null end b3,
CASE WHEN
b.balance_index = 4 then 1 else null end b4, CASE WHEN
b.balance_index = 5 then 1 else null end b5, CASE WHEN
b.balance_index = 6 then 1 else
null end b6, CASE WHEN b.balance_index = 7 then 1 else null end
b7, CASE WHEN b.balance_index = 8 then 1 else null end b8, CASE
WHEN
b.balance_index = 9 then 1 else null end b9, CASE WHEN
b.balance_index >= 10 then 1 else null end b10from poc.stg_balance
b where trunc
(b.end_timestamp,'DD')=to_timestamp('01/01/2016','DD/MM/YYYY')and
b.id_telefono=389571) agroup by a.session_record_id
,a.end_timestamp
0,55 0,03
93
0,030
10
20
30
40
50
60
70
80
90
100
Tiempos Consulta #9 en seg.
Vertica Vertica Opt Oracle Oracle Opt
HP Vertica vs Oracle # 10 Agregar un id a la tabla
session_types y poblarlo con una
secuencia
alter table POC.session_types add
(idw_session_type number(10));
create sequence
poc.seq_idw_session_type cache
1000;
update poc.session_types set
idw_session_type=poc.seq_idw_sess
ion_type.nextval;
commit;
0,08
0,23
0,3
0,01
0
0,05
0,1
0,15
0,2
0,25
0,3
0,35
Tiempos Consulta #10 en seg.
Vertica Vertica Opt
Oracle Oracle Opt
HP Vertica vs Oracle # 11 Crear el mismo campo en la tabla
stg_balance y poblarlo con el campo
idw_session_type, relacionar para esto
la tabla balance de la siguiente forma
session_type_id y los 3 primeros digitos del
id_telefono.
update poc.stg_balance_000
set idw_session_type=s.session_type_id
from poc.session_types s
where
stg_balance_000.session_type_id=s.session_type_id
and
s.carrier=substring(to_char(stg_balance_000.id_te
lefono),1,3);
911,2
1974,27
5700
3050
0
1000
2000
3000
4000
5000
6000
Tiempos Consulta #11 en seg.
Vertica Vertica Opt Oracle Oracle Opt
Tuning
En la carga de datos se crearon las tablas e índices como nologging
Creación de 7 SQL Profiles para los 10 queries
Creación de 3 índices Al agregar índices se penalizó la carga de
datos
Tiempos de tuning +2horas
Agregar las consultas en Designer y Ejecutar la optimización de Vertica
Tiempos de tuning 15 minutos
Almacenamiento Ocupado
8
11
0
2
4
6
8
10
12
Compresión
Espacio ocupado en la Base de Datos en Gbytes
Vertica Oracle
Vertica mejora en un 44% los tiempos consultas de Oracle
2053
3686
0
500
1000
1500
2000
2500
3000
3500
4000
Tiempos seg
Tiempos totales
Vertica Oracle
Discusión
Daniel RobinsEmail: [email protected]: daniel.robins2Twitter: @hdrobins
Sergio MathieuEmail: [email protected] Skype: sergio.mathieu
Top Related