Aplicación de mejores prácticas para el modelado

Implementar prácticas de modelado recomendadas

Objective

After completing this lesson, you will be able to implementar las prácticas de modelado recomendadas.

Comprender el proceso de instanciación

Antes de profundizar en el detalle de cómo mejorar el rendimiento de la vista de cálculo, es útil aprender un poco sobre la forma en que una vista de cálculo responde a una consulta que la llama.

Un esquema del proceso de optimización para consultas en modelos almacenados. En primer lugar, el motor de cálculo crea una instancia de un modelo de tiempo de ejecución para la consulta, luego la optimiza y, por último, el optimizador SQL se encarga. Para obtener más detalles, consulte el siguiente texto.

El motor de cálculo optimiza previamente las consultas antes de que el optimizador SQL las trabaje.

Una vista de cálculo se instancia en el tiempo de ejecución cuando se ejecuta una consulta. Durante el proceso de instanciación, el motor de cálculo simplifica la vista de cálculo en un modelo que cumple los requisitos de la consulta. Esto da como resultado un modelo reducido que el motor de cálculo puede optimizar aún más. Por ejemplo, tiene en cuenta opciones como join dinámico, cardinalidad de join y poda de nodos de unión.

A continuación, el optimizador SQL aplica otras optimizaciones y determina el plan de ejecución de la consulta; por ejemplo, determina la secuencia óptima de operaciones y también aquellos pasos que se podrían ejecutar en paralelo.

Detalles del proceso de instanciación. La consulta que llama la vista de cálculo genera una vista de cálculo podada que lee solo las partes necesarias de la vista de cálculo original. No contiene atributos o indicadores que no formen parte de la consulta.

El proceso de instanciación transforma una vista de cálculo original (que define) en un modelo de ejecución basado en una consulta que se ejecuta en la parte superior de una vista de cálculo. La vista generada se poda de elementos innecesarios de la vista de cálculo original y técnicamente es una vista de columna que hace referencia a un nodo específico de la vista de cálculo original.

Durante el proceso de instanciación, la consulta y el modelo de cálculo original se combinan para crear el modelo de cálculo de ejecución optimizado.

Prácticas recomendadas para el modelado

En esta lección, trataremos las recomendaciones y mejores prácticas para el modelado de datos con SAP HANA Cloud.

Recomendaciones generales de diseño

Captura de pantalla de una vista de cálculo enorme y cómo se podría dividir en fragmentos más pequeños. Debe identificar patrones recurrentes y, a continuación, dividir los modelos en partes más pequeñas para evitar vistas monolíticas.

Desglose modelos grandes en vistas de cálculo individuales para que sean más fáciles de comprender y también le permitan definir componentes reutilizables, evitando así la redundancia y la actualización duplicada como consecuencia.

Intente desarrollar vistas de cálculo en capas para que cada capa consuma las capas inferiores. Cualquier cambio en las capas inferiores impacta inmediatamente en las capas más altas. Las capas más bajas deben proporcionar las vistas de cálculo básicas. Las capas superiores añaden semántica creciente para proporcionar más significado empresarial a las vistas.

Nota

No se preocupe de que dividir vistas de cálculo grandes en módulos individuales dañará el rendimiento general. En tiempo de ejecución, el optimizador SQL intenta aplanar toda la pila de vistas de cálculo en una única sentencia ejecutable. Recuerde que las definiciones de vista de cálculo, por muchas que haya en la pila, representan una vista lógica del flujo de datos. La forma en que el optimizador construye la consulta SQL final nunca se puede conocer en la etapa de diseño simplemente observando las definiciones de la vista de cálculo. Utilice herramientas SQL como SQL Analyzer para verificar el SQL generado, si es necesario.

Objetivo de despliegue de consultas

Debe apuntar al despliegue de consultas. La idea es que los objetos query sean directamente accesibles para el optimizador SQL en un nivel detallado. La ventaja es un rendimiento de tiempo de ejecución más rápido de los planes desplegados, pero el tiempo de compilación de la consulta puede aumentar.

En el tiempo de ejecución, el procesador SQL analiza su vista de cálculo. Un objetivo clave es convertir cada operación de vista de cálculo en un operador SQL correspondiente para convertir el gráfico de flujo de datos completo en una única sentencia SQL. Esto se llama desdoblamiento. Una ventaja de desplegar en SQL es que solo se necesita el motor SQL y no se llama ningún otro motor de SAP HANA, como el motor de cálculo u otros motores de SAP HANA Cloud como Espacial o Gráfico. Sin embargo, debido a su diseño de vista de cálculo, puede que haya pasos que no se puedan traducir en operadores SQL. Si estos pasos no se pueden traducir, se procesarán en los motores SAP HANA especializados que generan una o más vistas de columna materializadas. A continuación, SQL lee esta vista de columna materializada. Esto significa que, en lugar de leer SQL directamente de las tablas fuente, primero se deben generar las vistas de columna y, a continuación, el SQL debe leer de las vistas de columna intermedias. Esto daría como resultado una consulta parcialmente desplegada que podría no funcionar, así como una consulta completamente desplegada debido a optimizaciones SQL limitadas.

Algunos nodos y operadores no se pueden desplegar cuando no hay un operador SQL equivalente para la función de vista de cálculo que está implementando.

Se debe enfatizar que aunque el despliegue es generalmente deseable, a veces el despliegue puede realmente dañar el rendimiento general. Por ejemplo, el tiempo de compilación de consultas puede aumentar cuando la consulta debe desplegarse cada vez que se llama la vista de cálculo con nuevas selecciones. Por lo tanto, es posible fijar una nota SQL que impida el despliegue para vistas de cálculo individuales. Se encuentra en Propiedades→de nodo semántico→Avanzado.

Puede fijar un parámetro global para evitar el despliegue para todas las vistas de cálculo.

Puede verificar si su vista de cálculo se ha desplegado utilizando Analizar > Explicar plan en la consola SQL, donde puede ver la lista de operadores y fuentes de datos.

Cómo comprobar el despliegue: Capturas de pantalla del analizador SQL para una consulta desplegada y para una consulta plegada. La consulta desplegada accede a una tabla de columnas. La consulta plegada accede a las vistas de columna.

Si se utiliza una vista de columna como fuente de datos en lugar de una tabla, sabe que no se trata de una consulta desplegada, ya que el resultado se ha materializado como una vista intermedia y no se ha leído directamente de una tabla. Una consulta completamente desplegada solo accede a las tablas.

Atención

En algunos escenarios, el nombre del operador también puede ser TABLE SCAN, que también revela que se ha accedido al objeto "físico" subyacente, lo que significa que esta rama del escenario se ha desplegado.

Además, verifique el tiempo de compilación de la consulta frente al tiempo de ejecución para ver cómo el despliegue afecta al tiempo de ejecución global.

Es posible identificar cuántas consultas no se han desplegado. Ejecute una consulta en la vista de sistema M_FEATURE_USAGE de la siguiente manera:

Code Snippet
1234567891011
SELECT FEATURE_NAME, CALL_COUNT FROM "M_FEATURE_USAGE" WHERE COMPONENT_NAME = 'CALCENGINE' AND FEATURE_NAME IN ('QUERY TOTAL','QUERY UNFOLDING')

Utilizar vistas o tablas dedicadas para "Lista de valores"

En caso de problemas de rendimiento, generalmente le recomendamos que cree tablas o vistas de cálculo dedicadas para generar la lista de valores de ayuda para variables y parámetros de entrada.

Esquema de una vista de ayuda para entradas que lee datos maestros de producto. La vista de ayuda para entradas se aplica a una vista en Datos de ventas y otra vista en Datos de compras. Las ventajas de utilizar vistas de ayuda para entradas son diálogos de ayuda para entradas más rápidos, listas consistentes de variables en vistas de consumo y soporte para autorizaciones de análisis en el sentido de que los usuarios ven su lista de valores permitidos.

Este enfoque permite una visualización más rápida de la lista de valores sin leer toda la vista o tabla en la que se basa la vista de cálculo.

Esta también es la mejor práctica para que la lista de valores sea reutilizable y consistente de una vista de cálculo a otra, y los usuarios vean los mismos valores de selección.

La lista se puede controlar mediante filtros fijos simples en la ayuda de la vista de cálculo o incluso mediante autorizaciones de análisis que ofrecen una lista dinámica restringida a lo que cada usuario puede elegir en la interfaz.