Disclaimer

Данный блог является моей личной точкой зрения и не обязательно отражает точку зрения Oracle.

The views expressed on this blog are my own and do not necessarily reflect the views of Oracle

Поиск

Подписка

Обзор возможностей Oracle Multimedia

23.01.2009 от aryndin99

Архитектура

Oracle Multimedia (в прошлом Oracle interMedia)  - это возможность Oracle Database 11g для управления мультимедийным контентом (изображения, звук, видео).  Использование этой функции позволяет управлять мультимедийными данными интегрированно с реляционной информацией. Oracle Multimedia умеет работать с большинством популярных мультимедийных форматов. Хранить такие мультимедийные данные можно разными способами (внутри и вовне базы). Также предоставляется целый спектр интерфейсов для использования этих сервисов (объектный, реляционный). Для разработки приложений Oracle поставляет набор Java интерфейсов и компонентов.

На слайде ниже показана общая архитектура Oracle Multimedia

image

Типы данных

Поддержка мультимедийных данных реализована через использование объектно-реляционных типов данных:

  • ORDAudio - имеет специфичные для звукового файла свойства
  • ORDImage - имеет специфичные для графического файла свойства
  • ORDVideo - имеет специфичные для видео файла свойства
  • ORDDoc -  имеет общие для всех мультимедиа файлов свойства

Как и любые объектные типы экземляры ORDAudio, ORDDoc, ORDImage и ORDVideo состоят из атрибутов (включает метаданные и медиаданные) и методов. Медиаданные – это реальное видео, аудио или графическое изображение. Метаданные – это информация о данных: длина объекта, метод компрессии, формат. Методы – это процедуры, которые могут быть выполнены для объекта, такие как getContent() и setProperties().

Все четыре типа данных хранят информацию в объектно реляционном типе данных ORDSource.

Медиаданные могут храниться как в виде BLOB (большой плюс – транзакционный контроль), а могут вовне базы данных. В последнем случае в базе данных будет храниться указатель на медиаданные. Указатель может быть в одном из следующих видов:

  • BFILE
  • HTTP URL
  • Пользовательский источник для media data server (RealNetworks Streaming Servers или Microsoft Windows Media Services), а также других серверов

Примеры приложений

Некоторые примеры приложений, которые могут использовать Oracle Multimedia:

  • Электронный архив с медицинскими записями (включая DICOM изображения)
  • Удаленное обучение
  • Агенство недвижимости
  • Архив фотографий (художественная галерея или профессональные фотографы)
  • Электронный архив документов
  • Публикация в web

Отдельного упоминания заслуживает возможность хранения DICOM данных. Это стандартный формат для хранения медицинских изображений. Этот формат включает в себя также набор метаданных (ФИО пациента, дату снимка и т.д.). Более подробно я опишу этот формат в отдельной статье.

Загрузка данных

Мультимедийные данные перед использованием в базе данных должны быть туда загружены. Для этого можно использовать следующие инструменты:

  • SQL*Loader – встроенная утилита Oracle, позволяющая загружать данные в базу. В нашем случае – LOB данные и внешние мультимедийные файлы в таблицу

Пример загрузки с помощью SQL*Loader

  • PL/SQL 

Доступ к данным, хранящимся в Oracle Multimedia

Приложения могут получать доступ к данным в Oracle Multimedia с помощью SQL, PL/SQL, OCI или Java:

 

  • Oracle Multimedia Java API
    Позволяет Java приложениям в любом звене (база данных, сервер приложений, клиент) получать и модифицировать мультимедийные данные. Oracle Multimedia Java API позволяет включать в JDBC result set как традиционные реляционные, так и Oracle Multimedia данныею
  • Streaming Content from Oracle Database
    Можно также использовать специальный plug-in от Oracle для распространения данных через RealNetworks и Microsoft Windows Media сервера.
    Plug-in можно скачать по адресу: http://www.oracle.com/technology/software/products/intermedia/index.html 

 

Java-приложение для Oracle Multimedia

1. Прежде чем начинать разработку приложения давайте проинсталлируем базу данных с примерами. По этой ссылку нужно выполнить пункты 1 и 2. 

2. Кроме того, необходимо проинсталлировать JDK от Sun. Скачать ее можно вот здесь.

3. Также давайте проинсталлируем Standalone OC4J. Можно взять тот, который идет в поставке JDeveloper, но я сейчас буду говорить об обычном OC4J, который можно скачать здесь.

4. Распаковать OC4J на сервере. 

5. После инсталляции нужно будет прописать переменную JAVA_HOME, указывающую на папку, куда был проинсталлирован JDK. В моем случае это папка /u01/app/oracle/product/11.1.0/db_1/jdk1.6.0_11, т.е. команда

export JAVA_HOME=/u01/app/oracle/product/11.1.0/db_1/jdk1.6.0_11

Также нужно подредактировать файл $OC4J_HOME/bin/oc4j. В этом файле нужно прописать переменную ORACLE_HOME, чтобы она указывала на папку $OC4J_HOME. Я сделал вот так (у меня глобальная переменная ORACLE_HOME указывает на /u01/app/oc4j):

#########################################################

########## START CONFIGURATION SECTION ##################
#########################################################
ORACLE_HOME=/u01/app/oc4j
J2EE_HOME=$ORACLE_HOME/j2ee/home

6. Создадим таблицы для нашего приложения

Создадим пользователя scott:
[sourcecode language="sql"]
create user scott identified by tiger;
grant connect,resource to scott;
[/sourcecode] 

Наше приложение будет демонстрировать применение сервлетов для загрузки и выгрузки мультимедийных данных в и из базы данных. Пользователи получают доступ к фотоальбому для просмотра содержимого фотоальбома, включая предпосмотровые (thumbnail) версии полноразмерных изображений. Доступна также возможность загрузки фотографий в альбом. Наше приложение будет использовать таблицу photos и последовательность (sequence) photos_sequence. Создадим их

[sourcecode language="sql"]
CREATE TABLE photos( id          NUMBER PRIMARY KEY,
                    description VARCHAR2(40) NOT NULL,
                    location    VARCHAR2(40),
                    image       ORDSYS.ORDIMAGE,
                    thumb       ORDSYS.ORDIMAGE ) tablespace USERS
--
-- store full-size images and thumbnail images as SecureFile LOBs
--
LOB(image.source.localdata)  STORE AS SECUREFILE
LOB(thumb.source.localdata)  STORE AS SECUREFILE;

CREATE SEQUENCE photos_sequence;
[/sourcecode]

 

Типы данных для столбцов image и thumb определены как Oracle Multimedia image объекты. Они буду содержать соответственно полноразмерную и уменьшенную версии изображения.

7. В поставке Examples у нас уже есть написанное приложение для Oracle Multimedia и оно находится в папке $ORACLE_HOME/ord/http/demo/servlet. В этой папке есть файл README.TXT. В нем описано как проинсталлировать это приложение.

  • Отредактируйте файл $ORACLE_HOME/ord/http/demo/servlet/PhotoAlbumServlet.java, введя корректную информацию для подключения к базе:
    [sourcecode language="java"]
        private final static String JDBC_CONNECT_STRING =
         "jdbc:oracle:thin:@localhost:1521:orcl";  // JDBC Thin driver
        private final static String JDBC_USER_NAME = "scott";
        private final static String JDBC_PASSWORD  = "tiger";
    [/sourcecode]
  • Скомпилируйте файл PhotoAlbumServlet.java и полученный PhotoAlbumServlet.class 
    /u01/app/oracle/product/11.1.0/db_1/jdk1.6.0_11/bin/javac
    -cp $ORACLE_HOME/ord/jlib/ordhttp.jar:$ORACLE_HOME/ord/jlib/ordim.jar:
    $ORACLE_HOME/jdbc/lib/ojdbc6.jar:$ORACLE_HOME/sqlj/lib/runtime12.jar:
    $ORACLE_HOME/oc4j/j2ee/home/lib/servlet.jar PhotoAlbumServlet.java
  • Cкопируйте полученный файл в папку $OC4J_HOME/j2ee/home/default-web-app/WEB-INF/classes 
  • Cкопируйте также уже заранее скомпилированный класс файл PhotoAlbumRequest.class в папку $OC4J_HOME/j2ee/home/default-web-app/WEB-INF/classes 
  • Скопируйте из папки $ORACLE_HOME/ord/jlib в $OC4J_HOME/j2ee/home/lib/ 2 файла: ordim.jar и ordhttp.jar. 
  • В файл $OC4J_HOME/j2ee/home/config/application.xml добавьте строки для ссылки на библиотеки
           <library path="../../home/lib/ordim.jar" />
           <library path="../../home/lib/ordhttp.jar" />
  • В файле $OC4J_HOME/j2ee/home/default-web-app/WEB-INF/web.xml необходимо прописать mapping для сервлета:
    [sourcecode language="xml"]
     
      PhotoAlbumServlet
      PhotoAlbumServlet
     

     
      PhotoAlbumServlet
      /PhotoAlbumServlet
     

    [/sourcecode] 
  • Пользователем root разрешите запуск oc4j:
    chmod a+x $OC4J_HOME/bin/oc4j 
  • Запустите OC4J 
    [sourcecode language="java"]
    $OC4J_HOME/bin/oc4j -start
    [/sourcecode]
  • Зайдите через Internet Explorer в альбом 
    http://server:8888/PhotoAlbumServlet
     

Рубрики: Oracle Multimedia | Комментариев нет »

Обсуждение закрыто.