¿Qué es SQLScript?
La motivación para SQLScript es incrustar la lógica de la aplicación de uso intensivo de datos en la base de datos.
Actualmente, las aplicaciones solo descargan una funcionalidad muy limitada en la base de datos utilizando SQL, la mayor parte de la lógica de la aplicación normalmente se ejecuta en un servidor de aplicaciones. El efecto de eso es que los datos a operar deben copiarse de la base de datos al servidor de aplicaciones y viceversa. Al ejecutar la lógica intensiva de datos, esta copia de datos puede ser muy costosa en términos de tiempo de transferencia de datos y procesador.
ABAP o JAVA
Además, cuando se usa un lenguaje imperativo como ABAP o JAVA para procesar datos, los desarrolladores tienden a escribir algoritmos que siguen una semántica de una tuple-at-a-time (por ejemplo, repasar filas en una tabla). Sin embargo, estos algoritmos son difíciles de optimizar y paralelizar en comparación con lenguajes declarativos orientados a conjuntos como SQL.
HANA vs OpenSQL
La base de datos SAP HANA está optimizada para las tendencias tecnológicas modernas y aprovecha el hardware moderno, por ejemplo, al tener datos que residen en la memoria principal y permitir Paralelización masiva en CPUs multi-core. El objetivo de la base de datos SAP HANA es admitir los requisitos de la aplicación haciendo uso de dicho hardware. La base de datos SAP HANA expone una interfaz muy sofisticada para la aplicación, que consta de muchos idiomas. La expresividad de estos idiomas supera con creces la que se puede lograr con OpenSQL.
El conjunto de extensiones de SQL para la base de datos de SAP HANA, que permite a los desarrolladores insertar lógica intensiva de datos en la base de datos, se denomina SQLScript. Conceptualmente, SQLScript está relacionado con procedimientos almacenados como se define en el estándar SQL, pero SQLScript está diseñado para proporcionar posibilidades de optimización superiores. SQLScript se debe usar en casos donde otras construcciones de modelado de SAP HANA, por ejemplo, vistas analíticas o vistas de atributos no son suficientes.
El conjunto de extensiones SQL es la clave para evitar copias masivas de datos al servidor de aplicaciones y para aprovechar las sofisticadas estrategias de ejecución paralela de la base de datos.
SQLScript resuelve los siguientes problemas:
- La descomposición de una consulta SQL solo se puede realizar mediante vistas. Sin embargo, al descomponer consultas complejas utilizando vistas, todos los resultados intermedios son visibles y deben escribirse explícitamente. Además, las vistas de SQL no se pueden parametrizar, lo que limita su reutilización. En particular, solo se pueden usar como tablas e incrustarse en otras sentencias de SQL.
- Las consultas de SQL no tienen características para expresar la lógica de negocios (por ejemplo, una conversión de moneda compleja). Como consecuencia, tal lógica de negocios no se puede insertar en la base de datos (incluso si se basa principalmente en agregaciones estándar como SUM (Ventas), etc.).
- Una consulta SQL solo puede devolver un resultado a la vez. Como consecuencia, el cálculo de los conjuntos de resultados relacionados se debe dividir en consultas separadas, generalmente no relacionadas.
- Como SQLScript alienta a los desarrolladores a implementar algoritmos utilizando un paradigma orientado a conjuntos y no utilizando una tupla a la vez, se requiere lógica imperativa, por ejemplo, por algoritmos de aproximación iterativa. Por lo tanto, es posible mezclar construcciones imperativas conocidas de procedimientos almacenados con declaraciones declarativas.
Descarga SAP HANA SQLScript Reference
Sigue los siguientes pasos para descargar gratis:
- Suscribirte gratis a nuestro boletín SAP #1
- Por favor, dale "me gusta" y seguinos en nuestra página de Consultoria-SAP en Facebook.
Y no te olvides de seguirnos en las redes sociales para no perderte ninguna novedad:
- Copia la URL de éste artículo, e ingresa al foro de Ayuda SAP en español, ve a la parte de Manuales-SAP, y abre un tema nuevo explicando por qué te interesa aprender más sobre SAP, pega ahí la URL que has copiado, para que sepamos que estás cumpliendo estos tres puntos.
Recuerda que en nuestra comunidad de Ayuda SAP no es solo "pedir" y nada más, lee las normas de solicitudes para descargar gratis que tendrás que cumplir.
No te pierdas los beneficios de ser VIP en Consultoria-SAP
Contenido del manual SAP HANA SQLScript Reference
- About SAP HANA
- Backus Naur Form Notation
- What is SQLScript?
- SQLScript Security Considerations
- SQLScript Processing Overview
- Orchestration Logic
- Declarative Logic
- Data Type Extension
- Scalar Data Types
- Table Types
- CREATE TYPE
- DROP TYPE
- Logic Container
- Procedures
- CREATE PROCEDURE
- DROP PROCEDURE
- ALTER PROCEDURE
- ALTER PROCEDURE RECOMPILE
- Procedure Calls
- Procedure Parameters
- Procedure Metadata
- User Defined Function
- CREATE FUNCTION
- ALTER FUNCTION
- Function Parameters
- Function Metadata
- Default Values for Parameters
- Deterministic Scalar Functions
- DROP FUNCTION
- Anonymous Block
- Declarative SQLScript Logic
- Table Parameter
- Local Table Variables
- Table Variable Type Definition
- Binding Table Variables
- Referencing Variables
- Column View Parameter Binding
- Map Merge
- HINTS: NO_INLINE and INLINE
- Imperative SQLScript Logic
- Local Scalar Variables
- Global Session Variables
- Variable Scope Nesting
- Control Structures
- Conditionals
- While Loop
- For Loop
- Break and Continue 807.5 Cursors
- Define Cursor
- Open Cursor
- Close Cursor
- Fetch Query Results of a Cursor
- Attributes of a Cursor
- Looping over Result Sets
- Autonomous Transaction
- COMMIT and ROLLBACK
- Dynamic SQL
- EXEC
- EXECUTE IMMEDIATE
- APPLY_FILTER
- Exception Handling
- DECLARE EXIT HANDLER
- DECLARE CONDITION
- SIGNAL and RESIGNAL
- Exception Handling Examples.997.10 ARRAY
- DECLARE ARRAY-TYPED VARIABLE
- SET AN ELEMENT OF AN ARRAY
- RETURN AN ELEMENT OF AN ARRAY
- UNNEST
- ARRAY_AGG
- TRIM_ARRAY
- CARDINALITY
- CONCATENATE TWO ARRAYS
- Index-Based Cell Access to Table Variables
- Emptiness Check for Tables and Table Variables
- Get Number of Records for Tables and Table Variables
- SQL Injection Prevention Functions
- Explicit Parallel Execution
- Calculation Engine Plan Operators
- Data Source Access Operators
- CE_COLUMN_TABLE
- CE_JOIN_VIEW
- CE_OLAP_VIEW
- CE_CALC_VIEW
- Relational Operators
- CE_JOIN
- CE_LEFT_OUTER_JOIN
- CE_RIGHT_OUTER_JOIN
- CE_PROJECTION
- CE_CALC
- CE_AGGREGATION
- CE_UNION_ALL
- Special Operators
- CE_VERTICAL_UNION
- CE_CONVERSION
- TRACE
- Procedure and Function Headers
- HANA Spatial Support
- System Variables
- ::CURRENT_OBJECT_NAME and ::CURRENT_OBJECT_SCHEMA
- ::ROWCOUNT
- Query Parameterization: BIND_AS_PARAMETER and BIND_AS_VALUE
- Supportability
- M_ACTIVE_PROCEDURES
- Retention and Memory Tracking in M_ACTIVE_PROCEDURES
- Query Export
- SQLScript Query Export
- Type and Length Check for Table Parameters
- SQLScript Debugger
- Conditional Breakpoints
- Watchpoints
- Break on Error
- Save Table
- Best Practices for Using SQLScript
- Reduce Complexity of SQL Statements
- Identify Common Sub-Expressions
- Multi-Level Aggregation
- Understand the Costs of Statements
- Exploit Underlying Engine
- Reduce Dependencies
- Avoid Mixing Calculation Engine Plan Operators and SQL Queries
- Avoid Using Cursors
- Avoid Using Dynamic SQL
- Developing Applications with SQLScript
- Handling Temporary Data
- SQL Query for Ranking
- Calling SQLScript From Clients
- Calling SQLScript from ABAP
- Calling SQLScript from Java
- Calling SQLScript from C#
- Appendix
- Example code snippets
- ins_msg_proc
0 comments:
Publicar un comentario
Nota Importante: los comentarios son para agradecer, comentar o sugerir cambios (o hacer preguntas) sobre el artículo de arriba.
SAP y el logotipo de SAP son marcas comerciales registradas de SAP AG en Alemania y en varios otros países. No estamos afiliados ni relacionados con ninguna división o subsidiaria de SAP AG.