1. Bases de Datos Analíticas-ColumnaresBases de Datos Analíticas-Columnares
2. Índice
o Características
o Monet DB
o Arquitectura
o Almacenamiento
o Distinciones
o Cluster
o HP Vertica
o Proyecciones
o Hybrid Data Store
o Optimizaciones
o Cluster
o Límites
12. Monet DB - Arquitectura
o Se enfoca más en la disponibilidad que en la
consistencia
o Muy Flexible a personalizaciones por parte del
usuario
13. Monet DB - Almacenamiento
o Binary Association Table (BAT)
o Datos para consultar por XQuery
o XML
o JSON
o Binario
o Capacidad de leer de un Stream de datos
o Se configura la fuente de datos, indicando la dirección en formato [protocolo]://
[servidor]:[puerto]
oid name
0000
0
monet
OID tipo
00000 db
OID year
11111 2000
OID plus
11111 15
14. Monet DB - Distinciones
o Rendimiento óptimo cuando el mayor volumen en el
manejo de datos puede hacerse en la memoria principal
o Debido a la eficiente generada por la técnica llamada
“Cache Locality”
o Se basa en la localización de los bloques de memoria de forma secuencial
para optimizar el acceso a ellos
15. Monet DB - Distinciones
o Radix-Cluster for Join, una innovación en algoritmos de
joins en Bases de Datos.
o Este algoritmos logra una Complejidad Computacional de
las consultas insuperable O(max (n,m)), mientras que en
otros sistemas como PostresSQL, MySQL o SQL Server que
toman O (n + m).
16. Monet DB - Distinciones
o Aprovecha las ventajas de la paralelización usando Map-
Reduce y Replicación.
o Amplio rango de alcance, sobre todo en temas académicos,
incluyendo librerías externas
o libxml
o geos
o raptor (software para predicción de la estructura de proteínas)
o Varios formatos pueden ser incluidos como formato de
vaults (cargas masivas).
17. Monet DB - Distinciones
o Monet Interpreted Language
o Puede ser extendido con nuevas funciones de evaluación
por parte de los usuarios
18. Monet DB – Cluster – Instalación
o Instalar MonetDB individualmente en cada nodo (monetdbd)
o monetdbd create /path/to/store/server
o Asignar propiedades a la BD para formar el Cluster (monetdb)
o monetdb –h [server] –P [password] create test_db
o monetdb set shared=/home/db/1 test_db
o monetdb –h [server] –P [password] start test_db
o Usar el cliente para las consultas (mclient)
o mclient –d “/home/db/1”
19. Monet DB - Cluster – Balanceo de Datos
o Balanceo de carga en Monet DB se logra usando un patrón para
conectarse al cluster.
o Este patrón deberá incluir todas las BD sobre las que se quiera
operar en la conexión
o mclient –d “/home/db/*”
o mclient usa un Round Robin en las peticiones, es decir,
selecciona el siguiente nodo en cada comando enviado al
servidor.
20. Monet DB - Cluster – Replicación
o Multiplex Funnel, especifica una conexión multiplexada a los
nodos del cluster que se especifiquen.
o monetdb create -m
[user]+password@[db_or_tag_name],
[user]+password@[db_or_tag_name]
[multiplex_funnel_name]
o Usado como técnica de replicación
o Recomendado para sentencias de lectura de datos solamente.
22. HP Vertica - Proyecciones
o Una tabla puede tener varias proyecciones,
cada una ordenada por un atributo diferente
o Cada proyección tiene una copia de los datos
o Este concepto optimiza las consultas sobre un
atributo ordenado
23. HP Vertica - Hybrid Data Store
o Write Optimized Store (WOS)
o Una estructura de datos almacenada en memoria para operaciones de inserción y
actualizado
o Los datos aquí están sin comprimir ni ordenar para lograr eficiencia en el proceso
o Read Optimized Store (ROS)
o Contiene los datos estables de la Base de Datos
o Los datos están comprimidos y ordenados
24. HP Vertica - Hybrid Data Store
o Tuple Mover
o Mueve los datos desde el WOS hacia el ROS
o Opera en secciones completas del WOS, realiza las operaciones de inserción usando
operaciones batch
o Storage Container
o En cada nodo hay varios Storage Container por proyección, haciendo el papel de
versiones
o Es el equivalente al Tuple Mover a nivel de Nodo. Una vez que el Tuple Mover a
insertado los datos hacia un nodo, este componente se encarga de actualizar los
antiguos datos con los nuevos
25. HP Vertica - Hybrid Data Store (Análisis)
o Este mecanismo es ideal para Bases de Datos
analíticas, porque se enfoca en las consultas
eficientes, el control de concurrencia y la
inserción/actualización en grandes volúmenes
o Para aplicaciones que requieran una sincronización
estricta entre la inserción y la lectura de datos, el
Hybrid Data Store no es ideal
26. HP Vertica - Optimizaciones
o Vertica no necesita descomprimir los datos de una
columna para realizar operaciones de agregación
o Las proyecciones pueden tener columnas de una
relación de llave primaria – llave foránea, estas
proyecciones son llamadas pre-join projections
o Pre-join projections, ofrecen una gran ventaja en
cuanto a rendimiento en operaciones de INNER JOIN
27. HP Vertica - Optimizaciones
o k-safety para garantizar la integridad de datos antes
fallos de nodos, se basa en tener k copias de los
datos
o Cada réplica está ordenada por un atributo
diferente, lo cual optimiza el tiempo de las consultas
o Usa las ‘Buddy Projections’ : proyecciones que se
diferencian solo en el atributo por el cual están
ordenados los datos.
o Uso en replicación y particionamiento
28. HP Vertica - Clúster - Introducción
o Clúster a nivel de servidor: es la disponibilidad de
nodos físicos a los que pueden expandirse las BD.
o Se pueden definir todos los nodos durante la instalación
o Incremento de nodos sin necesidad de reinstalar
o Clúster a nivel de BD: De los nodos físicos disponible,
podemos elegir en cuáles se distribuirá cada BD
o Se puede definir durante la creación de la BD
o Incrementar nodos después de creada, con balanceo
automático.
29. HP Vertica - Clúster - Replicación
o La Replicación es la posibilidad de tener múltiples
copias de cada proyección distribuidas por el clúster.
o Si más de la mitad de los nodos de un clúster no
están disponibles, Vertica automáticamente se
apaga.
o En HP Vertica hay 3 posibles valores de K (0,1,2)
30. HP Vertica - Clúster - Replicación
o Ejemplo K = 1
o Nodos críticos
K-level Nodes
0 1+
1 3+
2 5+
K 2K+1
31. HP Vertica - Clúster - Replicación
o Ejemplo creación de tabla con K-safety
CREATE TABLE location(..., state VARCHAR NOT
NULL, ...) KSAFE [2]
o Ejemplo creación de proyección con K-safety
CREATE PROJECTION projection-name AS SELECT …
FROM table [ KSAFE [ 1 ] ]
32. HP Vertica – Clúster - Replicación
o Monitorizar K-safety
o SELECT current_fault_tolerance FROM system;
o SELECT * FROM v_monitor.critical_nodes;
33. HP Vertica - Clúster - Segmentación
o La segmentación permite que cada proyección pueda
distribuir sus datos por los nodos del clúster basado
en un atributo.
o La segmentación por hash debe cumplir con los
siguientes requisitos:
o Datos suficientemente únicos a lo largo de la columna
o Distribución aceptablemente aleatoria o asimétrica en cada
elemento nuevo insertado
34. HP Vertica – Clúster - Segmentación
o Tipos de Segmentación
o Modular Hash Segmentation es una forma de segmentación
recomendable para atributos con un patrón regular, i.e los tipos de
datos secuenciales
o Simple Hash Segmentation es la forma de segmentación
recomendada para atributos con un patrón irregular, como los UUID
de Java
35. HP Vertica - Clúster - Segmentación
o Ejemplo de tabla con segmentación
CREATE TABLE tw_search (..., tw_account_name VARCHAR
NOT NULL, ...)
SEGMENTED BY HASH(tw_Created_YearMonth) ALL NODES
OFFSET 0;
o El parámetro offset significa el nodo a partir del cual se quiere
segmentar
36. HP Vertica – Clúster - Segmentación
o Ejemplo de proyección con segmentación
CREATE PROJECTION tweetsAnioMes (tw_Text,
tw_Created_YearMonth) AS
(select tw_Text, tw_Created_YearMonth FROM tw_search
ORDER BY 2)
SEGMENTED BY HASH(tw_Created_YearMonth) ALL NODES
OFFSET 2;
o El parámetro offset significa el nodo a partir del cual se quiere
segmentar
37. HP Vertica - Clúster - Balanceo de Carga
o IPVS (Internet Protocol Virtual Server). Es una
característica del kernel de linux que permite que un
host pueda hacer de Gateway, para eso usa IP
virtuales e instala paquetes de software adicionales.
o Native Conection Load Balancing. Es una
característica implementada en el servidor de HP
Vertica y las librerías cliente. Se basa en la asignación
de conexiones a los clientes por parte del servidor.
38. HP Vertica - Clúster - Balanceo de Carga - Nativa
o Opciones de Native Conection Load Balancing
o NONE. Deshabilitado por defecto.
o ROUNDROBIN. Selecciona el siguiente nodo del anillo de nodos
en cada conexión.
o RANDOM. Selecciona aleatoriamente un nodo.
o SELECT SET_LOAD_BALANCE_POLICY('ROUNDROBIN');
o SELECT LOAD_BALANCE_POLICY FROM V_CATALOG.DATABASES;
o SELECT NODE_NAME FROM V_MONITOR.CURRENT_SESSION;
39. HP Vertica - Clúster - Balanceo de Carga - Nativa
o Es necesario poner un parámetro en la conexión para
que las peticiones sean de tipo load balance.
o ConnectionLoadBalance = 1
o Si usamos como cliente el SQuirrel, se configura
fácilmente mediante la interfaz.
40. HP Vertica - Clúster – Balanceo de Carga - IPVS
o Dos nodos directores (generalmente tienen datos)
o Master Director, se encarga del enrutamiento de las peticiones
o Slave Director, se comunica con el Master Director y asume su rol
en caso de fallo
o N nodos de datos (128 máximo recomendado)
o IP privadas para la conexión entre nodos
o IP reales de cara a los clientes del clúster
41. HP Vertica - Clúster – Balanceo de carga - Análisis
o Nativa
o Sencilla de Instalar
o Eficiente
o Mayores Requisitos de Conectividad con los clientes
o IPVS
o Compleja de Instalar
o Consumidora de Recursos
o Menores requisitos de conectividad con los clientes
42. HP Vertica - Límites
o Capacidad de la BD: (Máximo Tamaño de Fichero * Nodos *
Discos Duros)
o Número de filas por tabla: 2^64 filas en cada Nodo
o Capacidad de una fila: 32,768,000 bytes
o Número de nodos: 128 (Recomendable)
o Conexiones concurrentes por nodo: 50 por defecto, limitado
por la plataforma (típicamente 1024)