SQLScript para tener la lógica en la base de datos de HANA

Los desarrolladores con conocimientos en SQL (Structured Query Language) se sentirán muy cómodos con SAP HANA y especialmente con SAP HANA Studio, tanto para el diseño de datos como para el diseño de vistas de información, este conocimiento será de mucha utilidad. Pero SAP HANA tiene algo más, tiene una extensión del lenguaje estándar para acceder y manipular las estructuras de bases de datos, denominado SQLScript


Los desarrolladores con conocimientos en SQL (Structured Query Language) se sentirán muy cómodos con SAP HANA y especialmente con SAP HANA Studio, tanto para el diseño de datos como para el diseño de vistas de información, este conocimiento será de mucha utilidad.  Pero SAP HANA tiene algo más, tiene una extensión del lenguaje estándar para acceder y manipular las estructuras de bases de datos, denominado SQLScript 

Tal como lo hemos comentado en entradas anteriores, uno de los objetivos de SAP HANA es evitar el movimiento de datos entre base de datos y aplicaciones, para ello, permite que cálculos y operaciones lógicas se ejecuten en la base de datos y no en las aplicaciones, contribuyendo de este modo, a lograr menores tiempo de consulta, notorio sobre todo cuando se procesa grandes cantidades de información. 

Con las lógicas en las aplicaciones, además del tráfico que generan al recuperar los datos que van a procesar, este procesamiento se hace registro por registro, lógicas con muy pocas posibilidades de optimizar.  Por otro lado con las lógicas en la base de datos hay mayores posibilidades de tener un código estandarizado y reutilizable, facilitando las tareas de mantenimiento y desarrollo. 

SQLScript incluye una serie de operadores, funciones y sentencias, las cuales podremos utilizar en la definición de objetos tipo procedimiento que crearemos con la sentencia CREATE PROCEDURE <nombre del procedimiento> LANGUAGE SQLSCRIPT AS…

Creando tablas con SAP HANA Studio

Por el momento, quizás no sea muy usual crear o actualizar manualmente tablas en la base de datos de SAP HANA, lo usual será que estas tareas se realicen a través de procesos ETL (Extracción, Transformación y Carga), definiciones automatizadas para recuperar datos desde otras fuentes hacia HANA (por ejemplo, con SAP BusinessObjects Data Services o SLT Replication Server). Pero si se concibe la idea de desarrollar una aplicación, el primer paso será crear las tablas que se necesiten.


Por el momento, quizás no sea muy usual crear o actualizar manualmente tablas en la base de datos de SAP HANA, lo usual será que estas tareas se realicen a través de procesos ETL (Extracción, Transformación y Carga), definiciones automatizadas para recuperar datos desde otras fuentes hacia HANA (por ejemplo, con SAP BusinessObjects Data Services o SLT Replication Server).  Pero si se concibe la idea de desarrollar una aplicación, el primer paso será crear las tablas que se necesiten. 

SAP HANA Studio - Perspectiva Navigator y el Quick Launch (La apariencia se personaliza vía el menú Window)

Para la creación de tablas utilizaremos SAP HANA Studio.  En la perspectiva Navigator observaremos una estructura de árbol agrupadas en tres grandes categorías:

  • Security. (Dependiendo de tu perfil de usuario, quizás no la veas). Este nodo contiene las definiciones de roles y usuarios del sistema.
  • Catalog. Contiene los objetos de bases que han sido activados. Los objetos son organizados en esquemas.
  • Content. Contiene los objetos de la base de datos activados y no activados.

 Estos tres nodos agrupadores de objetos de base de datos pueden parecer insuficientes, si fuera necesario consultar otros tipos de objetos, una alternativa es acceder a las vistas que tiene el sistema.

Menú conxtextual del nodo Catalog en la perspectiva NavigatorPara crear una tabla, debemos utilizar el editor SQL, una vía para activar una ventana de este editor, es haciendo clic derecho sobre el nodo Catalog. Si se trata de un nuevo proyecto o aplicación quizás convendría, primero, definir un esquema:

  • create schema «PRESUPUESTO»;
  • grant select on schema » PRESUPUESTO» to _SYS_REPO with grant option;

Con la primera sentencia se crea el y esquema y con la segunda se “comunica” al sistema la existencia de la misma, si se obvia, para la definición de las tablas y especialmente al consultarlas no estarán “visibles”.

Editor SQL

Para la creación de una tabla usaremos una sentencia similar a la siguiente:

CREATE COLUMN TABLE «PRESUPUESTO».»PROYECTOS»
(
«PROY_ID» INTEGER CS_INT NOT NULL ,
«PROY_DESC» VARCHAR(60) NOT NULL ,
«PROY_ACT» VARCHAR(2)
);

El término “COLUMN” determina que esta tabla tendrá un sistema de almacenamiento y acceso basado en columnas, obviándola, estaría basado en filas. Luego, podríamos insertar datos vía las siguientes sentencias:

insert into «PRESUPUESTO».»PROYECTOS» values(1001,’Proyecto 01′,’S’);
insert into «PRESUPUESTO».»PROYECTOS» values(1002,’Proyecto 02′,’S’);

Contenido de la tabla creada

 Ejecutadas estas sentencias visualizaremos, nuestro esquema y  tabla dentro del nodo Catalog (pulsando F5),  y dentro de la tabla, nuestros datos.

También podemos crear tablas vía el menú contextual de cualquier esquema de base de datos

Conceptos básicos antes de comenzar a utilizar SAP HANA Studio

(Resumen sobre Perpesctivas, Tablas y Campos y Vistas de Información)


Perpectivas

Viendo el entorno de trabajo de Studio, observaremos varios paneles, en la terminología de SAP HANA Studio se denominan perspectivas.  Las perspectivas disponibles son las siguientes:

  • Administration Console (perspectiva por defecto).
  • Modeler. 
  • Debug
  • RCP Perspective
  • Resource
  • SVN Repository Exploring
  • Team Synchronizing

Las perpectivas más importantes son Administration Console (Permite administrar nuestro SAP HANA Appliance, entre otras cosas podremos definir usuarios y asignarles autorizaciones) y Modeler (Con esta perspectiva se realiza todo el modelado de datos, a través de sentencias SQL y ventanas de edición)

 Tablas y Campos

Los datos de SAP HANA database, se almacena en tablas, los campos de cada tabla puede cumplir uno de los dos siguientes “papeles”:

  • Atributo (Attribute). Califica el dato. Por ejemplo: Producto o Cliente.
  • Medida (Measure). Cuantifica el dato. Por ejemplo: Cantidad o Importe de ventas

Vistas de Información

Para recuperar los datos desde diferentes tablas como si se tratase de una sola, se utilizan las denominadas Information View, las cuales pueden de los siguientes tipos:

  • Vistas de atributos (Attribute Views).  Son vistas de una o más tablas que pueden ser utilizadas como un bloque básico de información para construir otro tipo de vistas. Por ejemplo, una vista denominada Organización puede contener información de la tabla sociedad, áreas y proyectos y utilizarla para diseñar vistas analíticas y calculadas. De lo que se trata, es definir una vista estándar y reutilizable para los usuarios.  .
  • Vistas analíticas (Analytic views). Estas vistas son utilizadas para mostrar una tabla de hechos (tabla que contiene los valores o importes de las medidas) vinculada con tablas y/o vistas de atributos.  Adicionalmente, a nivel de vista, se pueden definir nuevas medidas y variables.  Las vistas analíticas son usadas por algunas herramientas de reporting como fuente de datos.
  • Vistas calculadas (Calculation views). Permite combinar, tablas, vistas de atributos, vistas analíticas e inclusive otras vistas calculadas.  Al permitir combinar vistas analíticas, facilita la posibilidad del diseño de una vista con más de una tabla de hechos. Por ejemplo un caso de uso podría ser la comparación de las ventas reales vs. Las presupuestadas.

La arquitectura y posibilidades que ofrece SAP HANA, con por ejemplo, una instalación estándar de SAP NW BW son muy superiores, pero quizás para facilitar la comprensión de la utilidad de estas vistas, se podría establecer la siguiente equivalencia:

  • Las Attibute Views, son comparables a las dimensiones de SAP NW BW.
  • Las Analytic views son comparable a un infocubo de SAP NW BW o a un Infoset de SAP ERP.
  • Las Calculation views se asemejan a un Multiprovider de SAP NW BW.

SAP HANA Database cumple los principios ACID

ACID es el acrónimo de las palabras atomicidad, consistencia, aislamiento y durabilidad en inglés (ACID, atomicity, consistency, isolation y durability) un conjunto de principios básicos o propiedades que debe cumplir cualquier transacción u operación sobre una base de datos:


ACID es el acrónimo de las palabras atomicidad, consistencia, aislamiento y durabilidad en inglés (ACID, atomicity, consistency, isolation y durability) un conjunto de principios básicos o propiedades que debe cumplir cualquier transacción u operación sobre una base de datos:

  • Una transacción tiene que ser atómica. Es decir, si parte de una transacción falla, toda la transacción tiene que fallar, ante un fallo el estado de la base de datos no debe tener cambios (todo o nada).
  • La consistencia de una base de datos debe ser preservado. Todas las transacciones deben ser validadas según el mismo patrón de reglas.
  • Con aislamiento se espera que no se produzcan interferencias entre las transacciones aunque estas se ejecuten simultáneamente.
  • Durabilidad significa que después de la ejecución de una transacción que ha significado una actualización de la base de datos, esta actualización permanecerá allí.

De los cuatro aspectos, sólo el cuarto se vería afectado por el procesamiento en memoria si sólo se almacenaran los datos en la denominada memoria principal, porque esta es volátil (se pierde si se produce un fallo en el suministro eléctrico).  Para que el principio de “durabilidad” se produzca, el almacenamiento se debe realizar en un dispositivo no volátil, tal como los discos duros.

En SAP HANA, este proceso se realiza en “segundo plano” (es decir, mientras que se atiende las peticiones de procesamiento de datos, en paralelo, se realizan estas tareas, sin afectar el rendimiento) para ello, grosso modo, se realiza lo siguiente:

  1. La memoria donde estas todos los datos de la base de datos SAP HANA es dividida en páginas.
  2. Si un dato es modificado, la página de memoria que lo contiene es “marcada”.
  3. Un proceso se ejecuta en intervalos regulares verificando las “páginas de memoria marcadas” para volcar en la base de datos los cambios efectuados.
  4. Para evitar que las últimas modificaciones se pierdan, adicionalmente se guardan un registro (log) de todas las transacciones que actualizan datos. Tras la recuperación de una pérdida del fluido eléctrico, a partir del último punto en que se salvaron los datos se procesan las transacciones grabadas en el log, garantizando de este modo el cumplimiento del principio de durabilidad.

Referencia: (post complementario)

Fórmulas para el “sizing” en SAP HANA

Según SAP, la vía “más segura” o recomendable para estimar las necesidades de hardware de un nuevo producto como puede ser SAP HANA, es el uso del Quick Sizer. Pero además de los resultados que se pudieran obtener con esta herramienta, para el caso de SAP HANA, existen unas fórmulas que brindan valores preliminares que no se alejarían de los valores definitivos.


Según SAP, la vía “más segura” o recomendable para estimar las necesidades de hardware de un nuevo producto como puede ser  SAP HANA, es el uso del Quick Sizer.  Pero además de los resultados que se pudieran obtener con esta herramienta, para el caso de SAP HANA, existen unas fórmulas que brindan valores preliminares que no se alejarían de los valores definitivos.

El sizing consiste en estimar las necesidades de memoria, almacenamiento en disco y la capacidad de procesamiento (CPU).  Las fórmulas son las siguientes:

  • Memoria. Para el cálculo de este valor se toma como referencia el tamaño utilizado actualmente, ya sea por el actual SAP NW BW y/o SAP ERP, considerando que no se debería incluir el espacio utilizado por logs, temporales y agregados (en el caso de BW).  Toda la información será cargada en memoria, pero para este fin SAP HANA utiliza mecanismo de compresión que por norma general equivalen a la quinta parte.  Así mismo, para procesos internos, HANA necesita espacio, que se estiman igual al tamaño utilizado por los datos, una vez cargados en memoria.

Memoria = ((Espacio actual) / 5) * 2

  • Disco. Se estima en función del valor obtenido en el cálculo de las necesidades de memoria. Se calcula tanto para datos, como para los logs de transacciones, cada uno de estos datos se obtienen en cada factor de la siguiente fórmula:

Disco = (Memoria * 4) + (Memoria)

  • CPU (basado sobre el número de cores que incluyen) se debe estimar en función del número de usuarios activos, los cuales pueden fluctuar entre 20% y 40% del número de usuarios nominales.  Se estima que para gestionar un usuario activo se requiere 0,2 de un core de CPU:

CPU = 0,2 * (Usuarios activos)