Oracle Database 21c y sus nuevas Características

La última versión de innovación de la base de datos más popular del mundo, Oracle Database 21c, ahora está disponible

 · 12 min read

La última versión de innovación de la base de datos más popular del mundo, Oracle Database 21c, ahora está disponible generalmente "nube primero" en Oracle Cloud Database Service Virtual Machine (para RAC y una sola instancia) y Bare Metal Service (una sola instancia). También está disponible en el Servicio de Niveles Libres de Base de Datos Autónomas en las regiones de Ashburn (IAD), Phoenix (PHX), Frankfurt (FRA) y Londres (LHR). La disponibilidad general de Oracle Database 21c para plataformas locales (incluyendo Exadata, Linux y Windows) seguirá en 2021.

Habilitar un futuro basado en datos

Oracle ha adoptado consistentemente el enfoque de que almacenar y administrar datos en una base de datos convergente es más eficiente y productivo que dividirse en múltiples motores de un solo uso, lo que inevitablemente resulta en problemas de integridad, consistencia y seguridad de los datos. En pocas palabras, una base de datos convergente es una base de datos multimodelo, multiinquilino y multicarga de trabajo. Oracle Database es totalmente compatible con múltiples modelos de datos y métodos de acceso, simplifica la consolidación al tiempo que garantiza el aislamiento y sobresale en casos típicos de uso de la carga de trabajo de la base de datos, tanto operativos como analíticos. Haga clic en la imagen de abajo para ver una introducción en video a la base de datos convergente de Oracle.

Por lo tanto, la generación 21c de la base de datos convergente de Oracle ofrece a los clientes: el mejor soporte de su clase para todos los tipos de datos (por ejemplo, relacional, JSON, XML, espacial, gráfico, OLAP, etc.) y rendimiento, escalabilidad, disponibilidad y seguridad líderes en la industria para todas sus cargas de trabajo operativasanalíticas y otras cargas de trabajo mixtas. La estrategia convergente de Oracle también garantiza que los desarrolladores se beneficien de todas las capacidades clave de Oracle Database 21c (p. ej. Transacciones ACID, consistencia de lectura, escaneos paralelos y DML, copias de seguridad en línea, etc.) - liberándolos para centrarse en el desarrollo de aplicaciones sin tener que preocuparse por la persistencia de los datos.

Nuevo en Oracle Database 21c

Esta última versión de innovación introduce una serie de nuevas características y mejoras que amplían aún más los casos de uso de la base de datos, mejoran la productividad de los desarrolladores, analistas y científicos de datos y aumentan el rendimiento de las consultas. A continuación se muestra un subconjunto de las novedades de Oracle Database 21c. Para una revisión más completa, consulte la Guía de nuevas características o la aplicación de características y licencias de la base de datos. ¡O puede hacer un recorrido por Oracle Database 21c en el Taller de Nuevas Características de Oracle LiveLab!

Tablas de cadena de bloques

Blockchain como tecnología ha prometido mucho en términos de resolver muchos de los problemas asociados con la verificación de transacciones. Si bien se ha avanzado considerablemente en llevar esta tecnología a la empresa, hay una serie de problemas. La más grande es la naturaleza compleja de las aplicaciones de construcción que pueden soportar un libro mayor distribuido. Oracle Database 21c aborda este problema con la introducción de tablas de cadena de bloques. Estas tablas funcionan como cualquier tabla de montón normal, pero con una serie de diferencias importantes. El más notable de ellos es que las filas se hash criptográficamente cuando se insertan en la tabla, lo que garantiza que la fila ya no se pueda cambiar en una fecha posterior.

Esto esencialmente crea una tabla de inserción única, y los usuarios no pueden actualizar o eliminar filas de tablas de cadena de bloques. Además, también se impide a los usuarios truncar datos, soltar particiones o soltar tablas blockchain dentro de ciertos límites de tiempo. Estas importantes capacidades significan que otros usuarios pueden confiar en que los datos almacenados en una tabla de blockchain son un registro preciso de eventos.

Tipo de datos JSON nativo

Oracle introdujo soporte para JSON en Oracle Database 12c, almacenando datos JSON como VARCHAR2 o LOB (CLOB o BLOB). Esto permitió a los desarrolladores construir aplicaciones con la flexibilidad de un modelo de diseño sin esquemas, con toda la potencia de Oracle Database. Por ejemplo, los usuarios podrían consultar documentos JSON utilizando SQL estándar, aprovechar análisis avanzados, indexar atributos individuales o documentos completos y procesar miles de millones de documentos JSON en paralelo. Oracle también proporcionó herramientas para descubrir qué atributos componen los documentos JSON, y así crear trivialmente vistas relacionales en la parte superior de las colecciones. También fue posible para los desarrolladores tratar su base de datos Oracle como si fuera una base de datos NoSQL accediendo a ella con las API SODA (Simple Object Data API) disponibles para Java, Node.js, Python, C y REST.

En Oracle Database 21c, el soporte JSON se mejora aún más ofreciendo un tipo de datos nativo, "JSON". Esto significa que en lugar de tener que analizar JSON en las operaciones de lectura o actualización, el análisis solo ocurre en una inserción y el JSON se mantiene en un formato binario interno, lo que hace que el acceso sea mucho más rápido. Esto puede resultar en operaciones de lectura y actualización 4 o 5 veces más rápidas y actualizaciones a documentos JSON muy grandes 20 a 30 veces más rápidas.

CREATE TABLE j_order
(
   id     INTEGER PRIMARY KEY,
  po_doc JSON
);

El nuevo tipo de datos no fue el único cambio que se introdujo para JSON en Oracle Database 21c, Oracle también agregó una nueva función JSON_TRANSFORM, que hace que sea mucho más fácil actualizar y eliminar múltiples atributos en un documento en una sola operación.

 UPDATE j_order SET po_doc = JSON_TRANSFORM( po_doc,
                                            SET '$.address.city' = 'Santa Cruz',
                                            REMOVE'$.phones[*]?(@.type == "office")'
                                          )
WHERE id = 555;

Oracle también ha añadido compatibilidad para el nuevo tipo de datos JSON a controladores de integración y utilidades como Datapump y GoldenGate.

Ejecución de JavaScript en Oracle Database

JavaScript es un lenguaje de scripting omnipresente, que, entre sus muchos usos, permite una interacción más rica del usuario en aplicaciones web y aplicaciones móviles. Es uno de los pocos idiomas 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. Hay una gran colección de bibliotecas JavaScript existentes para implementar programas complejos, y JavaScript funciona en conjunto con tecnologías de desarrollo populares como JSON y REST.

En Oracle Database 21c, los desarrolladores ahora pueden ejecutar fragmentos de código JavaScript dentro de la base de datos, donde residen los datos. Esto les permite realizar tareas computacionales cortas fácilmente expresadas en JavaScript, sin tener que mover los datos a un nivel medio o navegador. El Motor Multilingüe (MLE) en Oracle Database 21c, impulsado por GraalVM, asigna automáticamente los tipos de datos JavaScript a los tipos de datos de Oracle Database y viceversa, para que los desarrolladores no tengan que lidiar con la conversión de tipos de datos ellos mismos. Además, el propio código JavaScript puede ejecutar PL/SQL y SQL a través de un módulo JavaScript integrado. Todo esto también permite a los desarrolladores de APEX usar JavaScript como un lenguaje de primera clase dentro de sus aplicaciones APEX, sin tener que sacrificar el poder de PL/SQL y SQL. Aquí hay algún código de ejemplo que utiliza el paquete DBMS_MLE PL/SQL para ejecutar código JavaScript:

set serveroutput on;

DECLARE
  ctx dbms_mle.context_handle_t;
  source CLOB;
  greeting VARCHAR2(100);
BEGIN
  ctx := dbms_mle.create_context(); -- Create execution context for MLE execution

  dbms_mle.export_to_mle(ctx, 'person', 'World'); -- Export value from PL/SQL

  source := q'~
    var bindings = require("mle-js-bindings");
    var person = bindings.importValue("person"); // Import value previously exported from PL/SQL
    var greeting = "Hello, " + person + "!";
    bindings.exportValue("greeting", greeting); // Export value to PL/SQL
  ~';

  dbms_mle.eval(ctx, 'JAVASCRIPT', source); -- Evaluate the source code snippet in the execution context

  dbms_mle.import_from_mle(ctx, 'greeting', greeting); -- Import value previously exported from MLE

  dbms_output.put_line('Greetings from MLE: ' || greeting);

  dbms_mle.drop_context(ctx); -- Drop the execution context once no longer required
END;
/

Macros SQL

No es inusual que una instrucción SQL aumente en complejidad a medida que aumenta el número de uniones o las operaciones realizadas en los datos recuperados se involucran más. Tampoco es raro que los desarrolladores intenten resolver este problema mediante el uso de procedimientos almacenados y funciones de tabla para simplificar estas operaciones de uso común. Esto funciona extremadamente bien para simplificar el código, pero potencialmente puede sacrificar el rendimiento a medida que el motor SQL cambia de contexto con el motor PL/SQL. En Oracle Database 21c, las macros SQL resuelven este problema permitiendo que las expresiones SQL y las funciones de tabla se reemplacen por llamadas a procedimientos almacenados, que devuelven un literal de cadena para insertar en el SQL que queremos ejecutar. Es un concepto increíblemente simple y con el que los programadores de C y Rust estarán familiarizados. El siguiente ejemplo trivial lo muestra en acción.

Primero, creemos una tabla e insertemos algunas filas.

CREATE TABLE line_items
(
   id        NUMBER,
   name      VARCHAR2(30),
   item_type VARCHAR2(30),
   price     FLOAT
);

INSERT INTO line_items VALUES (1, 'Red Red Wine', 'ALCOHOL', 15.6);
INSERT INTO line_items VALUES (2, 'Its Cold Out There Heater', 'RADIATOR', 200.49);
INSERT INTO line_items VALUES (3, 'How Sweet It Is Cake', 'FOOD', 4.56);
COMMIT;

El siguiente SQL calcula el impuesto al valor agregado en filas en nuestra tabla LINE_ITEMS

SELECT id,
 CASE
    WHEN item_type = 'ALCOHOL'     THEN ROUND(1.2 * price, 2)
    WHEN item_type = 'SOLAR PANEL' THEN ROUND(1.05 * price, 2)
    WHEN item_type = 'RADIATOR'    THEN ROUND(1.05 * price, 2)
    ELSE price
  END AS total_price_with_tax
FROM line_items;

Oracle Database 21c kann Sin embargo, indem Sie eine Funktion mit dem neuen SQL_MACRO keyword erstellen und eine String zu return.

CREATE OR REPLACE FUNCTION total_price_with_tax(the_price FLOAT, the_item_type VARCHAR2)
  RETURN VARCHAR2 SQL_MACRO(SCALAR) IS
BEGIN
  RETURN q'[CASE
    WHEN the_item_type = 'ALCOHOL'     THEN ROUND(1.2 * the_price, 2)
    WHEN the_item_type = 'SOLAR PANEL' THEN ROUND(1.05 * the_price, 2)
    WHEN the_item_type = 'RADIATOR'    THEN ROUND(1.05 * the_price, 2)
    ELSE the_price END]';
END;
/

Los desarrolladores simplemente hacen referencia a la macro SQL dentro de una instrucción select. El SQL que se ejecuta es exactamente el mismo que la instrucción SQL original sin la sobrecarga de un conmutador de contexto cada vez que se obtiene la fila para ejecutar esta función.

SQL> SELECT id, total_price_with_tax(price, item_type) AS total_price_with_tax
       FROM line_items;

ID TOTAL_PRICE_WITH_TAX
---------- --------------------
 1    18.72
 2   210.51
 3     4.56

También vale la pena señalar que los desarrolladores pueden usar el mismo enfoque al crear vistas parametrizadas y tablas polimórficas.

Mejoras en memoria

El análisis de datos utilizando un modelo columnar puede resultar en mejoras masivas de rendimiento en comparación con el uso de un modelo basado en filas. Sin embargo, la actualización de datos es significativamente más rápida cuando se utilizan datos mantenidos en filas. Oracle Database In-Memory es único en el sentido de que permite a los usuarios beneficiarse de ambos enfoques. Con esta capacidad, los usuarios pueden ejecutar sus aplicaciones sin cambios y Oracle Database In-Memory mantiene un almacén columnar que admite consultas analíticas en tiempo real increíblemente rápidas. El blog en memoria de Oracle Database es un recurso fantástico para obtener más información sobre esta poderosa tecnología.

Oracle Database 21c introduce tres mejoras principales para mejorar el rendimiento y la facilidad de uso cuando se utiliza Oracle Database In-Memory:

  1. Uniones vectoriales en memoria de base de datos: a través del uso de su recién mejorado Deep Vectorization SIMD Framework, Oracle Database In-Memory puede acelerar operaciones como uniones hash en columnas mantenidas dentro del almacén de columnas en memoria. En el caso de una unión hash, la unión se divide en operaciones más pequeñas, que se pueden pasar al procesador vectorial. La tabla clave-valor utilizada está optimizada para SIMD y se utiliza para coincidir con las filas en el lado izquierdo y derecho de la unión. Este enfoque puede resultar en mejoras de rendimiento de unión de hasta 10 veces con respecto a los métodos tradicionales.
  2. Autogestión del almacén de columnas en memoria: cuando se lanzó por primera vez Oracle Database In-Memory, los usuarios tenían que declarar explícitamente qué columnas se iban a rellenar en el almacén de columnas en memoria. Esto dio a los usuarios un alto grado de control cuando la memoria era apretada. Oracle Database 18c introdujo una funcionalidad que colocaría automáticamente objetos en el almacén de columnas si se utilizan activamente y eliminan objetos que no lo eran. Sin embargo, los usuarios todavía tenían que especificar los objetos a considerar. En Oracle Database 21c, establecer INMEMORY_AUTOMATIC_LEVEL a HIGH, garantiza que se tengan en cuenta todos los objetos, simplificando así el trabajo de administrar el almacén de columnas en memoria.
  3. Análisis columnares híbridos en memoria: a menudo no es posible que cada columna de cada tabla se rellene en el almacén de columnas porque la memoria es limitada. In vielen Fällen ist es eine Problem ist, aber ab einem anderen Benutzer puede encontrar una consulta, die Daten (columnas) aus dem Columnn Store und Daten, die nur im einzigen im einzigen im einzigenn im einzigenn speichern benötigt benötigt. En versiones anteriores de Oracle Database In-Memory, dichas consultas simplemente se ejecutarían contra el almacén de filas. ¡En Oracle Database 21c los usuarios ahora pueden usar ambos! El optimizador ahora puede elegir escanear el almacén de columnas en memoria y recuperar los valores de columna proyectados del almacén de filas si es necesario. Esto puede resultar en mejoras significativas en el rendimiento.

Exploración columnar híbrida

Exploración columnar híbrida

 

Otras mejoras notables

Consulte la Guía de nuevas características de Oracle Database 21c para obtener una lista completa (larga), pero aquí hay algunas mejoras más notables que serán de interés para los DBA, desarrolladores, analistas y científicos de datos:

  1. Parámetros init.ora basados en expresiones: Ahora es posible basar los parámetros de la base de datos (init.ora) en los cálculos realizados en la configuración del sistema, es decir, establecer el parámetro de base de datos CPU_COUNT en la mitad del número de CPU disponibles para el sistema operativo.
  2. Mapas de zona automáticos: Oracle Database 21c en Exadata ahora puede crear automáticamente mapas de zona basados en los predicados utilizados en las consultas. Anteriormente, esta era una operación manual que requería que los usuarios entendieran cómo acceder a los datos. Los mapas automáticos de zonas pueden reducir drásticamente el número de bloques que necesitan ser escaneados.
  3. Los algoritmos de aprendizaje automático (ML) en la base de datos integrados en Oracle Database permiten a los científicos de datos aprovechar el poder de Oracle Database para construir modelos predictivos (utilizando más de 30 algoritmos ML) que se ejecutan directamente en datos almacenados en tablas de bases de datos (en lugar de extraer datos en un sistema de archivos o una base de datos especializada para el análisis de 'sandbox'). El enfoque de Oracle de mover algoritmos ML a los datos subyacentes minimiza el movimiento de datos, logra escalabilidad, preserva la seguridad de los datos y acelera la implementación del tiempo hasta el modelo para el análisis de tipo predictivo Oracle Database 21c agrega soporte para los algoritmos MSET-SPRT y XGBoost, y el solucionador de optimización Adam para el algoritmo de red neuronal.
  4. AutoML: Oracle Database 21c hace que sea aún más fácil para los científicos y analistas de datos aprovechar el aprendizaje automático en la base de datos al proporcionar una interfaz de aprendizaje automático Python a la base de datos. Esta nueva herramienta de cliente complementa las interfaces R y SQL existentes ya disponibles. AutoML simplifica el desarrollo de modelos predictivos de aprendizaje automático automatizando la selección de modelos, la selección de características y los procesos de ajuste de parámetros necesarios para construir modelos precisos
  5. Modelos de gráficos optimizados: Los gráficos pueden consistir en millones o incluso miles de millones de bordes y vértices, por lo que las optimizaciones de almacenamiento que hemos hecho para las capacidades de gráficos en la versión preliminar de Oracle Database 21c pueden resultar en grandes mejoras de espacio y rendimiento para sus modelos.
  6. Mejoras en la fragmentación: Oracle Sharding permite la escalabilidad lineal, el aislamiento de fallas y la geodistribución para aplicaciones de hiperescala, al tiempo que conserva la flexibilidad de SQL. Para facilitar el desarrollo de aplicaciones Java contra Oracle Sharding, hemos introducido un nuevo origen de datos Java que facilita la obtención de conexiones sin tener que definir la clave de fragmentación o administrar la clave de conexión explícitamente. También hemos hecho que el fragmento sea más tolerante a fallos buscando automáticamente alternativas si el fragmento en el que está trabajando falla durante la ejecución.
  7. Compatibilidad con memoria persistente (PMEM): Oracle Database 21c incluye soporte para sistemas de archivos PMEM, que pueden ofrecer mejoras significativas de latencia y ancho de banda sobre los sistemas de archivos tradicionales que utilizan SSD o discos giratorios. Sin embargo, las aplicaciones que los utilizan necesitan entender cómo escribirles de forma segura y cómo usarlos de manera más eficiente junto con otros recursos del sistema operativo. 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 utilizando copia de memoria. Además, utiliza eficientemente la caché del búfer de la base de datos omitiendo y leyendo directamente desde el almacenamiento PMEM.

Innovación y lanzamientos a largo plazo

Oracle Database 21c es una versión innovadora para que los clientes innoven más rápido con funcionalidad nueva y mejorada en casos de uso de carga de trabajo y aplicaciones que podrían beneficiarse en consecuencia. Los clientes deben ser conscientes de que a diferencia de las versiones a largo plazo, las versiones de innovación tienen una ventana de soporte limitada (normalmente ~2 años). Por lo tanto, en el interés de mantener la continuidad del negocio, se alienta a los clientes que aún se ejecutan en versiones anteriores (por ejemplo, 11gR2, 12cR1, 12cR2, 18c) a actualizar a Oracle Database 19c, la versión actual a largo plazo con soporte hasta abril de 2027.

Las últimas ventanas de disponibilidad y soporte de Oracle Database 21c en todas las plataformas locales (incluyendo Exadata) y en Oracle Cloud (incluyendo Autonomous Database Services) consulte la nota 742060.1 de MyOracle Support (MOS).


Apoyamos a las Organizaciones a Implementar Soluciones Tecnológicas de Forma Exitosa. 

CLiCK Consulting Group


Mauriel Rosero

Consultor | Middleware | Database

No comments yet.

Añadir un comentario
Ctrl + Enter para añadir comentarios