viernes, diciembre 10, 2010

Tomado de:
Los sistemas EIS

Sistemas de Información Ejecutiva (EIS)

Un Sistema de Información para Ejecutivos o Sistema de Información Ejecutiva es una herramienta software, basada en un DSS, que provee a los gerentes de un acceso sencillo a información interna y externa de su compañía, y que es relevante para sus factores clave de éxito.
La finalidad principal es que el ejecutivo tenga a su disposición un panorama completo del estado de los indicadores de negocio que le afectan al instante, manteniendo también la posibilidad de analizar con detalle aquellos que no estén cumpliendo con las expectativas establecidas, para determinar el plan de acción más adecuado.


Sistemas de Información Ejecutiva (EIS)

De forma más pragmática, se puede definir un EIS como una aplicación informática que muestra informes y listados (query & reporting) de las diferentes áreas de negocio, de forma consolidada, para facilitar la monitorización de la empresa o de una unidad de la misma.
El EIS se caracteriza por ofrecer al ejecutivo un acceso rápido y efectivo a la información compartida, utilizando interfaces gráficas visuales e intutivas. Suele incluir alertas e informes basados en excepción, así como históricos y análisis de tendencias. También es frecuente que permita la domiciliación por correo de los informes más relevantes.
A través de esta solución se puede contar con un resumen del comportamiento de una organización o área específica, y poder compararla a través del tiempo. Es posible, además, ajustar la visión de la información a la teoría de Balanced Scorecard o Cuadro de Mando Integral impulsada por Norton y Kaplan, o bien a cualquier modelo estratégico de indicadores que maneje la compañía.


Ejemplo de EIS

Si no está familiarizado con el concepto de Sistema de Información Ejecutiva, puede resultarle útil, además, examinar las siguientes definiciones:

martes, diciembre 07, 2010

Tomcat y configuraciones

Tomado de: Tomcat

h1

Contendores del tomcat

2 Noviembre 2009
Context Container
El Context element representa una aplicación web, que se ejecuta en un host virtual. Cada aplicacion se basa en un archivo de aplicación (WAR), o un directorio que contiene los elementos descomprimidos.
Catalina decide que plicación que procesa una petición HTTP basándose en la URI comparandola con la ruta del contexto. Una vez que se seleciona el contexto, éste decidira el servlet para procesar la petición de acuerdo con los mapeos de los servlets definidos en el descriptor de la aplicación web (web.xml) que se encuentra en /WEB-INF/web.xml.
Se pueden definir tantos contextos como se quiera, teninedo en cuenta que cada contexto tiene que tener una ruta única, además, debe de existir un contexto con una ruta con una ruta cuya longitud sea cero. Este contexto es el contexto por defecto para los hosts virtuales y se usa para procesar todas las peticiones que no coinciden con ningún contexto.
A partir del Tomcat 5, no se recomienda poner elementos directamente en el server.xml. Esto es porque no es posible modificar la configuración del contexto en el fichero server.xml y recargar dicha configuración sin reiniciar el Tomcat.
Los contextos se pueden definir explicitamente en:
$CATALINA_HOME/conf/context.xml: La información del contexto se cargaran por todas las aplicaciones.
$CATALINA_HOME/conf/[enginename]/[hostname]/context.xml : La información del contexto se cargara por todas las aplicaciones en ese host virtual.
Engine Container
El Engine representa todo el proceso de peticiones asociados a un servicio del catalina en particular, recibe y procesa todas las peticiones de uno o más conectores devolciendo el response completo al conector para que se la devuelva al cliente.
Tiene que existir un engine dentro de un sericio, seguido de todos los conectores asociados al servicio.
Host Container
El elemento host representa un host virtual, que representa una asociación al dominio (por ejemplo “www.google.com”) con el servidor Catalina sobre el que se ejecuta. Para que funcione correctamente se tiene que registrar la DNS.
Para poder asociar mas de un dominio a un host se tiene que usan los alias. Se pueden asociar mas de un host a un Engine. Dentro del host se puede anidar los contextos de las aplicaciones web asociados al host virtual. Al menos uno de tiene que ser el defaultHost del Engine.
h1

Válvulas de Tomcat

2 Noviembre 2009
¿Qué es una válvula del tomcat?
Las válvulas del tomcat son una técnología introducida a partir de Tomcat 4 que permite asociar una instacia de una clase Java al un contenedor Catalina.
Esta configuración permite que la clase asociada actue como un pre-procesador de las peticiones. Estas clases se llaman válvulas, y deben implementar la intefaz org.apache.catalina.Valve interface o extender la clase org.apache.catalina.valves.ValveBase. Las válvulas son propias de Tomcat y no pueden ser usadas en otros contenedores de servlet. Las válvulas disponibles son:
- Access Log
- Remote Address Filter
- Remote Host Filter
- Request Dumper
- Single Sign On
- Form Authenticator
Access Log Valve
La primera válvula por defecto del tomcat es Access Log Valve, que está implementada por la clase org.apache.catalina.valves.AccessLogValve. Crea ficheros de log para rastrear el acceso a la información de los clientes.
Alguna de la infomación que rastrea son clicks, actividad de la sesión del usuario, información de la autenticación del usuario entre otras. Esta válvula se puede asociar a un engine, host o context container del Tomcat.
Ejemplo de uso :
1<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common"/>
Este código indica que los logs se guardaran en el directorio /logs, con el prefijo “localhost_access_log.”, y con el sufijo “.txt”.
Remote Address Filter
El Remote Address filter lo implementa la clase org.apache.catalina.valves.RemoteAddrValve, permite comparar direcciones IP de los clientes que realizan la petición con una o varias expresiones regulares para prohibir o permitir el acceso. Esta válvula se puede asociar al Engine, Host, o Context container.
Ejemplo de uso:
1<Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="127.*"/>
Esta sentencia prohibe el acceso a todos los clientes cuya IP empiecen por 127.
Remote Host Filter
El Remote Host filter está implementado por org.apache.catalina.valves.RemoteHostValve es muy parecido al RemoteAddrValve, con la diferencia que te permite comparar al nombre del host en vez de la IP. Se puede asociar al Engine, Host, o Context container.
Ejemplo de uso:
1<Valve className="org.apache.catalina.valves.RemoteHostValve" deny="virtuas*"/>
Con esta sentencia prohibimos el acceso a todos los host con que incluyan en su nombre virtuas.
Request Dumper Valve
ElRequest Dumper valve lo implenta la clase org.apache.catalina.valves.RequestDumperValve es una herramienta de depuración que escribe en el log el detalle de cada petición realizada. Se puede asociar al Engine, Host, o Context container.
Ejemplo de uso:
1<Valve className="org.apache.catalina.valves.RequestDumperValve"/>
Si accedemos a cualquier aplicación en localhost:8080 y accedemos al log, veremos unas cuantas entradas realizadas por el RequestDumperValve.
Single Sing On
Esta válvula se utiliza cuando queremos que los usuarios puedan identificarse en cualquier aplicacion en nuestro virtual host, y que su identidad sea reconocida por cualquier aplicación que esté en ese host.
Ejemplo de uso:
1<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
Form Authenticator Valve
Se añade automáticamente al Context cuando este se configura para usar autenticación mediante FORM.
h1

Control de accesos por IP a Tomcat

9 Octubre 2009
Hace poco tuve que capar el acceso a una aplicación por IP, barajamos varias opciones y al final el personal de sistemas tomó una decisión. De todas formas me pareció muy interesante usar las valve o válvulas de Tomcat para hacerlo. Nunca lo había hecho, ni sabía que se podía hacer con el propio Tomcat, siempre había pensado en firewalls o apache, o cualquier otra cosa. La verdad es que nunca tuve que ver como se hacía hasta ahora.
Para hacerlo hay que hacer lo siguiente:
En el fichero server.xml, dentro del Host localhost, ponemos lo siguiente:
1<Valve lassName="org.apache.catalina.valves.RemoteAddrValve" deny="192.164.1.*">
En este caso prohibimos el acceso a todas las direcciones IP que concuerden con 192.164.1.*, se pueden poner más si separamos las IPs con “,”. También se puede definir el parámetro “allow”  que se usa de la misma forma, en este caso todas las IPs que no concuerden con nuestra expresión, no podrán tener acceso.
h1

Vulnerabilidades en Tomcat

9 Octubre 2009
Se han encontrado varios dos fallos de seguridad en las siguientes versiones de tomcat:
Tomcat 4.1.0 al 4.1.37
Tomcat 5.5.0 al 5.5.26
Tomcat 6.0.0 al 6.0.16
Estas vulnerabilidades son:
1)En el RequestDispatcher la ruta de destino se normalizó antes de que la cadena de consulta se ha retirado. Por lo tanto si se pone un parámetro malicioso en la consulta se puede conseguir acceder a información restringida o información que se encuentre en el WEB-IND
Ejemplo:
Una página que tenga:
<%

pageContext.forward("/page2.jsp?somepar=someval&par="+request.getParamet

er("blah"));

%>

El hacker puede usar:

http://host/page.jsp?blah=/../WEB-INF/web.xml


2) HttpServletResponse.sendError () no es sólo aparece en la página de error, también se utiliza en el HTTP response. Esto puede incluir caracteres que son ilegales en las cabeceras HTTP. Con un esto se puede conseguir un ataque XSS, al inyectar contenido arbitrario en la respuesta HTTP.
Por ejemplo:
<%@page contentType=”text/html”%>
<%

final String CRLF = "\u010D\u010A";

final String payload = CRLF + CRLF + "<script

type='text/javascript'>document.write('Hi, there!')</script><div style='display:none'>";

final String message = "Authorization is required to access " + payload;

response.sendError(403, message);

%>
h1

Comunicación entre contextos

9 Octubre 2009
En uno de los proyectos en los que trabajo, tengo la necesidad de compartir variables entre dos contextos que se encuentran en el mismo Tomcat y descubrí el CrossContext que es un atributo de configuración de tomcat que sirve para que las diferentes aplicaciones en el servidor compartan el contexto.
Se tiene que modificar el fichero conf/server.xml del tomcat añadiendo las siguientes líneas dentro del tag <host>:
<Context path=”/miapiclicacion1″ debug=”0″ reloadable=”true” crossContext=”true” />
<Context path=”/miaplicicacion2″ debug=”0″ reloadable=”true” crossContext=”true” />
Con el “crossContext = true” indicamos a los dos proyectos que van a compartir información.
En uno de los proyectos en los que trabajo, tengo la necesidad de compartir variables entre dos contextos que se encuentran en el mismo Tomcat y descubrí el CrossContext que es un atributo de configuración de tomcat que sirve para que las diferentes aplicaciones en el servidor compartan el contexto.
Se tiene que modificar el fichero conf/server.xml del tomcat añadiendo las siguientes líneas dentro del tag <host>:
<Context path=”/miapiclicacion1″ debug=”0″ reloadable=”true” crossContext=”true” />
<Context path=”/miaplicicacion2″ debug=”0″ reloadable=”true” crossContext=”true” />
Con el “crossContext = true” indicamos a los dos proyectos que van a compartir información.
Ahora en una de las aplicaciones podemos poner algo así:
application.setAttribute(”variable”,”hola”);
En la otra ponemos
ServletContext sc = pageContext.getServletContext().getContext(”/miaplicacion2″); //inicializa el servlerContext con el nombre de la aplicación de la que queremos //obtener el contexto
out.println(sc.getAttribute(”variable”));
h1

¿Cuál es la diferencia entre common/lib y shared/lib en Tomcat?

8 Octubre 2009
En common/lib están los archivos jar que se por las aplicaciones web y el propio servidor, mientras que en shared/lib tenemos las librerías que son accesibles sólo para las aplicaciones web.
h1

El log de Tomcat

22 Enero 2009
Hoy he tenido un problema, me he dado cuenta de que mi log del tomcat era demasiado grande, 6 Gb; Lo cual me llamo la atención, ya que sabía, que por defecto el log de tomcat se define como “rotable” es decir, que se rotan los logs una vez al día. Miré si era problema de premisos y no, era problema de configuración. Así que desempolve mi libro de tomcat y lo configuré bien. De ahí, que hoy haya decidido explicar un poco este tema.
Desde el Tomcat 4, existe un concepto que se conoce como “valve” que permite asociar una instancia de una clase java a un contenedor Catalina. De esta forma, asociando el nombre de la clase, podemos hacer que esta actue como un preprocesador de cada solicitud. Estas clases deben implementar la clase org.apache.catalina.Valve o extender la org.apache.catalina.valves.ValveBase clase. Tomcat viene configurado con cuatro válvulas:
- Access Log
- Remote Address Filter
- Remote Host Filter
- Request Dumper
Me voy a centrar en la primera, la válvula del log o LogAccessValve, la clase es org.apache.catalina.valves.AccessLogValve. Cuya misión es crear archivos de log para seguir el seguimiento de la aplicación del servidor de aplicaciones o de la aplicación si deseamos usar este log y no uno propio para ello. Algunos de las seguimientos que hace esta válvula es hit counts, actividad de la sesión del usuario, la autenticación de los usuarios, entre otros.
El siguiente fragmento de código es un ejemplo usando la entrada org.apache.catalina.valves.AccessLogValve:

<Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs” prefix=”localhost_access_log.” suffix=”.txt” pattern=”common”/>
Este fragmento de código establece que los archivos de log se colocarán en la <CATALINA_HOME> /, con el sufijo localhost_access_log, con el sufijo txt.
El atributo que me dio a mi el quebradero de cabeza era rotable, que en mi caso estaba a false y con esto hay que tener mucho cuidado. Por defecto está a true.
h1

Ampliar la memoria al tomcat

16 Diciembre 2008
Uno de los problemas más comunes que nos hemos encontrado todos alguna vez es que nuestro servidor de aplicaciones, en este caso, tomcat, se quede sin memoria (heap space), para ampliarlo tenemos que tener en cuenta los parámetros que tenemos que modificar, cómo modificarlos y dónde modificarlos. Para empezar vamos a hablar de las opciones:
  • Maximum heap size: Esto indica el tamaño máximo de la memoria que usara la máquina virtual de java (JVM). En la mayoría de los casos el valor que toma por defecto es 64MB. Para ampliar la memoria se utiliza el parámetro -Xmx, por ejemplo, -Xmx512m. Hay que tener en cuenta que la memoria que se le aplique debe ser consiederablemente menor a la cantidad de RAM del sistema, sino puede entrar en conflicto con otras aplicaciones.
  • Nota: Si queremos saber la memoria de la que disponemos en Linux, ejecutar el comando top o free.
  • Initial heap size: Indica el la memoria que se utiliza inicialmente y se configura de la siguiente usando el parámetro -Xms, por ejemplo, -Xms252m
Algunos de los fallos comunes a la hora de configurar la memoria del tomcat son:
  1. No poner m, M o g, G, teniendo en cuenta que es sensible a mayúsculas.
  2. Escribir mal la sentencia, no lleva espacios ni el símbolo “=”, la forma correcta es -Xmx512m.
  3. Poner el initial heap size mayor que el maximun heap size.
  4. Que se le haya asignado una memoría mayor que la real del sistema.
  5. Usar como la unidad mb cuando es m.
  6. Asignarle más memoria de la que la JVM piensa que va a ser necesaria.
  7. No expresar la cantidad como un número entero.
Para modificar el tamaño de la memoria debemos ir a $TOMCAT_HOME\bin\catalina.sh o catalina.bat y poner:
set CATALINA_OPTS=”-Xms512m -Xmx512m”  (Windows)
export CATALINA_OPTS=”-Xms512m -Xmx512m”  (linux)

viernes, diciembre 03, 2010

En Resumen un Almacen de Datos(DataWareHouse) es

  1. La ventaja principal de este tipo de sistemas se basa en su concepto fundamental, la estructura de la información
  2. Integrado: los datos almacenados en el Data Warehouse deben integrarse en una estructura consistente, por lo que las inconsistencias existentes entre los diversos sistemas operacionales deben ser eliminadas. La información suele estructurarse también en distintos niveles de detalle para adecuarse a las distintas necesidades de los usuarios.
  3. Temático: sólo los datos necesarios para el proceso de generación del conocimiento del negocio se integran desde el entorno operacional. Los datos se organizan por temas para facilitar su acceso y entendimiento por parte de los usuarios finales. Por ejemplo, todos los datos sobre clientes pueden ser consolidados en una única tabla del Data Warehouse. De esta forma, las peticiones de información sobre clientes serán más fáciles de responder dado que toda la información reside en el mismo lugar.
  4. Histórico: el tiempo es parte implícita de la información contenida en un Data Warehouse. En los sistemas operacionales, los datos siempre reflejan el estado de la actividad del negocio en el momento presente. Por el contrario, la información almacenada en el Data Warehouse sirve, entre otras cosas, para realizar análisis de tendencias. Por lo tanto, el Data Warehouse se carga con los distintos valores que toma una variable en el tiempo para permitir comparaciones.
  5. No volátil: el almacén de información de un Data Warehouse existe para ser leído, y no modificado. La información es por tanto permanente, significando la actualización del Data Warehouse la incorporación de los últimos valores que tomaron las distintas variables contenidas en él sin ningún tipo de acción sobre lo que ya existía.
Para comprender el concepto de Data Warehouse, es importante considerar los procesos que lo conforman. A continuación se describen dichos procesos clave en la gestión de un Data Warehouse:
Extraccion: obtención de información de las distintas fuentes tanto internas como externas.
Elaboracion: filtrado, limpieza, depuración, homogeneización y agrupación de la información.
Carga: organización y actualización de los datos y los metadatos en la base de datos.
Explotacion: extracción y análisis de la información en los distintos niveles de agrupación.

3.4.COMPONENTES A TENER EN CUENTA A LA HORA DE CONSTRUIR UN DW

3.4.1.Hardware

3.4.2.-Software de almacenamiento (SGBD)

3.4.3.- Software de extracción y manipulación de datos

Control de la extracción de los datos y su automatización, disminuyendo el tiempo empleado en el descubrimiento de procesos no documentados, minimizando el margen de error y permitiendo mayor flexibilidad.
Acceso a diferentes tecnologías, haciendo un uso efectivo del hardware, software, datos y recursos humanos existentes.
Proporcionar la gestión integrada del Data Warehouse y los Data Marts existentes, integrando la extracción, transformación y carga para la construcción del Data Warehouse corporativo y de los Data Marts.
Uso de la arquitectura de metadatos, facilitando la definición de los objetos de negocio y las reglas de consolidación.
Acceso a una gran variedad de fuentes de datos diferentes.
Manejo de excepciones.
Planificación, logs, interfaces a schedulers de terceros, que nos permitiran llevan una gestión de la planificación de todos los procesos necesarios para la carga del DW.
Interfaz independiente de hardware.
Soporte en la explotación del Data Warehouse.
A veces, no se suele prestar la suficiente atención a esta fase de la gestión del Data Warehouse, aun cuando supone una gran parte del esfuerzo en la construcción de un Data Warehouse. Existen multitud de herramientas disponibles en el mercado que automatizan parte del trabajo.

3.4.4.- Herramientas Middleware

• Por un lado herramientas Middleware, que provean conectividad entre entornos diferentes, para ayudar en la gestión del Data Warehouse.
• Por otro, analizadores y aceleradores de consultas, que permitan optimizar tiempos de respuestas en las necesidades analíticas, o de carga de los diferentes datos desde los sistemas operacionales hasta el Data Warehouse.
Las herramientas Middleware deben ser escalables siendo capaces de crecer conforme crece el Data Warehouse, sin problemas de volúmenes. Tambien deben ser flexibles y robustas, sin olvidarse de proporcionar un rendimiento adecuado. Estarán abiertas a todo tipos de entornos de almacenamiento de datos, tanto mediante estándares de facto (OLE, ODBC, etc.), como a los tipos de mercado más populares (DB2, Access, etc.). La conectividad, al menos en estándares de transporte (SNA LU6.2, DECnet, etc.) debe estar tambien asegurada.
Con el uso de estas herramientas de Middleware lograremos:
• Maximizar los recursos ejecutando las aplicaciones en la plataforma más adecuada.
• Integrar los datos y aplicaciones existentes en una plataforma distribuida.
• Automatizar la distribución de datos y aplicaciones desde un sistema centralizado.
• Reducir tráfico en la red, balanceando los niveles de cliente servidor (mas o menos datos en local, mas o menos proceso en local).
• Explotar las capacidades de sistemas remotos sin tener que aprender multiples entornos operativos.
• Asegurar la escalabilidad del sistema.
• Desarrollar aplicaciones en local y explotarlas en el servidor.
Los analizadores y aceleradores de querys trabajan volcando sobre un fichero de log las consultas ejecutadas y datos asociados a las mismas (tiempo de respuesta, tablas accedidas, método de acceso, etc). Este log se analiza, bien automáticamente o mediante la supervisión del administrador de datos, para mejorar los tiempos de accesos.
Estos sistemas de monitorización se pueden implementar en un entorno separado de pruebas, o en el entorno real. Si se ejecutan sobre un entorno de pruebas, el rendimiento del entorno real no se vé afectado. Sin embargo, no es posible optimizar los esfuerzos, puesto que los análisis efectuados pueden realizarse sobre consultas no críticas o no frecuentemente realizadas por los usuarios.
El implantar un sistema analizador de consultas, en el entorno real tiene además una serie de ventajas tales como:
• Se pueden monitorizar los tiempos de respuesta del entorno real.
• Se pueden implantar mecanismos de optimización de las consultas, reduciendo la carga del sistema.
• Se puede imputar costes a los usuarios por el coste del Data Warehouse.
• Se pueden implantar mecanismos de bloqueo para las consultas que vayan a implicar un tiempo de respuesta excesivo.

3.4.5.Conclusiones y consideraciones de interes.

El Data Warehouse va a ser el elemento principal en nuestro sistema de Inteligencia de Negocio. De su correcta definición, procesamiento y carga de datos va a depender el exito posterior del proyecto.
Aunque el usuario al final solo vea un conjunto de herramientas de analisis que utilizar para “atacar” a los datos, por delante hay una serie de procesos que hacen que toda la información proveniente de diferentes sistemas haya sido identificada, extraida, procesada, homogeneizada, depurada y cargada en el Datawarehouse. Esto es posible a través de las herramientas ETL y Middleware. Y esta  es la parte que normalmente mas tiempo lleva en cualquier proyecto.
Muchas veces conviene elegir un departamento piloto para implantar sistemas de este tipo que luego nos permitan vender internamente dentro de la organización los proyectos.
Habrá que dar siempre importancia a la formación como eje fundamental al uso de las herramientas.
Los proyectos de BI y DW no van a ser solo proyectos tecnológicos, hay mucho mas detras, y aunque en ellos se utilize la tecnología tiene que haber conocimiento empresarial para poder reflejar en el lo que  realmente se necesita, desde los niveles mas bajos hasta los superiores de toma de decisiones. En este momento el consultor de BI también tiene que ser capaz de aportar no solo su conocimiento tecnológico, sino también conocimiento de las area de negocio y de los diferentes elementos que se van a utilizar en el diseño, desarrollo y explotación de un sistema de BI (ver el artículo de Jorge Fernández en su blog: El consultor de Bi, ese bicho raro ).

3.4.6. Nuevas tendencias en el mundo DW. El Datawarehouse 2.0.

Los sistemas DW han evolucionado en los ultimos años conforme han surgido nuevas necesidades. Los motivos de esta evolución son varios, y los podemos resumir en:
- Uso de herramientas de analisis que obligaban a estructuras diferentes optimazadas al uso de determinadas tecnologías (por ejemplo el data mining o el uso de herramientas estadísticas).
- Simplificación de la gestión de sistemas DW complejos formados por multiples datamarts orientados a cada departamento en los que se pierde el concepto de Corporativo (que hace que se pierdan oportunidades ).
- De la unión de multiples aplicaciones pequeñas (Datamarts o Datawarehouse), no surge toda la información corporativa. Sería necesario construir este Centro a partir del cual se van a generar todos los DW necesarios para todos los ambitos de análisis.
- Proceso Online: los procesos de actualización hacían que hubiera muchos momentos en los que no se podía acceder a los datos. Igualmente, podría haber cierto retardo en la disponibilidad de la información, lo que nos impedia poder hacer análisis inmediatos (analisis mas orientados a la operacion del negocio).
- Evolución tecnologica en las herramientas ETL, costes de la tecnología (los costes han bajando de tal forma que permiten abordar los proyectos de una forma mas amplia), etc.

jueves, diciembre 02, 2010

Cómo no construir un datawarehouse

Tomado de:
Creando un DW

A través de TodoBI he encontrado un artículo muy interesante de Ralph Kimball (¿Algún despistado que no lo conoce?) donde detalla los 12 errores más comunes en la construcción de un datawarehouse.
Se trata de un artículo excelente. Cada vez que he cometido alguno de estos errores, he tenido que rectificar al poco tiempo. No valen los atajos, hay que hacer las cosas bien desde el principio.
Los doce errores más comunes en la construcción de un datawarehouse son:
  • Error 12: Incluir atributos de texto en una tabla de hechos, si se hace con la intención de filtrar o agrupar.
  • Error 11: Abreviar las descripciones en las tablas de dimensión con la intención de reducir el espacio requerido.
  • Error 10: Dividir las jerarquías y los niveles de las jerarquías en múltiples dimensiones.
  • Error 9: No afrontar el tratamiento de las dimensiones lentamente cambiantes.
  • Error 8: Crear “smart keys” para relacionar una tabla de dimension con una tabla de hechos.
  • Error 7: Añadir dimensiones en una tabla de hechos antes de definir su granularidad.
  • Error 6: Crear un modelo dimensional para resolver un informe en particular.
  • Error 5: Mezclar hechos de diferente granularidad en una misma tabla de hechos.
  • Error 4: Olvidarse del máximo nivel de detalle en el modelo entidad-relación.
  • Error 3: Omitir las tablas agregadas y comprimir las tablas de dimension para afrontar los problemas de rendimiento.
  • Error 2: No unificar los hechos entre distintas tablas de hechos
  • Error 1: No compartir dimensiones entre diferentes tablas de hechos.
En mi vida laboral he participado en la construcción de varios datawarehouses, y he visto muchos de estos errores. Durante los próximos días, analizaré una a una estas recomendaciones de Kimball, e intentaré justificar por que son errores graves y cómo debemos evitarlos.
A mis lectores menos "tekies", os pido perdón porque los próximos mensajes no los escribo pensando en vosotros. Van dirigidos al lado oscuro... :-)

Serie sobre cómo construir un datawarehouse

Finalmente, he terminado de recorrer la lista de Ralph Kimball sobre cómo no construir un datawarehouse. A lo largo de estos artículos he intentado introducir los conceptos más importantes relativos a la modelización de un datawarehouse (base de cualquier entorno Business Intelligence).
Para finalizar esta serie, incluyo el índice de todas las entradas:
Cada artículo, analiza uno de los 12 errores que justificaron esta serie:
  • Mistake 12: Place text attributes in a fact table if you mean to use them as the basis of constraining and grouping.
  • Mistake 11: Limit the use of verbose descriptive attributes in dimensions to save space.
  • Mistake 10: Split hierarchies and hierarchy levels into multiple dimensions.
  • Mistake 9: Delay dealing with a slowly changing dimension (SCD).
  • Mistake 8: Use smart keys to join a dimension table to a fact table.
  • Mistake 7: Add dimensions to a fact table before declaring its grain.
  • Mistake 6: Declare that a dimensional model is "based on a specific report."
  • Mistake 5: Mix facts of differing grain in the same fact table.
  • Mistake 4: Leave lowest-level atomic data in E/R format.
  • Mistake 3: Eschew aggregate fact tables and shrunken dimension tables when faced with query performance concerns
  • Mistake 2: Fail to conform facts across separate fact tables.
  • Mistake 1: Fail to conform dimensions across separate fact tables.
Y que traduje de esta manera...
  • Error 12: Incluir atributos de texto en una tabla de hechos, si se hace con la intención de filtrar o agrupar.
  • Error 11: Abreviar las descripciones en las tablas de dimensión con la intención de reducir el espacio requerido.
  • Error 10: Dividir las jerarquías y los niveles de las jerarquías en múltiples dimensiones.
  • Error 9: No afrontar el tratamiento de las dimensiones lentamente cambiantes.
  • Error 8: Crear "smart keys" para relacionar una tabla de dimension con una tabla de hechos.
  • Error 7: Añadir dimensiones en una tabla de hechos antes de definir su granularidad.
  • Error 6: Crear un modelo dimensional para resolver un informe en particular.
  • Error 5: Mezclar hechos de diferente granularidad en una misma tabla de hechos.
  • Error 4: Olvidarse del máximo nivel de detalle en el modelo entidad-relación.
  • Error 3: Omitir las tablas agregadas y comprimir las tablas de dimension para afrontar los problemas de rendimiento.
  • Error 2: No unificar los hechos entre distintas tablas de hechos
  • Error 1: No compartir dimensiones entre diferentes tablas de hechos.