
Las recomendaciones para desarrollar aplicaciones ABAP en SAP HANA
1. Almacenamiento por columnas vs Almacenamiento por filas
- Al crear una tabla se puede elegir crearla con almacenamiento por columnas (columnar) o por filas. Por defecto se creará por columnas
- Se recomienda configurar por columnas, a menos que haya una razón específica para hacerlo por filas
- El almacenamiento por columnas proporciona mejores propiedades de compresión, lo que aplica muy bien para tablas con gran cantidad de registros
2. Implementaciones específicas de SAP HANA
- En el desarrollo de ABAP en SAP HANA se tienen dos escenarios:
- Implementaciones independientes de la base de datos: Por ejemplo utilizando Open SQL y ABAP CDS
- Implementaciones que utilizan funciones específicas de SAP HANA: por ejemplo SQL nativo y HANA CDS
- En el primer caso no hay que considerar nada especial desde la perspectiva de la logística del software
- Se usa SAP HANA como cualquier otra base de datos, pero nos beneficiamos directamente de la alta velocidad dd procesamiento
- Los desarrollos son ejecutables en todos los sistemas de bases de datos soportados por Sap
- Para optimizar rendimiento de una aplicación Abap existente, se recomienda usar herramientas estándar
2.1 Primero Open y luego Native
- Preferiblemente debemos usar las vistas de Open SQL y CDS, antes de implementar SQL nativo, vistas de Sap Hana o procedimientos de base de datos
- El servidor de aplicaciones Abap no requiere de usuario adicional para la base de datos Sap Hana
2.2 Primero ABAP CDS y luego HANA CDS
- Debemos utilizar los procedimientos de la base de datos Abap en lugar de los procedimientos de la base de datos Hana
- Los objetos de desarrollo gestionados por Abapa As se vinculan de forma óptima con la gestión del ciclo de vida Abap
- Se puede sincronizar fácilmente los procedimientos de la base de datos Abap con otros objetos Abap y transportarlos
3. Recomendaciones para la migración
3.1 Código Abap dependiente de la base de datos
- Hay que probar y ajustar este tipo de código, por ejemplo el uso de SQL nativo con declaración EXEC SQL, o los hints
3.2 Conversión tablas de pool y cluster
- Como este tipo de tablas se convierten en tablas transparentes, pueden surgir problemas con el ordenamiento implícito, el cual se pierde al volverse transparente
3.3 Comportamiento del ordenamiento
- Hay que realizar ORDER BY en la declaración SQL SQLECT para controlar el ordenamiento
- En SAP HANA el ordenamiento implícito no esta garantizado porque los datos están orientados a columnas
4. Pautas de performance
Existen 5 reglas para optimizar la programación de bases de datos:
- Mantener el conjunto de resultados lo más pequeño posible : Usando WHERE, trabajando con HAVING, transfiriendo solo filas requeridas
- Mantener el conjunto de datos transferido lo más pequeño posible : Usando la adición UP TO n ROWS, trabajando con DISTINCT, reduciendo el número de columnas, utilizando funciones de agregación (count, min, max, sum, avg), realizando chequeos de existencia eficientemente, modificando solo las columnas necesarias.
- Reducir el número de ejecuciones de consulta : Usando operaciones de conjunto en lugar de operaciones individuales, no realizando más accesos múltiples a los mismos datos, no utilizar bucles con SELECT anidados, no ejecutar instrucciones SELECT en el LOOP a través de tablas internas, utilizando buffers.
- Minimizar el esfuerzo de búsqueda : Con índices. En bases de datos clásicas se da un menor esfuerzo de E/S, optimiza consumo de memoria caché, reduce el consumo de CPU y optimiza la transferencia de red por transferir menos datos. En SAP HANA tiene una prioridad mas baja porque en muchos casos no se requiere ningún índice; en SAP HANA los índices generalmente se crean para columnas individuales.
- Reducir la carga en la base de datos : Utilizando buffers, ordenando los datos, evitando accesos idénticos.