2010-09-13 19 views
9

Estoy trabajando para una empresa que ejecuta un producto de software basado en un servidor de base de datos MS SQL, y a través de los años he desarrollado 20-30 informes bastante avanzados en PHP, tomando datos directamente de la base de datos. Esto ha sido muy exitoso, y la gente está feliz con eso.¿Qué debería tener en cuenta al construir una solución OLAP desde cero?

Pero tiene algunos inconvenientes:

  • Para los nuevos cambios, que puede ser bastante intenso desarrollo
  • El usuario no puede experimentar mucho con los datos - que está bloqueado a una visión rígida
  • puede ser lento para grandes informes

que estoy considerando poco a poco van a un enfoque basado en OLAP, que se puede consultar desde Excel o algún servicio basado en web. Pero me gustaría hacer esto de una manera que introduzca la menor cantidad de nueva complejidad en el entorno de TI: la menor cantidad de servicios diferentes, trabajos de sincronización, etc.

Tengo algunas preguntas al respecto:

1) relacionados Workflow-:

  • ¿Qué es una buena ruta de desarrollo de "servidor SQL cuadro negro" a "OLAP listo para usar" ?
  • ¿Qué servidores y servicios se deben configurar y qué scripts se deben escribir?
  • ¿Cuáles son las partes más difíciles/más críticas/que consumen más tiempo?

2) ETL:

  • supongo que lo mejor es tener servidores separados para su almacén de datos y SQL Producción?
  • ¿Cómo se mantienen sincronizados (push/pull)? ¿Utilizando qué tecnologías/idiomas?
  • Para mí, SSIS parece demasiado complicado, y el flujo de trabajo gráfico no me atrae mucho; prefiero un script basado en texto que haga el trabajo. ¿Es esto factible?
  • ¿O es ventajoso utilizar el cliente gráfico con una sola fuente y un destino?

3) Desarrollo:

  • ¿Cuánto de esto (la integración de datos, servicios de análisis) se pueden mantener de manera eficiente desde una CLI-herramienta?
  • ¿Se puede transferir la configuración entre la producción y el desarrollo fácilmente?

Estoy satisfecho con cualquier respuesta que cubra solo algo de esto, y aunque es un entorno de MS, también me interesan las ventajas de otras tecnologías.

Respuesta

17

que sólo tienen experiencia con Microsoft OLAP, así que aquí están mis dos centavos con respecto a lo que sé:

  1. Si va a implementar cubos, y luego separar la producción de SQL Server de la fuente de los cubos. Los cubos requieren una gran cantidad de SELECT DISTINCT column_name FROM source.table. No quiere que el procesamiento de cubos bloquee su sistema de producción crítico para la misión.

  2. Aunque puede implementar cubos OLAP con tablas de relaciones estándar, encontrará rápidamente que a menos que sus datos sean un sistema de libro mayor probablemente necesitará reprocesar completamente sus tablas de hechos y dimensiones y esto requerirá volver a consultar la base de datos fuente una y otra vez. Ese es un gran argumento para construir un almacén de datos separado que usa transacciones estilo libro mayor para las tablas de hechos. Por ejemplo, si un cliente ordena algo y luego lo cancela, su sistema de origen puede rastrear esto como un cambio de estado. En su tabla de hechos, probablemente necesite mostrar esto como una fila para pedidos que tiene una cantidad positiva y una secuencia de ingresos y una fila para cancelar que tiene una cantidad negativa y un flujo de ingresos.

  3. OLAP puede ser excesivo para su entorno. El principal problema que parecía plantear era que sus informes son estáticos y los usuarios quieren acceder a los datos directamente. Podría construir un modelo de datos y dar acceso a los creadores de informes en SSRS, o informar el acceso de escritura en otro conjunto de BI como Cognos, Business Objects, etc. Generalmente, no recomiendo este enfoque, ya que es mucho más de lo que deberían tener la mayoría de los usuarios. saber para obtener datos, pero en una tienda pequeña esto puede ser suficiente y es fácil de implementar. Afrontémoslo: los usuarios generalmente solo quieren obtener los datos en Excel para manipularlos aún más. Por lo tanto, si no desea darles un front-end web y solo desea que accedan a los datos de Excel, podría darles acceso directo a la base de datos a una copia de los datos de producción. La desventaja de este enfoque es que los usuarios generalmente no entienden las relaciones SQL o de bases de datos. OLAP le ayuda a evitar forzar a los usuarios a aprender SQL o relaciones, pero no es fácil de implementar en su extremo. Si solo tiene un par de usuarios avanzados que necesitan este tipo de acceso, podría ser fácil enseñarles a los pocos usuarios avanzados cómo realizar consultas básicas en Excel en la base de datos, y les complacerá recibirlo mañana. OLAP no estará listo mañana.

  4. Si solo tiene algunos tipos de sistemas de datos de origen, puede salirse con la suya creando un informe estático superdinámico. Por ejemplo, tengo un informe que fue escrito en C# que básicamente permite a los usuarios seleccionar tantas columnas como deseen de una lista de 30 columnas y filtrar los datos en algunos campos de intervalos de fechas y listas de filtros de campo. Este sencillo informe cubre aproximadamente el 40% de todas las solicitudes de informes ad hoc de usuarios finales, ya que cubre todas las métricas y campos básicos y básicos del cliente. Recientemente trasladamos este informe a SSRS y eso nos permitió incrementar el número de campos a aproximadamente 100 y mejorar la experiencia general del usuario. Independientemente de la plataforma de informes, es posible ofrecer a los usuarios cierta flexibilidad dinámica incluso en los límites de un sistema de informes estáticos.

  5. Si solo tiene un par de bases de datos, probablemente pueda hacer una copia de seguridad y restaurar las bases de datos como su ETL. Sin embargo, si desea hacer algo más allá de eso, entonces también puede morder la bala y usar SSIS (o alguna otra herramienta de ETL). Una vez que ingresa a ETL para el almacenamiento de datos, va a utilizar una herramienta de diseño orientada a gráficos. La codificación funciona bien para las aplicaciones, pero ETL se trata más de flujos de trabajo y es por eso que las herramientas tienden a converger en una interfaz gráfica de usuario. Puede solucionar esto e intentar codificar un depósito de datos desde un editor de texto, pero al final perderá mucho. See this post for more details on the differences between loading data from code and loading data from SSIS.

REACCIÓN EN MODO DE USO cubos con almacén de datos relacionales

Es posible implementar un cubo sobre un almacén de datos relacional, pero hay algunos problemas importantes con el uso de este enfoque. La razón principal por la que es técnicamente factible tiene que ver con la forma en que configura su DSV. El DSV es esencialmente una capa lógica entre la base de datos física y las definiciones de cubo/dimensión. En lugar de importar las tablas relacionales al DSV, puede definir consultas con nombre o crear vistas en la base de datos que aplanan los datos.

La ventaja de este enfoque son los siguientes:

  1. Es relativamente fácil de implementar, ya que no tiene que construir un subsistema de toda ETL para empezar con OLAP.

  2. Este enfoque funciona bien para la creación de prototipos de cómo desea construir una solución a más largo plazo. Puede crear un prototipo en 1-2 días y mostrar algunos de los beneficios de OLAP hoy.

  3. Algunas tablas muy, muy grandes no tienen que estar completamente duplicadas solo para admitir un cubo OLAP. Tengo varias tablas de fila multimillonarias que son tablas de hechos casi completamente estandarizadas. Las únicas columnas que no tienen son las claves de fecha y también contienen algunos valores NULOS en campos que no deberían tener nulos. En lugar de duplicar estas tablas muy masivas, puede crear las claves de fecha sustituta y establecer valores para los nulos en la vista o consulta con nombre. Si no va a ver una gran ventaja de rendimiento para duplicar la tabla, entonces esto puede ser un candidato para dejarlo en un formato más crudo en la base de datos.

Las desventajas de este método son las siguientes:

  1. Si no se ha construido un verdadero almacén de datos método de Kimball, entonces es probable que no se realiza el seguimiento de las transacciones en un estilo de libro de contabilidad. Las tablas de hechos del método Kimball (al menos tal como yo las entiendo) siempre cambian los valores sumando y restando filas. Si alguien cancela parte de un pedido, no puede actualizar el valor en el cubo para la transacción individual. En cambio, debe equilibrar la transacción con un valor negativo. Si tiene que actualizar la transacción, tendrá que reprocesar completamente la partición del cubo para reemplazar el valor, que puede ser una operación muy costosa. A menos que su sistema fuente sea un sistema de transacción estilo libro de contabilidad, probablemente tendrá que crear una copia al estilo libro mayor en su subsistema ETL.

  2. Si no construye un almacén de datos del método Kimball, entonces probablemente esté utilizando claves principales no obstruidas y posiblemente no enteros en su base de datos. Esto afecta directamente el rendimiento de la consulta dentro del cubo. También lo configura para tener un almacén de datos teóricamente inflexible. Por ejemplo, si tiene un sistema de pedido de productos que usa una clave entera y comienza a utilizar un segundo sistema de pedido de productos como reemplazo del sistema heredado o en conjunto con el sistema heredado, puede tener dificultades para combinar los datos simplemente mediante el DSV ya que cada sistema tiene diferentes puntos de datos, métricas, flujos de trabajo, tipos de datos, etc. Peor aún, si tienen los mismos tipos de datos para la identificación del pedido y los valores de la identificación del pedido se superponen entre los sistemas, entonces debe declarar una clave sustituta que usted puede usar en ambos sistemas. Esto puede ser difícil, pero no imposible, de implementar sin usar un depósito de datos aplanado.

  3. Es posible que deba construir el sistema dos veces si comienza con el almacén de datos relacionales y luego pasa a la base de datos plana.Francamente, creo que la cantidad de trabajo duplicado es trivial. La mayoría de lo que aprendiste al construir el cubo en un almacén de datos relacional se traducirá en la configuración del nuevo cubo OLAP. El principal problema, sin embargo, es que probablemente creará un nuevo cubo por completo y luego los usuarios del antiguo cubo tendrán que migrar al nuevo cubo. Cualquier informe creado en SSRS o Excel probablemente se rompa en ese punto y necesite ser reescrito desde cero. Entonces, el costo principal de reconstruir el cubo está realmente en la reconstrucción de objetos dependientes, no en la reconstrucción del cubo mismo.

Avísame si quieres que amplíe alguno de los puntos anteriores. buena suerte.

+0

¿Podría aclarar pt. 2? En mis escasos experimentos con cubos OLAP, ha sido muy difícil usar el modelo de datos existente para construir un cubo: ¿no suele ser el caso que los datos deben "desnormalizarse" a un esquema de estrella/copo de nieve en la herramienta ETL? ? –

+0

Expandí en el punto 2 según su pedido. Avíseme si necesita que agregue comentarios adicionales. –

+0

Gracias por mencionar el nombre de Kimball: parece que estos libros http://www.ralphkimball.com/html/books.html tienen mucho sobre las mejores prácticas en el diseño de Data Warehouse, y los conseguiré. . –

3

Básicamente estás haciendo la pregunta del millón de dólares de "¿Cómo construyo un DWH?". Esta no es realmente una pregunta que pueda ser respondida decisivamente.

Sin embargo, aquí es un arranque rápido:

Si usted está buscando un producto viable mínimo, tenga en cuenta que usted está en un entorno de datos, y no un software puro uno. En entornos con muchos datos, es mucho más difícil crear un producto incrementalmente, porque la cantidad de esfuerzo para introducir cambios en el sistema es mucho mayor. Piense en ello como si cada cambio que realiza en un software tiene que ser de alguna manera compatible con cualquier cosa que haya hecho alguna vez. Ahora entiendes en qué demonios está Microsoft :-).

Además, los sistemas de datos involucran muchas herramientas de terceros como bases de datos, herramientas ETL y plataformas de informes. Las elecciones que haga deben ser viables para el desarrollo esperado de su sistema, de lo contrario, es posible que tenga que reemplazar por completo estas herramientas más adelante.

Si bien puede comenzar con una clonación de base de datos que se basará en SQL de copia simple y luego agregarlo o insertarlo en un OLAP, le recomiendo que se ensucie las manos con una herramienta ETL real desde el principio. Esto es especialmente cierto si prevé la necesidad de crecer. 9 de cada 10 veces, la necesidad aumentará.

MS-SQL es una buena opción para un DB si no le importa el costo. La herramienta ETL natural sería SSIS, y es una herramienta sólida también.

Incluso si sus primeras transformaciones son simplemente "tomar esta tabla y volcarla ahí", aún gana mucho en términos de gestión de procesos (¿ha ejecutado el trabajo? ¿Qué sucede si falla ?, etc.) y depuración. Además, es más fácil crecer orgánicamente a medida que los requisitos y/o casos especiales tienen que ser tratados.

Cuestiones relacionadas