Carga y descarga en memoria de tablas SAP HANA Database

Normalmente SAP HANA Database gestiona la carga y descarga de tablas en memoria de manera automática con el fin de tener los datos necesarios en memoria, pero sin embargo, es posible «forzar» la carga y descarga de tablas o columnas de tablas si fuese necesario.


Normalmente SAP HANA Database gestiona la carga y descarga de tablas en memoria de manera automática con el fin de tener los datos necesarios en memoria, pero sin embargo, es posible «forzar» la carga y descarga de tablas o columnas de tablas si fuese necesario.

Las tablas con almacenamiento basado en filas son cargadas en memoria desde que la base de datos es iniciada y permanecen en memoria durante todo su funcionamiento, no pueden ser descargadas.

Las tablas con almacenamiento basado en columnas se cargan bajo demanda, columna por columna en los primeros accesos (este comportamiento se conoce como Lazy Loading) de este modo, columnas que nunca se utilizan no son cargadas, haciéndose un uso más eficiente de la memoria. Este es el comportamiento por defecto (algoritmo “least recently used”), pero sin embargo en la definición de la tabla vía SAP HANA Studio se puede indicar que columnas se cargarán cuando la base de datos se ponga en funcionamiento. (También vía la consola SQL se puede utilizar las sentencias LOAD y UNLOAD para cargar y descarga tablas o determinadas columnas de una tabla)

Nota: Para cargar una tabla en memoria es necesario tener el privilegio UPDATE SQL sobre la tabla.

La «arquitectura» de las tablas basadas en columnas de SAP HANA

La denominada Column Store es un componente de toda la ingeniería que conforma la plataforma SAP HANA, gestiona en memoria las tablas con almacenamiento basado en columnas. La “Column Store” optimiza las operaciones de lectura y escritura, a través de dos estructuras de datos que tienen las tablas: «main storage» y «delta storage».


La denominada Column Store es un componente de toda la ingeniería que conforma la plataforma SAP HANA, gestiona en memoria las tablas con almacenamiento basado en columnas. La “Column Store” optimiza las operaciones de lectura y escritura, a través de dos estructuras de datos que tienen las tablas: «main storage» y «delta storage».

The In-Memory Computing Engine of SAP HANA

La denominada “main storage” contiene los datos comprimidos para llevarlos a memoria, esta área es utilizada para las tareas de búsqueda y cálculos sobre los datos.  En cuanto a las tareas de grabación, se realizan sobre otra estructura, denominada “delta storage”, la cual utiliza una compresión básica que optimiza las tareas de actualización de los datos.  Las tareas de lectura se realizan sobre ambas áreas de datos.

A través de operaciones denominadas “delta merge” los cambios realizados en la “delta storage” pasan a la denominada “main storage”, luego de estas operaciones, el contenido de la main storage permanece en disco y si fuese necesario la optimización y compresión es actualizada.

Main Strorage and Delta Storage of the column tables

La denominada “delta storage” sólo existe en memoria, como parte del procedimiento contra fallos, el sistema va actualizado un log (delta log) con las últimas modificaciones que se realicen en una tabla, el contenido de estos ficheros es utilizado si el sistema se reinicia y se debe restituir las últimas operaciones que no fueros grabadas en disco.  Al realizar las operaciones “delta merge” los datos pasan a disco y el fichero log correspondiente queda limpio de operaciones.

SAP HANA, una base de datos con servidor web y servidor de aplicaciones incluido

SAP HANA Extended Application Services (conocido como XS) Es un nuevo componente que se introduce en la versión 1.0 SPS 05 de SAP HANA, se trata de un servidor de aplicaciones y servidor Web que permite cambiar el enfoque tradicional para desarrollar aplicaciones Modelo – Vista – Controlador (MVC).


SAP HANA Extended Application Services (conocido como XS) Es un nuevo componente que se introduce en la versión 1.0 SPS 05 de SAP HANA, se trata de un servidor de aplicaciones y servidor Web que permite cambiar el enfoque tradicional para desarrollar aplicaciones Modelo – Vista – Controlador (MVC).

Arquitectura tradicional de desarrollo de aplicaciones Model-View-Controller (MVC)

Con XS, SAP HANA redefine el comportamiento tradicional de una base de datos, permitiendo el desarrollo y ejecución de aplicaciones nativas que aprovechan las características del procesamiento en memoria.  Adicionalmente, al incluir la función de Control en la base de datos, se elimina sobrecargas y se logra mayor eficiencia entre la capa de interface de usuario y el procesamiento de los datos.

Arquitectura de desarrollo de aplicaciones con SAP HANA Extended Application Services

SAP HANA XS ofrece un amplio conjunto de características para cumbrir las funciones de servidor de aplicaciones y servidor web, sin tener que recurrir a productos adicionales. 

Referencia: (aquí)

Almacenamiento en SAP HANA, ¿filas o columnas?

SAP HANA soporta el almacenamiento basado en columnas (column-based storage) y basado en filas (row-based storage), y funciona mejor con el almacenamiento basado en columnas, las tablas de este tipo tienen una lectura optimizada y mejores niveles de compresión. En el futuro, algunas características como el particionado sólo estarán disponibles en tablas column-based storage.


SAP HANA soporta el almacenamiento basado en columnas (column-based storage) y basado en filas (row-based storage), y funciona mejor con el almacenamiento basado en columnas, las tablas de este tipo tienen una lectura optimizada y mejores niveles de compresión.  En el futuro, algunas características como el particionado sólo estarán disponibles en tablas column-based storage.

Pero no siempre es recomendable utilizar tablas basadas en columnas, las cuales están pensadas, principalmente, para grandes volúmenes de datos con lecturas y modificaciones masivas, por otro lado, las tablas basadas en filas son más eficientes en tareas de inserción y actualización, principalmente para pequeños conjuntos de datos con modificaciones individuales.  A continuación mencionamos algunos aspectos que podrían determinar el uso de uno u otro tipo de almacenamiento:

Column Store:

  • Los cálculos serán ejecutados sobre una o pequeños grupos de columnas.
  • La tabla tendrá varias columnas.
  • Gran número de filas que serán procesadas constantemente a nivel de columnas.
  • Las columnas tienen poca variedad de valores y se logrará un alto nivel de compresión.
  • Búsquedas a nivel de los valores de algunas columnas.

Row Store:

  • Se necesita procesar un registro a la vez.
  • Se requiere acceder a todo el registro (todas las columnas de una fila)
  • Las columnas tienen una amplia variedad de datos y los niveles de compresión serían bajos.
  • No se requiere agregaciones, ni búsquedas rápidas
  • La tabla tendrá un número reducido de filas (por ejemplo tablas de configuración)

 Nota: Las tablas de diferente tipo de almacenamiento pueden vincularse, pero resulta más recomendable que siempre sean del mismo tipo. El tipo de almacenamiento asignado a una tabla en su definición puede modificarse vía la sentencia ALTER TABLE ALTER TYPE.

Conceptos básicos sobre gestión de usuarios en SAP HANA

La autorización que tiene un usuario para “hacer algo” sobre determinados “recursos de la base de datos” de SAP HANA, se denomina “privilegios” y la agrupación de estos privilegios para más fácilmente asignarlos a los usuarios, se denomina “roles”. En el sistema SAP HANA tenemos dos grandes categorías de usuarios:


La autorización que tiene un usuario para “hacer algo” sobre determinados “recursos de la base de datos” de SAP HANA, se denomina “privilegios” y la agrupación de estos privilegios para más fácilmente asignarlos a los usuarios, se denomina “roles”.  En el sistema SAP HANA tenemos dos grandes categorías de usuarios:

  • Database Users. Un  usuario de base de datos es un usuario que podrá  trabajar con los recursos de SAP HANA Database.
  • Operating System User. Son usuarios con acceso total a los recursos del sistema, también son referidos como administradores de la operativa del sistema, son los únicos que puede iniciar o detener un servicio o componente del sistema.  Un usuario operador del sistema no es un usuario de base de datos.

Usuarios técnicos

Durante la instalación de SAP HANA Database se crean una serie de “usuarios técnicos”, tales como <sid>adm, SYS,  _SYS_STATISTICS o SYSTEM.  Este último, es un usuario de bases de datos (database user) tiene unos privilegios irrevocables tales como crear usuarios de bases de datos o acceder a las tablas del sistema.  Como en cualquier otro sistema o plataforma de bases de datos, se sugiere no utilizar este usuario para las tareas diarias, sino definir uno con privilegios similares.

Autenticación

Los usuarios son definidos y gestionados por SAP HANA Database en SAP HANA Studio.

La autenticación de usuarios puede ser integrada con Kerberos y SAML (Security Assertion Markup Language).

Desde SAP HANA 1.0 SP05 es posible gestionar una lista de palabras que no podrán ser utilizadas en la definición de contraseñas (Password Blacklist). Esta lista es almacenada en la tabla _SYS_PASSWORD_BLACKLIST del esquema _SYS_SECURITY.  Si se cuenta con privilegios sobre la tabla o el esquema, se podrá actualizar esta lista vía sentencias SQL desde SAP HANA Studio.

Autorización

Un usuario autenticado como usuario de base de datos indica que podrá realizar operaciones, la confirmación que pueda hacer algo se denomina autorización, la cual se determinará por la verificación de los derechos efectivos sobre los recursos y privilegios para ejecutar la operación. Tipos de privilegios en SAP HANA database:

  • System privilege.  Permiten el control total del sistema con el fin de administrarlo permitiendo la ejecución de tareas tales como creación de esquemas, definición de usuarios y roles, copias de respaldo, gestión de licencias, etc.
  • Object privilege. Es usado para restringir el acceso y las modificaciones de los objetos de la base de datos.
  • Anlytic privilege. Son utilizados para determinar el acceso a las vistas de información, estos privilegios son evaluados durante la ejecución de las consultas
  • Package privillege. Determina si el usuario podrá acceder y trabajar con paquetes del repositorio, los cuales pueden contener vistas de información en tiempo de diseño.
  • Privilegios para tareas administrativas. Para las tareas típicas de un administrador del sistema, además de tener derechos sobre los objetos a gestionar, debe contarse con privilegios específicos como los siguientes:
    • Abrir la Consola de Administración (CATALOG READ y DATA ADMIN.  MONITORING para sólo conslta)
    • Iniciar o detener servicios (SERVICE ADMIN)
    • Gestionar licencias (LICENSE ADMIN)
    • Gestionar roles (ROLE ADMIN)
    • Gestionar usuarios (USER ADMIN)
    • Gestionar tablas, esquemas y particiones (DATA ADMIN o CATALOG READ)
    • Importar catálogo de objetos (IMPORT)
    • Exportar catálogo de objetos (EXPORT)