BD Multimdia Valria Times Tratamento de Dados Multimdia
BD Multimídia Valéria Times
Tratamento de Dados Multimídia 10/30/2020 © CIn/UFPE 2
Oracle Inter. Media Áudio, Imagem, Vídeo e Documento Gerenciar imagens, áudios e vídeos de uma maneira integrada com outras informações através de tipos de objetos Estende confiabilidade, disponibilidade e gerenciamento de dados do Oracle para conteúdos multimídia na Internet/Web, comércio eletrônico e aplicações ricas em mídia 10/30/2020 © CIn/UFPE 3
Oracle Inter. Media Consiste de tipos de objetos junto com métodos relacionados para gerenciar e processar dados multimídia ORDAudio, ORDVideo, ORDImage, ORDDoc Armazenam informações da origem dos dados em um tipo objeto-relacional conhecido como ORDSource 10/30/2020 © CIn/UFPE 4
Oracle Inter. Media Tipo ORDSource Provê o acesso a uma variedade de fontes de dados multímidia Todos os tipos do Oracle Intermedia possuem um atributo deste tipo Principais atributos: local. Data src. Type src. Location 10/30/2020 src. Name update. Time local © CIn/UFPE 5
Oracle Inter. Media Como Oracle inter. Media verifica a similaridade Dados os pesos para cada atributo visual, o sistema calcula uma medida de similaridade para cada atributo visual, chamada de pontuação ou distância Pesos informados correspondem a valores entre [ 0 ; 1 ] e pelo menos um deles, deve ser maior que zero Pontuação calculada pode variar de 0. 0 (nenhuma diferença) até 100. 0 (máxima diferença possível) 10/30/2020 © CIn/UFPE 6
Oracle Inter. Media Pontuação de três imagens para dois atributos visuais: cor e formato Formato Imagem 2 Imagem 3 Imagem 1 Cor Imagem 1: dado de referência (consulta) Imagens 2 e 3: mantidas no BD 10/30/2020 © CIn/UFPE 7
Oracle Inter. Media Como inter. Media verifica a similaridade (Cont. ) Grau de similaridade consiste na soma dos produtos entre a distância de cada atributo visual e seu respectivo peso Exemplo: Atributo Visual Distância Peso Cor 15 0. 7 Textura 5 0. 2 Formato 50 0. 1 Grau = 0. 7 * 15 + 0. 2 * 5 + 0. 1 * 50 = 16. 5 10/30/2020 © CIn/UFPE 8
Oracle Inter. Media Como inter. Media verifica a similaridade (Cont. ) Exemplo: Recupere todas as imagens semelhantes a uma dada imagem CURSOR obtenhafotos IS SELECT produto_id , produto_foto FROM tabela WHERE ORDSYS. IMGSimilar ( foto_ass, comp_ass, ´color = “ 0. 4”, texture = “ 0. 10”, shape = “ 0. 3”, location = “ 0. 2” ´ , 20 ) = 1 ; Os pesos e o limite são dependentes da aplicação e determinados através de tentativas e testes. 10/30/2020 © CIn/UFPE 9
Oracle Inter. Media Métodos do Tipo ORDImage. Signature Construtor: init() Inicializa instâncias deste tipo BEGIN INSERT INTO tabela (produto_id, produto_foto, foto_ass) VALUES (1910, ORDSYS. ORDImage. init('FILE', 'FILE_DIR‘, 'speaker. jpg'), ORDSYS. ORDImage. Signature. init()) ; COMMIT; END; / 10/30/2020 © CIn/UFPE 10
Oracle Inter. Media Métodos do Tipo ORDImage. Signature (cont. ) generate. Signature() Gera uma assinatura para uma dada imagem DECLARE t_image ORDSYS. ORDImage ; image_sig ORDSYS. ORDImage. Signature ; BEGIN SELECT p. produto_foto, p. foto_ass INTO t_image, image_sig FROM tabela p WHERE p. produto_id = 2402 FOR UPDATE; -- Gera a assinatura image_sig. generate. Signature (t_image) ; UPDATE tabela p SET p. foto_ass = image_sig WHERE p. produto_id = 2402; END; / © CIn/UFPE 10/30/2020 11
Oracle Inter. Media Métodos do Tipo ORDImage. Signature (cont. ) is. Similar() Verifica se duas assinaturas são similares DECLARE image_sig 1 ORDSYS. ORDImage. Signature; image_sig 2 ORDSYS. ORDImage. Signature; valor INTEGER; BEGIN SELECT foto_ass INTO image_sig 1 FROM tabela WHERE produto_id = 1910; SELECT foto_ass INTO image_sig 2 WHERE produto_id = 1940; 10/30/2020 © CIn/UFPE FROM tabela 12
Oracle Inter. Media is. Similar() -- Compara as images valor : = ORDSYS. ORDImage. Signature. is. Similar(image_sig 1, image_sig 2, 'color="1. 0", texture=0, shape=0, location=0', 10); IF valor = 1 THEN DBMS_OUTPUT. PUT_LINE(‘As imagens são similares'); ELSIF valor = 0 THEN DBMS_OUTPUT. PUT_LINE(‘As imagens não similares'); END IF; Possui operadores: IMGSimilar() IMGScore() 10/30/2020 © CIn/UFPE 13
Oracle Inter. Media Métodos do Tipo ORDImage. Signature (cont. ) evaluate. Score() Computa a distância entre duas assinaturas com base na influência dos pesos passados como parâmetros Retorna um valor entre 0. 0 (imagens idênticas) e 100. 0 (imagens diferentes) 10/30/2020 © CIn/UFPE 14
Oracle Inter. Media DECLARE t_image ORDSYS. ORDImage; c_image ORDSYS. ORDImage; image_sig ORDSYS. ORDImage. Signature; compare_sig ORDSYS. ORDImage. Signature; pont FLOAT; BEGIN SELECT p. produto_foto, p. foto_ass INTO t_image, image_sig FROM tabela p WHERE p. produto_id = 1910 FOR UPDATE; -- Gera a assinatura image_sig. generate. Signature(t_image); UPDATE tabela p SET p. foto_ass = image_sig WHERE p. produto_id =1910; 10/30/2020 © CIn/UFPE 15
Oracle Inter. Media SELECT p. produto_foto, p. foto_ass INTO c_image, compare_sig FROM tabela p WHERE p. produto_id = 1940 FOR UPDATE; -- Gera a assinatura compare_sig. generate. Signature(c_image); UPDATE tabela p SET p. foto_ass = compare_sig WHERE produto_id = 1940; SELECT p. produto_foto, p. foto_ass INTO t_image, image_sig FROM tabela p WHERE p. produto_id = 1910; SELECT p. produto_foto, p. foto_ass INTO c_image, compare_sig FROM tabela p WHERE p. produto_id = 1940; 10/30/2020 © CIn/UFPE 16
Oracle Inter. Media -- Comparação entre duas imagens baseada na cor score: =ORDSYS. ORDImage. Signature. evaluate. Score (image_sig, compare_sig, 'color="1. 0", texture=0, shape=0, location=0'); DBMS_OUTPUT. PUT_LINE(‘Distancia = ' || score) ; END ; / 10/30/2020 © CIn/UFPE 17
Oracle Inter. Media Uso de Índices no Oracle inter. Media Tipo ORDImage. Index Permite definição, construção e manuteção de um índice para imagens Uma vez criado, ele é automaticamente atualizado quando imagens são inseridas, atualizadas ou removidas do BD O nome do índice pode ter até 24 caracteres Índices devem ser criados sobre os campos de assinatura e usados em grandes BD 10/30/2020 © CIn/UFPE 18
Oracle Inter. Media DECLARE t_image ORDSYS. ORDImage ; image_ass ORDSYS. ORDImage. Signature ; BEGIN SELECT p. produto_foto , p. foto_ass INTO t_image , image_ass FROM tabela p WHERE p. produto_id = 1910 FOR UPDATE ; -- Gera uma assinatura: image_ass. generate. Signature (t_image) ; UPDATE tabela p SET p. foto_ass = image_ass ; WHERE p. produto_id = 1910 ; COMMIT ; END ; / 10/30/2020 © CIn/UFPE 19
Oracle Inter. Media CREATE INDEX idx 1 ON tabela (foto_ass) INDEXTYPE IS ORDSYS. ORDIMAGEINDEX PARAMETERS (´ORDImage_Filter_Tablespace = <nome> , ORDImage_Index_Tablespace = <nome>´ ) ; ANALYZE INDEX idx 1 COMPUTE STATISTICS ; 10/30/2020 © CIn/UFPE 20
Oracle Inter. Media Exemplo Type t_midia id_midia locado duracao preco capa nome_c apa Type t_dvd under t_midia titulo diretor genero trailer nome_ sinopse nome_ trailer sinops Type t_cd under t_midia album artista estilo 10/30/2020 faixa nome_ letra faixa © CIn/UFPE 21 nome_ letra
Oracle Inter. Media Criação dos Tipos CREATE OR REPLACE TYPE t_midia AS OBJECT ( id_midia integer , locado varchar 2 (5 ) , duracao integer , preco number (10 , 2 ) , nome_capa varchar 2 (100 ) , capa ORDSYS. ORDImage , capa_sig ORDSYS. ORDImage. Signature ) not final ; 10/30/2020 © CIn/UFPE 22
Oracle Inter. Media Criação dos Tipos (Cont. ) CREATE OR REPLACE TYPE t_dvd UNDER t_midia ( titulo varchar 2 ( 255 ) , diretor varchar 2 ( 255 ) , genero varchar 2 ( 255 ) , nome_trailer varchar 2 (100 ) , trailer ORDSYS. ORDVideo , nome_sinopse varchar 2 (100 ) , sinopse ORDSYS. ORDDoc ) ; 10/30/2020 © CIn/UFPE 23
Oracle Inter. Media Criação dos Tipos (Cont. ) CREATE OR REPLACE TYPE t_cd UNDER t_midia ( album varchar 2 ( 255 ) , artista varchar 2 ( 255 ) , estilo varchar 2 ( 255 ) , nome_faixa varchar 2 (100 ) , faixa ORDSYS. ORDAudio , nome_letra varchar 2 (100 ) , letra ORDSYS. ORDDoc ) ; 10/30/2020 © CIn/UFPE 24
Oracle Inter. Media Criação de Tabelas CREATE TABLE dvd OF t_dvd ( id_midia primary key ) ; CREATE TABLE cd OF t_cd ( id_midia primary key ) ; 10/30/2020 © CIn/UFPE 25
Oracle Inter. Media Inserção de um CD no BD CREATE OR REPLACE PROCEDURE insere. CD ( duracao integer , preco number , nome_capa varchar 2 , album varchar 2 , artista varchar 2 , estilo varchar 2 , nome_faixa varchar 2 , nome_letra varchar 2 ) IS id_cd INT ; Capa. Obj_sig ctx_capa ORDSYS. ORDImage ; ORDSYS. ORDImage. Signature ; RAW (4000) : = NULL ; 10/30/2020 © CIn/UFPE 26
Oracle Inter. Media Faixa. Obj ctx_faixa ORDSYS. ORDAudio ; RAW (4000) : = NULL ; Letra. Obj ctx_letra ORDSYS. ORDDoc ; RAW (4000) : = NULL ; BEGIN -- insere a tupla INSERT INTO cd VALUES (t_cd (seq_id_midia. next. Val, ´false´ , duracao, preco, nome_capa, ORDSYS. ORDImage. init (´FILE ´ , `IMAGENS´ , nome_capa) , ORDSYS. ORDImage. Signature. init() , album , artista , estilo , nome_faixa , ORDSYS. ORDAudio. init() , nome_letra , ORDSYS. ORDDoc. init() ) ) ; © CIn/UFPE 27 10/30/2020
Oracle Inter. Media -- pega o identificador da tupla inserida SELECT max (id_midia) INTO id_cd from cd ; -- seleciona a tupla inserida SELECT c. capa , c. capa_sig INTO Capa. Obj , Capa. Obj_sig FROM cd c WHERE c. id_midia = id_cd FOR UPDATE ; -- seta as propriedades da imagem inserida Capa. Obj. set. Properties ; Capa. Obj. import ( ctx_capa ) ; Capa. Obj_sig. generate. Signature (Capa. Obj) ; UPDATE cd SET capa = Capa. Obj , capa_sig = Capa. Obj_sig WHERE id_midia = id_cd ; COMMIT © CIn/UFPE 28 10/30/2020 ;
Oracle Inter. Media -- pega o som inserido para colocar seu conteudo SELECT c. faixa INTO Faixa. Obj FROM cd c WHERE c. id_midia = id_cd FOR UPDATE ; -- seta as propriedades do objeto do tipo audio Faixa. Obj. set. Source (´FILE ´, `AUDIOS´, nome_faixa) ; Faixa. Obj. import ( ctx_faixa ) ; Faixa. Obj_set. Properties (ctx_faixa) ; -- atualiza a tupla UPDATE cd c SET c. faixa = Faixa. Obj WHERE c. id_midia = id_cd ; COMMIT 10/30/2020 ; © CIn/UFPE 29
Oracle Inter. Media -- coloca o documento na tupla SELECT c. letra INTO Letra. Obj FROM cd c WHERE c. id_midia = id_cd FOR UPDATE ; Letra. Obj. set. Source ( ´FILE ´, `DOCUMENTOS´, nome_letra) ; Letra. Obj. set. Mime. Type ( ´application / pdf´) ; Letra. Obj. import ( ctx_letra , FALSE ) ; UPDATE cd c SET c. letra = Letra. Obj WHERE c. id_midia = id_cd ; COMMIT ; END ; 10/30/2020 © CIn/UFPE 30
Roteiro para Projeto Multimídia Criar Minimundo, modelo conceitual e esquema relacional Implementar as tabelas no SGBD, com atributos ORDAudio, ORDVideo, ORDImage e ORDDoc Implementar procedimentos para inserção e recuperação de dados multimídia do BD Implementar métodos para realização de consultas baseadas em contexto Testar e colocar o sistema em funcionamento Data da Entrega: 26 / 11 / 09 10/30/2020 © CIn/UFPE 31
Roteiro para Nota Máxima Descrição de Minimundo corretos Modelagem Conceitual Esquema Relacional Fazer uso dos tipos do Oracle Intermedia (ORDAudio, ORDVideo, ORDDoc e ORDImage) Inserir e recuperar dados multimidia do BD, incluindo consultas de contexto. Defesa do projeto com qualidade e segurança 10/30/2020 © CIn/UFPE 32
- Slides: 32