domingo, 13 de diciembre de 2020

¿Qué hay de nuevo en Oracle 21c?

La disponibilidad de Oracle 21c fue anunciada la semana pasada, por el momento sólo en Oracle Cloud, ya sea como Database Service Virtual Machine, Bare Metal Service, asi como Autonomous Database Free Tier en algunas regiones (Ashburn, Phoenix, Frankfurt y London).

La versión 21c introduce nuevas características que hacen de Oracle Database la opción ideal de "converged database", una base de datos que soporta todo tipos de datos (relacionales, JSON, XML, Spatial, Graph, OLAP) ofreciendo al mismo tiempo alta performance, escalabilidad, alta disponibilidad y seguridad para uso transactional (OLTP) como analitico (OLAP).

Todas las mejoras y nuevas características pueden ser consultadas en el sitio Oracle Database Features, seleccionando las opciones "21c"  y "New Features Only", como se muestra a continuación



Nuevas características disponibles

Tipo de datos JSON Nativo

Si bien Oracle soporta datos de tipo JSON desde Oracle Database 12c, los mismos se almacenaban VARCHAR2 o LOB (CLOB o BLOB). Oracle también incluye desde la version 12c herramientas para manipular y acceder a datos JSON, y tratar su base de datos Oracle como si fuera una base de datos NoSQL accediendo a ella con las API SODA (API de datos de objetos simples) disponibles para Java, Node.js, Python, C y REST.

En Oracle Database 21c, el soporte JSON es mas completo, incluyendo un tipo de datos JSON nativo que permite que los documentos JSON se almacenen en un formato binario interno, logrando que las operaciones de lectura y actualización sean 4 o 5 veces más rápidas y que las actualizaciones de documentos JSON muy grandes sean de 20 a 30 veces más rápidas.

SQL Macros

No es inusual que una declaración SQL aumente en complejidad a medida que aumenta el número de combinaciones o las operaciones realizadas en los datos recuperados se vuelven más complicadas. Tampoco es raro que los desarrolladores intenten resolver este problema utilizando procedimientos almacenados y funciones de tabla para simplificar estas operaciones de uso común. Esto funciona muy bien para simplificar el código, pero potencialmente puede sacrificar el rendimiento cuando el motor SQL cambia el contexto con el motor PL / SQL. En Oracle Database 21c, las macros SQL resuelven este problema al permitir que las expresiones SQL y las funciones de tabla sean reemplazadas por llamadas a procedimientos almacenados que devuelven una cadena literal para ser insertada en el SQL que queremos ejecutar. Es un concepto increíblemente simple y con el que estarán familiarizados los programadores de C y Rust.

Mas detalles en mi artículo "Oracle 20c - SQL Macros" sobre esta característica disponible inicialmente en la version preview de Oracle 20c

Ejecución Nativa de JavaScript

JavaScript es un lenguaje de secuencias de comandos que  permite una interacción más rica del usuario en aplicaciones web y aplicaciones móviles. Es uno de los pocos lenguajes que se ejecuta en un navegador web y se puede utilizar para desarrollar código tanto del lado del cliente como del lado del servidor. Existe una gran colección de bibliotecas JavaScript existentes para implementar programas complejos y JavaScript funciona junto con tecnologías de desarrollo populares como JSON y REST. Oracle 21c incluye la posibilidad de ejecutar en forma nativa en la base de datos código JavaScript, permitiendo ejecutar operaciones de cálculo ya existentes en JavaScript sin necesidad de mover los datos a la capa de aplicación o al browser. La funcionalidad Multilingual Engine (MLE)  de Oracle 21c (basada en GraalVM) se encarga de convertir los tipos de datos entre Oracle y JavaScript.  

Tablas BlockChain

Blockchain como tecnología permite resolver muchos de los problemas asociados con la verificación de transacciones. Oracle Database 21c aborda este problema con la introducción de Blockchain Tables. Estas tablas poseen una serie de diferencias importantes con las tablas normales. El más notable de ellos es que las filas tienen un hash criptográfico a medida que se insertan en la tabla, lo que garantiza que la fila ya no se pueda cambiar en una fecha posterior.

Mejoras a características ya existentes

Además de las nuevas características mencionadas anteriormente, Oracle 21c ofrece un gran número de mejoras, como ser:

Mejoras a In-Memory

Las siguientes son algunas de las mejoras introducidas en Oracle 21c a In-Memory
  • In-Memory Vector Join: utilizando una versión mejorada del framework Deep Vectorization SIMD, en Oracle 21c es posible acelerar operaciones como Hash Join en columnas almacenadas en el In-Memory Columnar Store.
  • Self-Managing In-Memory Column Store: Oracle 21c puede decidir en forma automática que columnas incluir en en In-Memory Columnar Store, ya sea de tablas ya configuradas para estar en In-Memory como de tablas que no lo están.
  • In-Memory Hybrid Columnar Scans: Cuando una consulta necesita acceder a columnas disoponibles en In-Memory y a columnas que no lo están, Oracle usaba directamente los datos del Row Store. En Oracle 21 existe la posibilida de hacer un scan hibrido entre datos In-Memory y datos almacenados en forma tradicional.

Parámetros init.ora basados ​​en expresiones

Permite configurar parámetros de la base de datos (init.ora) utilizando cálculos y valores dependientes de la configuración del entorno. Por ejemplo, se puede establecer el parámetro de la base de datos CPU_COUNT en la mitad del número de CPU disponibles para el sistema operativo.


Compatibilidad con memoria persistente (PMEM)

Oracle Database 21c incluye compatibilidad con sistemas de archivos PMEM, ofreciendo mejoras significativas de latencia y ancho de banda en comparación con los sistemas de archivos tradicionales que utilizan discos SSD o giratorios. La implementación de Oracle Database 21c proporciona escrituras atómicas, protección segura contra escrituras parciales durante cortes de energía inesperados. También ofrece operaciones de E / S rápidas mediante copia de memoria. Además, utiliza eficientemente la memoria caché del búfer de la base de datos omitiendo y leyendo directamente desde el almacenamiento PMEM.

Mejoras a Sharding

Para facilitar el desarrollo de aplicaciones Java frente a Oracle Sharding, Oracle 21c incluye una nueva fuente de datos Java que simplifica la obtención de conexiones sin tener que definir la clave de Sharding o administrar la clave de conexión de forma explícita. También incluye mejoras que hacen que Sharding sea mas tolerante a fallos, buscando en forma automática Shards alternativas si el Shard donde se está trabajando falla durante la ejecución.


Modelos de gráficos optimizados

Los gráficos pueden constar de millones o incluso miles de millones de bordes y vértices, por lo que las optimizaciones de almacenamiento realizadas en Oracle Graph en la versión 21c pueden resultar en grandes mejoras de espacio y rendimiento para los modelos de Graph.

No hay comentarios.:

Publicar un comentario