1¿Que es Data Warehouse?
Es un proceso, no un producto. Es una técnica para consolidar y administrar datos de variadas fuentes con el propósito de responder preguntas de negocios y tomar decisiones, de una forma que no era posible hasta ahora.
Desde el punto de vista de la construcción de un Data Warehouse, podemos decir que es una colección de base de datos integradas, no volátil que ayuda a la toma de decisiones donde cada unidad de datos es relevante en un momento de tiempo.
2¿Qué es un Datamart?
Es un subconjunto de una bodega de datos para un propósito específico.
Es un almacén de datos históricos relativos a un departamento de una organización, así que puede ser una copia de parte de un datawarehouse para uso departamental.
3¿Cómo se construye un DataWarehouse?
El Proceso de arquitectura de un datawarehouse puede ser vista como un proceso de cuatro pasos:
-Fuentes (Externas/Internas)
-Extracción (Monitor)
-Integrador
-DW
El proceso de construcción es el encargado de llevar la información de las fuentes de datawarehouse.
La extracción lo que hace es recuperar los datos de las fuentes, el extractor es un componente de software que traduce datos del formato de las fuentes a un formato arbitrario, así es que el extractor limpia los datos y los escribe en formatos específicos del datawarehouse.
La integración tiene como objetivo, integrar los datos provenientes de múltiples fuentes para finalmente integrarlos en el datawarehouse.
4¿Qué es OLAP?
(Procesamiento analítico en Línea), Es una solución utilizada en el campo de la Inteligencia de Negocios (Business Intelligence), la cual consiste en consultas a estructuras multidimensionales (o Cubos OLAP) que contienen datos resumidos de grandes Bases de Datos o Sistemas Transaccionales (OLTP). Se usa en informes de negocios de ventas, marketing, informes de dirección, minería de datos y áreas similares.
5¿Cual es la diferencia con OLTP?
La razón por el cual se utiliza OLAP, es por la velocidad de respuesta que da para las consultas, de selección, en contraposición de con OLTP, que es la mejor opción para hacer inserciones, modificaciones y eliminación de datos.
6¿Qué es una base de datos multidimensional?
Las bases de datos multidimensionales se utilizan principalmente para crear aplicaciones OLAP y podemos pensarlas como bases de datos de una sola tabla, su peculiaridad es que por cada dimensión tienen un campo y otro campo por cada métrica o hecho.
7¿Qué es un cubo?
Un cubo es una estructura multidimencional que almacena información, cada cara del cubo es información.
Es la instancia de un modelo de datos multidimencionales, un modelo multidimencional soporta el manejo de una bata cantidad de datos empresariales y temporales.
8¿Qué operaciones soporta un cubo?
Un Cubo soporta 3 Dimensiones y n operaciones.
9¿Qué topología existe para construir una base de datos dimensional?
Las topologías que existen son
-Copo de Nieve
-Esquema Estrella
10¿Qué es una dimensión?
Una dimensión son valores reales que se necesita para describir cualquier punto en el espacio.
11¿Qué es una tabla de Hechos?
Es la tabla central en un esquema dimensional y contiene los valores de la medida de negocio.
12¿En base al ejemplo que plantee el disertante identifique cuales son las tablas de hechos?
Las tablas de hechos según el ejemplo son dos: Tipo de aportación y ubicación, esta se divide en tres tablas calle, zona y barrio.
13¿Metodología que existe para construir una Datawarehouse?
La metodología CRISP es un proceso jerárquico formado por varias tareas que ofrece a las organizaciones la estructura necesaria para obtener mejores y más rápidos resultados en la minería de datos
Patrón de Diseño
Los Patrones de Diseño (Design Patterns) son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.
Un Patrón de Diseño es una solución a un problema de diseño no trivial que es efectiva (ya se resolvió el problema satisfactoriamente en ocasiones anteriores) y reusable (se puede aplicar a diferentes problemas de diseño en distintas circunstancias).
Diferencia entre un Patrón y un Framework
La diferencia que existe entre un patrón y un Framework es que el nivel de abstracción de un patrón es mayor que el del framework.
Ya que un patrón es la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software, y los Frameworks son diseñados con el intento de facilitar el desarrollo de software, permitiendo a los diseñadores y programadores pasar más tiempo identificando requerimientos de software que tratando con los tediosos detalles de bajo nivel de proveer un sistema funcional.
Clasificación de los Patrones de Diseño
· Patrones Creacionales Los patrones de cración abstraen la forma en la que se crean los objetos, permitiendo tratar las clases a crear de forma genérica dejando para más tarde la decisión de qué clases crear o cómo crearlas.
- Método de Fabricación (Factory Method)
Parte del principio de que las subclases determinan la clase a implementar.
- Fábrica Abstracta (Abstract Factory)
El problema a solucionar por este patrón es el de crear diferentes familias de objetos, como por ejemplo la creación de interfaces gráficas de distintos tipos (ventana, menú, botón, etc.).
-Prototipado (Prototype)
Se basa en la clonación de ejemplares copiándolos de un prototipo.
-Singleton
Restringe la instanciación de una clase o valor de un tipo a un solo objeto.
- MVC (Model View Controler)
Este patrón plantea la separación del problema en tres capas: la capa model, que representa la realidad; la capa controler, que conoce los métodos y atributos del modelo, recibe y realiza lo que el usuario quiere hacer; y la capa vista, que muestra un aspecto del modelo y es utilizada por la capa anterior para interaccionar con el usuario.
· Patrones Estructurales: Tratan de conseguir que cambios en los requisitos de la aplicación no ocasionen cambios en las relaciones entre los objetos. Lo fundamental son las relaciones de uso entre los objetos, y, éstas están determinadas por las interfaces que soportan los objetos. Estudian como se relacionan los objetos en tiempo de ejecución. Sirven para diseñar las interconexiones entre los objetos.
- Adaptador (Adapter): Convierte una interfaz en otra.
- Puente (Bridge): Desacopla una abstracción de su implementación permitiendo modificarlas independientemente.
- Objeto Compuesto (Composite): Utilizado para construir objetos complejos a partir de otros más simples, utilizando para ello la composición recursiva y una estructura de árbol.
- Envoltorio (Decorator): Permite añadir dinámicamente funcionalidad a una clase existente, evitando heredar sucesivas clases para incorporar la nueva funcionalidad.
- Fachada (Facade): Permite simplificar la interfaz para un subsistema.
- Peso Ligero (Flyweight): Elimina la redundancia o la reduce cuando tenemos gran cantidad de objetos con información idéntica.
- Apoderado (Proxy): Un objeto se aproxima a otro.
- Patrones de Comportamiento: Más que describir objetos o clases, describen la comunicación entre ellos.
Los patrones de comportamiento estudian las relaciones entre llamadas entre los diferentes objetos, normalmente ligados con la dimensión temporal.
- Cadena de responsabilidad (Chain of responsibility): La base es permitir que más de un objeto tenga la posibilidad de atender una petición.
- Orden (Command): Encapsula una petición como un objeto dando la posibilidad de “deshacer” la petición.
- Intérprete (Interpreter): Intérprete de lenguaje para una gramática simple y sencilla.
- Iterador (Iterator): Define una interfaz que declara los métodos necesarios para acceder secuencialmente a una colección de objetos sin exponer su estructura interna.
- Mediador (Mediator): Coordina las relaciones entre sus asociados. Permite la interacción de varios objetos, sin generar acoples fuertes en esas relaciones.
- Recuerdo (Memento): Almacena el estado de un objeto y lo restaura posteriormente.
- Observador (Observer): Notificaciones de cambios de estado de un objeto.
- Estado (Server): Se utiliza cuando el comportamiento de un objeto cambia dependiendo del estado del mismo.
- Estrategia (Strategy): Utilizado para manejar la selección de un algoritmo.
- Método plantilla (Template Method): Algoritmo con varios pasos suministrados por una clase derivada.
- Visitante (Visitor): Operaciones aplicadas a elementos de una estructura de objetos heterogénea.
- ¿MOSTRAR LA APLICACIÓN Y EJEMPLO DE LOS SIGUIENTES PATRONES?
La clase factoría devuelve una instancia de un objeto según los datos que se le pasan como parámetros. Para que la creacción centralizada de objetos sea lo más "útil y eficaz" posible, es de esperar que todos los objetos creados desciendan de la misma clase o implementen el mismo interface (es decir, hagan una operación similar pero de distintas formas), asi podemos usarlos todos de la misma manera, con los mismos métodos (gracias al polimorfismo), sin importarnos que clase concreta estamos tratando en cada momento.
Ejemplo:
public void FactoriaDeFiguras
{
public static final int CUADRADO = 0
public static final int CIRCULO = 1
public Figura getFigura (int tipo, int lado)
{
if (tipo == this.CUADRADO)
{
return (new Cuadrado (lado))
}
else
{
return (new Circulo (lado))
}
}
}
El patrón adaptador, como su propio nombre nos puede hacer ver, se usa para convertir el interface de una clase a la de otra.
Implementacion:
En otras palabras, un adaptador es típicamente implementado utilizando herencia múltiple, al crear una subclase del adaptador que herede los métodos privados y, permitiendo que herede además, la interfaz pública de las clases que definen la interfaz requerida.
Un Template Method es un patrón de diseño que define una estructura algorítmica en la super clase, delegando la implementación a las subclases. Es decir, define una serie de pasos, en donde los pasos serán redefinidos en las subclases.
Proposito: Usando el Template Method, se define una estructura de herencia en la cual la superclase sirve de plantilla ("Template" significa plantilla) de los métodos en las subclases. Una de las ventajas de este método es que evita la repetición de código, por tanto la aparición de errores
Ejemplo : uso del patrón en un lenguaje PseudoFormal
clase automóvil
abstracta accion cambiomarcha(); //sea como sea, los métodos deben ser definidos
abstracta accion acelerar(); //como abstractos o virtuales
abstracta accion frenar();
abstracta accion andar()
mientras(vehículo_encendido) hacer
acelerar();
si(revoluciones_altas) entonces
cambiomarcha();
finsi
si(obstaculo) entonces
frenar();
finsi
finmientras
finaccion
finclase
clase automóvilmanual hereda automóvil
accion cambiomarcha()
/*define el método cambiar marcha en un auto manual*/
finaccion
finclase
clase automóvilautomático hereda automóvil
accion cambiomarcha()
/*define el método cambiar marcha en un auto automático*/
finaccion
finclase
- Patrón de fachada o facale
El patrón fachada trata de simplificar la interface entre dos sistemas o componentes de software ocultando un sistema complejo detrás de una clase que hace las veces de pantalla o fachada.
La idea principal es la de ocultar todo lo posible la complejidad de un sistema, el conjunto de clases o componentes que lo forman, de forma que solo se ofrezca un (o unos pocos) punto de entrada al sistema tapado por la fachada.
Una ventaja más de usar una clase fachada para comunicar las dos partes o componentes, es la de aislar los posibles cambios que se puedan producir en alguna de las partes.
public class XArCFacade{
. . .
public Document getDocument (String id){
. . .
}
. . .
public HitList search (String request){
. . .
}
. . .
}
Restringe la instanciación de una clase o valor de un tipo a un solo objeto.
Garantiza la existencia de una única instancia para una clase y la creación de un mecanismo de acceso global a dicha instancia
Cuando se usa en conjunción con se crea una única fábrica, de modo que no habrá usos inconsistentes de los productos en el programa.
public sealed class Singleton
{
private static volatile Singleton instance;
private static object syncRoot = new Object();
private Singleton()
{
System.Windows.Forms.MessageBox.Show("Nuevo Singleton");
}
public static Singleton GetInstance
{
get
{
if (instance == null)
{
lock(syncRoot)
{
if (instance == null)
instance = new Singleton();
}
}
return instance;
}
}
}