Resumen TASD - 1er Parcial
Resumen TASD - 1er Parcial
Resumen TASD - 1er Parcial
Ciclo de vida
1) Realidad del negocio
2) Modelo lógico: Se arma el esquema de la base con las relaciones entre tablas.
3) Modelo físico: Se definen los tipos de datos, que dependen del motor de base de
datos con el que se está trabajando (target server).
4) Target Server
Tipos de datos
● Nativos(Built-in): Numéricos (smallint ,int, bigint, float, numeric, decimal), Texto
(char, varchar, nchar, nvarchar, lvarchar), Fecha (date, datetime, timestamp,
time, interval), otros (blob, clob, text, byte).
● Tipos de datos definidos por el usuario (UDTs)
Para elegir un tipo de dato debe tenerse en cuenta su rango de valores, las operaciones
que se realizarán con este y cuanto espacio ocupa.
Modelado dimensional
Es una técnica de diseño que busca presentar los datos en un framework estándar,
intuitivo y escalable, que permite un acceso a los datos altamente performante,
basándose en el modelado relacional pero con algunas restricciones de diseño
importantes
Tablas de hechos: Las tablas de hechos contienen, precisamente, los hechos que serán
utilizados por los analistas de negocio para apoyar el proceso
de toma de decisiones. Contienen datos cuantitativos.
Los hechos son datos instantáneos en el tiempo, que son
filtrados, agrupados y explorados a través de condiciones
definidas en las tablas de dimensiones.
El registro del hecho posee una clave primaria que está
compuesta por las claves primarias de las tablas de
dimensiones relacionadas a este.
Modelado multidimensional
Almacenamiento a través de tablas de hechos y tablas de dimensiones. Proveen una
estructura que permite, a través de la creación y consulta a una estructura de datos
determinada (cubo multidimensional por ejemplo), tener acceso flexible a los datos, para
explorar y analizar sus relaciones, y consiguientes resultados.
Las bases de datos multidimensionales implican tres variantes posibles de
modelamiento, que permiten realizar consultas de soporte de decisión:
Esquema Copo de Nieve: Este esquema representa una extensión del modelo en
estrella cuando las tablas de dimensiones se organizan en jerarquías de dimensiones.
Existe una tabla de hechos central que está relacionada con una o más tablas de
dimensiones, quienes a su vez pueden estar relacionadas o no con una o más tablas de
dimensiones.
Este modelo es más cercano a un modelo de entidad relación, que al modelo en estrella,
debido a que sus tablas de dimensiones están normalizadas.
Uno de los motivos principales de utilizar este tipo de modelo, es la posibilidad de
segregar los datos de las tablas de dimensiones y proveer un esquema que sustente los
requerimientos de diseño. Otra razón es que es muy flexible y puede implementarse
después de que se haya desarrollado un esquema en estrella.
Se pueden definir las siguientes características de este tipo de modelo:
● Posee mayor complejidad en su estructura.
● Hace una mejor utilización del espacio.
● Puede desarrollar clases de jerarquías fuera de las tablas de dimensiones, que
permiten realizar análisis de lo general a lo detallado y viceversa.
A pesar de todas las características y ventajas que trae aparejada la implementación del
esquema copo de nieve, existen dos grandes inconvenientes de ello:
● Si se poseen múltiples tablas de dimensiones, cada una de ellas con varias
jerarquías, se creará un número de tablas bastante considerable, que pueden
llegar al punto de ser inmanejables.
● Al existir muchas uniones y relaciones entre tablas, el desempeño puede verse
reducido.
● Las existencia de las diferentes jerarquías de dimensiones debe estar bien
fundamentada, ya que de otro modo las consultas demorarán más tiempo en
devolver los resultados, debido a que se deben realizar las uniones entre las
tablas.
Cubos OLAP
Es una base de datos multidimensional, en la cual el almacenamiento físico de los datos
se realiza en un vector multidimensional. Los cubos OLAP se pueden considerar como
una ampliación de las dos dimensiones de una hoja de cálculo.
Optimización de rendimiento (performance tuning)
SQL Tuning: En una aplicación que accede a una base de datos, es muy importante el
tuning de las sentencias SQL, particularmente hay que prestar atención a las consultas
(SELECT, UPDATE y DELETE) y a las cargas masivas de datos (que se pueden optimizar
con cursores for insert y/o herramientas para carga masiva de datos).
Influenciando al optimizador
1. Estadísticas: Las estadísticas utilizadas por el optimizador para resolver un
query, SOLO se actualizan cuando se corre la sentencia de actualización. (Informix → update
statistics, DB2 → RUNSTAT, Oracle → DBMS_STAT).
3. SELECT FIRST “n”: Permite seleccionar las primeras “n” tuplas del set
resultante de la consulta. No puede usarse en: Subqueries, SELECT INTO TEMP,
Vistas, Uniones, Stored Procedures.
Proceso de logging
Permite recuperar una base de datos a partir de una situación de crash y mantener la
consistencia transaccional (ROLLBACK).
Para asegurar la consistencia el motor utiliza una bitácora transaccional (o log) en el
que registra todas las operaciones. Cuando se quiere realizar una operación se pasa la
pagina de disco a memoria, luego el motor registra la operación en un buffer en
memoria (ej.: si fuera un DELETE, guarda el registro a borrar). Luego de esto, la
transacción se escribe en los logs del motor en disco (se commitea).
Siempre las modificaciones se hacen en memoria. Nunca directo en el disco.
En caso de crash, se hará un chequeo de los logs para buscar inconsistencias, y en todo
caso, terminar la transacción.
Funciones:
● En caso de caída permite hacer un crash recovery.
● Permite hacer un ROLLBACK.
● Asegura consistencia.
● No afecta el rendimiento.
La implementación varía de acuerdo al motor:
● En Informix:1 Physical Log (BEFORE IMAGES), 3 o más Logical Logs (Bitácora
transaccional), Ambos residen en dbspaces de la instancia
● En DB2: 3 o más Log Files (Bitácora transaccional), Son archivos en Filesystem,
Corresponden a 1 sola Base de Datos
Backup
Copia de los datos originales se realiza con el fin de disponer un medio para recuperarlos
● Backup Físico: Copia física de los datos. Usualmente a nivel de página.
Portabilidad limitada.
● Backup Lógico: Resguardo de la bitácora transaccional. Varía según cada motor.
Permite recuperarse a un punto en el tiempo muy cercano al momento de la falla.
Tipos de backup
● Según medio de backup:
○ A disco
○ A cinta (o VTL)
○ Integrados con la solución de backup empresarial
○ A la nube (Cloud Storage / Object Storage)
● Según datos a resguardar:
○ Full: Copia completa de todos los datos
○ Incrementales: Parciales. Se reduce el tamaño, y el tiempo de backup y de
recuperación. Existen 2 tipos (y la combinación de estos):
■ Acumulativo: Acumula los cambios desde el último backup full.
■ Deltas: No va acumulando. Sino que tiene en discos separados los
de cada dia. Entonces se necesitan más discos para hacer el mismo
restore que el acumulativo.
Replicación homogénea
Replicación entre bases de datos de un mismo motor. Generalmente la replicación es
nativa.
● HADR (DB2): Copia cada BDD completa y la mantiene actualizada con 2
modalidades:
○ ACTIVO/PASIVO: BDD prim = L/E, BDD secu = sin actividad (stand by).
○ ACTIVO/ACTIVO: BDD primaria = L/E, BDD secundaria = L
La actualización del secu siempre se hace leyendo la bitácora transaccional del
primario.
Take over: Si la primaria se cae, la secundaria actúa como primaria. Y viceversa.
Catch-up: Cuando la caída se restablece, se sincronizan.
● HDR (Informix): Mismo concepto que DB2 pero se copia la instancia completa
de Informix (todas las BDD). Permite múltiples instancias secundarias en cluster,
con soporte para lectura y escritura.
○ ACTIVO/ACTIVO: BDD primaria = L/E, BDD secundaria = L o L/E
Replicación heterogénea
Replicación entre bases de datos de diferentes motores. Generalmente se utiliza un
software externo.
Change data capture: Se accede los logs del motor de una base y los “traducen” para
el motor de la otra base.
Federación
No se “copian” los datos, sino que hay una vista unificada de diversas fuentes. Es un
producto que no tiene tablas de por sí, sino que tiene los datos para armarlos en
diferentes BDDs. El acceso a los datos no estructurados es de solo lectura.
Problemáticas que resuelve:
● Inteligencia dentro de la aplicación.
● Una conexión por cada base de datos.
● No puede realizarse join entre tablas de distintas bases de datos.
● Altos tiempos de desarrollo.
● Manejo de datos redundantes.
● Modificar o reemplazar sistemas para que trabajen juntos.
Ventajas
● Consolida datos y accesos distribuidos en una única fuente de datos.
● Permite el uso de SQL standard.
● Reduce el tiempo de programación.
● Reduce los costos de migración a otros de productos.
● Permite análisis de negocio con data warehouse.
● Reduce los costos necesarios para manejar redundancia de datos.
● Optimización de las consultas.
● Utilización de Passthru.
Desventajas
● Baja performance para ambientes con tiempo de respuesta rápidos en
actualizaciones (INSERTs/UPDATEs/DELETEs).
Características:
1. Federación: Permite consultas y escrituras a distintas fuentes de datos. Las
consultas se realizan con SQL standard. Permite utilización de OO API.
2. Caching: Provee performance para las consultas. El caching se realiza a través de la
definición de MQT (Materialized Query Table). Si se habilita el uso del cache, se lee y
escribe de este en vez de utilizar la fuente de datos. Se necesita indicar el tipo de
refresco de los datos, si es manual o por replicación. Las MQT se basan en fuentes
relacionales.
3. Replicación: Permite replicación entre bases distintas fuentes relacionales con
algunas limitaciones.
4. Transformación:A través de SQL, XML; Web Services, Data Mining.
(performance federacion)
Oracle In-Memory
Formato Dual para la misma tabla: La tabla en disco siempre se organiza por filas pero
en memoria puede tener los 2 formatos. Ambos formatos son consistentes
transaccionalmente. Requiere aprox 20% adicional de memoria. No requiere más espacio
de disco. Se pueden borrar los índices sobre las columnas involucradas.
Restricciones
● Objetos del Esquema SYS (Catálogo o Diccionario de datos)
● IOT (Index Organized Tables)
● Tipos de datos: LONG o LOBS (objetos binarios)
● Objetos más chicos que 64Kb
SAP HANA
Solo almacena los datos en disco en formato columnar. No hay formato híbrido de
almacenamiento en formato fila y columna. No hay duplicidad de datos.
Cada columna es almacenada como un índice. No hay necesidad de índices primarios. Se
pueden crear índices secundarios con varias columnas para usarse en escenarios OLTP.
Los cálculos son realizados en memoria on-demand, esto quiere decir que para una
query puede necesitar pasar toda la base a memoria (lo que puede demorar), pero una
vez pasado a memoria anda rapido.
Sentencias y practica
UNIDAD 2
Obtencion del query path
● Informix: SET EXPLAIN ON
● DB2: db2expln
● Oracle: EXPLAIN PLAN FOR SELECT …
(EXPLAIN PLAN FOR SELECT * FROM schema.table WHERE column_pk = 'value_pk')
● MySQL: EXPLAIN [EXTENDED] SELECT …
EXPLAIN [EXTENDED] SELECT COUNT(*) FROM database.table WHERE column_A = value_A;
● PostgreSQL: EXPLAIN [ANALYZE] SELECT …
EXPLAIN [ANALYZE] SELECT * FROM schema.table where column = 'value';
● SQL Server: SET SHOWPLAN_TEXT ON
SET SHOWPLAN_TEXT ON;
GO
SELECT *
FROM dbo.table
WHERE column_pk = value;
GO
SET SHOWPLAN_TEXT OFF;
GO
● Sybase: SET SHOWPLAN ON
Estadisticas (informix)
update statistics [low] [for table tabname (col)];
update statistics high [for table tabname (col)];
update statistics medium [for table tabname (col)];
update statistics for procedure [procname];
Particionamiento (DB2)
● Por Rangos
CREATE TABLE orders(id INT, shipdate DATE, …)
PARTITION BY RANGE(shipdate)
(
PARTITION q4_2005 STARTING MINVALUE,
PARTITION q1_2004 STARTING '1/1/2004',
PARTITION q2_2004 STARTING '4/1/2004',
PARTITION q3_2004 STARTING '7/1/2004',
PARTITION q4_2004 STARTING '10/1/2004' ENDING ‘12/31/2006'
)
Fragmentación (Informix)
● Round Robin
CREATE TABLE orders (.....)
FRAGMENT BY ROUND ROBIN IN dbspace1, dbspace2, dbspace3;
● Expression-based
CREATE TABLE customer (.....)
FRAGMENT BY EXPRESSION
state = “CA” IN dbspace1,
state = “DE” IN dbspace2,
REMAINDER IN dbspace3;
Directivas (Informix)
SELECT --+ORDERED, AVOID FULL(e)
name, salary, deptname
FROM emp e, dept d
WHERE loc = “Palo Alto”
AND e.dno = d.dno ;
FIRST_ROWS: optimiza para recuperar más rápidamente las primeras 100 tuplas de la
consulta
ALL_ROWS: optimizar para recuperar más rápidamente todas las tuplas de las
consulta.
SELECT --+FIRST_ROWS
name, age
FROM emp e, dept d
WHERE e.dno = d.dno ;
UNIDAD 4
Comandos de backup y restore
• A nivel de tabla
• Miscelaneos
Backup de la base
Dbexport: dbexport stores_demo -o /directorio
Restore de la base
Dbimport: dbimport stores_demo -d sabd_dbs -l -i /directorio
UNIDAD 5
DB2 BLU
Crear o convertir tablas a modo columnar:
1. Convertir con utilitario db2convert
2. Convertir con stored procedure admin_move_table()
3. CREATE TABLE … ORGANIZE BY COLUMN … ;
Oracle In-Memory
ALTER SYSTEM SET inmemory_size = 5G scope=spfile;
ALTER TABLE <nombre_tabla> INMEMORY; (sube a memoria)
ALTER TABLE <nombre_tabla> NO INMEMORY; (baja de memoria)
ALTER TABLE <nombre_tabla> INMEMORY PRIORITY CRITICAL (llena el objeto después de abrir la base)