Manejo de Oracle Multimedia sobre Oracle Database 12c

Por Francisco Riccio
Publicado en Octubre 2015

Introducción


Oracle Multimedia es un conjunto de servicios que provee la base de datos Oracle para el manejo de contenido multimedia (imagen, audio y video) a través de los esquemas: ORDSYS, ORDPLUGINS, SI_INFORMTN_SCHEMA y ORDDATA.
Funciona integrando los tipos de datos BLOB y BFILE con información adicional (metadata), además de ofrecer métodos que permiten realizar manipulaciones tales como: copiado, escalado, recorte, compresión, etc.

Este producto estuvo disponible desde la versión Oracle 8.0.3 bajo el nombre Oracle Image Cartridge, luego con el nombre Oracle Visual Information Retrieval, en la versión Oracle 9.0 se liberó con el nombre Oracle Intermedia y desde la versión Oracle 11g el producto se llama como lo conocemos hoy (Oracle Multimedia).

Las diferentes funcionalidades presentadas en cada versión están disponible en: My Oracle Support (MOS) Nota: 223443.1 (Features per Version of Oracle Multimedia/Multimedia).

Las ventajas de Oracle Multimedia respecto a BLOB & BFILE son:

  • El contenido multimedia es reconocido por la base de datos con todas sus propiedades mientras un dato BLOB o BFILE no se sabe que información contiene.
  • Los datos son almacenados mediante objetos dentro de Oracle Multimedia. Los objetos permiten extraer metadata o realizar modificaciones sobre los datos directamente desde sus métodos.
  • Oracle Multimedia tiene la posibilidad de almacenar los datos como BLOB o BFILE y realizar migraciones entre ellos.

Este producto es gratuito y se encuentra disponible en todas las ediciones a excepción de la Express Edition.

Antes de iniciar con el desarrollo de las demos, recomiendo revisar la siguiente lectura con la finalidad de disponer una mayor comprensión sobre los tipos de datos BLOB y BFILE: http://www.oracle.com/technetwork/es/articles/sql/manejo-de-oracle-large-objects-1937051-esa.html

Instalación, Validación y Consideraciones


Instalación

Mediante la herramienta Database Configuration Assistant (DBCA) debemos simplemente activar la opción de “Oracle Multimedia” durante el proceso de creación de la base de datos como se aprecia en el siguiente gráfico:

También es posible realizar la instalación vía scripts, como a continuación se detalla:

Export PATH=$ORACLE_BASE/product/12.1.0/dbhome_1/perl/bin:$PATH
cd $ORACLE_HOME/rdbms/admin
perl catcon.pl -u SYS -d $ORACLE_HOME/ord/admin -b ordinst ordinst.sql '--pSYSAUX' '--pSYSAUX'
perl catcon.pl -u SYS -d $ORACLE_HOME/ord/im/admin -b catim catim.sql

Nota: Antes de ejecutar los scripts previamente mencionados, debe estar instalados los siguientes componentes en la base de datos: Oracle JVM, Oracle XML Database y Oracle XDK.

Validación del Componente Oracle Multimedia
Si deseamos validar la correcta instalación de Oracle Multimedia podemos ejecutar las siguientes consultas en las versiones de Oracle Database 11g/12c.

Debemos validar que el estado del componente se encuentre con el valor de VALID.

El procedimiento de validación para versiones inferiores a Oracle Database 11g se encuentra disponible en: My Oracle Support (MOS) Nota: 221337.1 (How to check if Multimedia Audio/Image/Video is Installed Correctly?).

Consideraciones
Es importante indicar que Oracle Multimedia trabaja sobre una gama de formatos multimedia comerciales y en cada versión se amplía este número.
El detalle de los formatos soportados por cada rubro en una base de datos Oracle 12c se encuentra en los siguientes url:

En caso ingresemos un formato no soportado por la versión de base de datos conseguiremos el siguiente error:

ORA-29400: error de cartucho de datos
IMG-00580: specified format does not support output
ORA-06512: en "ORDSYS.ORDIMG_PKG", línea 1061
ORA-06512: en "ORDSYS.ORDIMAGE", línea 175

A continuación se desarrollarán 3 demos las cuales fueron implementadas sobre una base de datos Oracle 12.1.0.2 en una plataforma Oracle Linux 5.10 x64 bits.

Demo #1 - Manejando imágenes con ORDImage

En la siguiente demo se implementará una aplicación sencilla en.NET utilizando ODP.NET 12c, el cual permitirá almacenar imágenes de artistas musicales y a la vez mostrarlas junto con sus propiedades. Por cada imagen insertada, deberá registrarse en nuevos campos los siguientes cambios:

  • Reducción del 50% sobre las dimensiones originales.
  • Tamaño de la imagen original en un formato de: 50x50 píxeles.

Paso 1 - Creación de la tabla.

Paso 2 – Creamos un procedimiento almacenado para insertar una foto.

Nota:

  • El tipo de dato ORDImage nos permite almacenar imágenes; asimismo existen los tipos de datos: ORDAudio, ORDVideo y ORDDoc (Mix de imagen, audio y video).
  • El método INIT inicializa el objeto de tipo ORDImage.
  • ProcessCopy (método del objeto ORDImage)  permite copiar una imagen modificada a medida a otra variable de tipo ORDImage. Este método permitirá cumplir el requerimiento de mantener una copia de la imagen original con las reducciones de tamaño previamente mencionadas.

Mayor información sobre las opciones del método se encuentra disponible en el siguiente url: https://docs.oracle.com/cd/E11882_01/appdev.112/e10776/ap_imgproc.htm#AIVUG50000

Paso 3 - Creación de la Aplicación.

Operación – INSERT


Paso 4 - Operación Lectura.

A continuación se muestra el resultado final de la aplicación.

Validamos la información de la aplicación con los datos obtenidos desde el explorador de Windows:

Podemos apreciar que ambos se obtienen la misma información sobre las dimensiones del archivo.

Demo #2 - Implementando Streaming con Oracle Multimedia

En la siguiente demo se implementará un servidor de Streaming el cual utilizará los videos almacenados con Oracle Multimedia sobre la base de datos Oracle 12c.

En esta implementación el servidor de Streaming se encontrará en un servidor Windows mientras la base de datos Oracle 12c seguirá ejecutándose sobre un sistema operativo Oracle Linux 5.10.

Las especificaciones técnicas que fueron instaladas en el servidor Streaming fueron:

Nota:

  • El plugin requiere como requisitos mínimos lo siguiente:
    • Windows Server 2003 Enterprise x32 bits.
    • Microsoft Windows Media Services 9.
    • Oracle Client 10.2.
  • A la fecha de ser escrito este artículo, el Plugin únicamente es compatible sobre un sistema operativo de x32 bits. Debido a esta limitación, es posible desarrollar un Plugin a partir del Kit de Desarrollo de Microsoft, mayor detalle en:

https://msdn.microsoft.com/en-us/library/windows/desktop/dd892588(v=vs.85).aspx

Paso 1 - Instalación del Plugin.




Instalado el Plugin debemos reiniciar los servicios de Windows Media Services.

Paso 2 - Habilitación del Plugin.
Por defecto el Plugin se encontrará en estado deshabilitado. Para modificar el estado debemos hacer clic derecho y seleccionamos la opción Habilitar.

Paso 3 - Creamos una columna de tipo ORDVideo en nuestra tabla Artista.

Actualizamos la columna VIDEO con un video en formato wmv.

Paso 4 - Creamos las credenciales de Base de Datos con Oracle Wallet.
Los siguientes pasos deben ser ejecutados en el servidor Microsoft Windows Media Services utilizando el Oracle Client instalado.

Paso 5 - Creando un Punto de Montaje.

Definimos la cadena de conexión de la base de datos y el procedimiento almacenado que devolverá el contenido de los videos almacenados.

La definición del procedimiento spu_getVideo a continuación se detalla:

El procedimiento almacenado debe recibir un parámetro de salida de tipo BLOB o BFILE llamado DATA y opcionalmente un parámetro de salida de tipo VARCHAR llamado MIMETYPE el cual nos brindará la información del tipo MIME de cada video obtenido.  Asimismo puede recibir cualquier parámetro de entrada que se requiera implementar.

Paso 6 - Configurando un Punto de Publicación.

La ubicación del contenido será: ord://<nombre_punto_montaje>

Si el procedimiento almacenado hubiera recibido parámetros de entrada, estos deberán ser ingresados de la siguiente manera: ord://<nombre_punto_montaje>/valor_parámetro_1, etc.

El resto de parámetros listados al agregar un punto de publicación quedan a disposición para configurarlo acorde a la necesidad requerida.

Una vez configurado el punto de publicación, procedemos a realizar la prueba con el reproductor de Windows Media:

Debemos realizar un clic en el menú del reproductor e ingresamos el nombre del punto de publicación.

Como se puede apreciar, el reproductor reproduce los videos mediante streaming.

Demo #3 - Manejo de datos en formato DICOM

DICOM es el estándar internacional para el formato de imágenes médicas e información relacionada. Permite que distintas instituciones (hospitales y clínicas) puedan intercambiar datos de pacientes de manera más flexible y transparente. Asimismo hoy existen muchos equipos médicos que vienen con el soporte al formato DICOM.  Este formato  puede incluir imágenes, gráficos, videos, audio y anotaciones.

DICOM es soportado por Oracle desde la versión 10g (10.2.0.2 o 10.2.0.1 + Parche: 4550041). Mayor información en: My Oracle Support (MOS) Nota: 353768.1 (Code Update Required Before Using Multimedia's DICOM Support).

A partir de la versión Oracle Database 12c, el soporte de imágenes DICOM sobre el tipo de dato ORDImage está obsoleto y por ende será obligatorio almacenarlo sobre el tipo de dato ORDDICOM el cual fue introducido en la versión 11gR1.

Esta demo buscará dar un ejemplo de cómo almacenar una imagen en formato DICOM y revisar su metadata.

A continuación se insertará la siguiente imagen en formato DICOM.

Paso 1 - Insertar la imagen

Paso 2 - Revisar metadata de la Imagen

Como podemos apreciar la metada mostrada desde la base de datos coincide con los valores indicados en la imagen DICOM.

Nota 1: Por cada sesión nueva en la base de datos que desee revisar la metadata de una imagen DCOM deberá ejecutar previamente el procedimiento: ordsys.ord_dicom.setDataModel().
Nota 2: Si deseamos revisar todos los atributos de la imagen DICOM podemos ejecutar el siguiente procedimiento almacenado: extractMetadata, ejemplo:

select m.img.extractMetadata('standard') from IMG_MEDICA m
 

Conclusión

Durante todos los ejemplos revisados se ha visto que Oracle Multimedia ofrece una gran flexibilidad y simplicidad en su implementación. También mantiene diversas integraciones con lenguajes de programación, servicios (Streaming, WebDAV, etc) y estándares internacionales (DICOM).
Asimismo, conocemos que contenido multimedia puede ser almacenado en tipos de datos LOB (BLOB & BFILE), pero si requerimos implementar aplicaciones eficientes que requieran manejar con mayor precisión y desempeño los datos multimedia es indispensable el uso de Oracle Multimedia.

 


Publicado por Ing. Francisco Riccio. Es un IT Architect en IBM Perú e instructor de cursos oficiales de certificación Oracle. Está reconocido por Oracle como un Oracle ACE y certificado en productos de Oracle Application & Base de Datos. francisco@friccio.com

Este artículo ha sido revisado por el equipo de productos Oracle y se encuentra en cumplimiento de las normas y prácticas para el uso de los productos Oracle.