Você está na página 1de 30

WBA0475_v1.

Tópicos Avançados em Banco


de Dados: Banco de dados
não-relacionais – NoSQL
Dados em banco de dados
multimídia
Bloco 1
Rogério Ferreira
Dados em formato multimídia

• Grande parte dos dados produzidos nos Figura 1 – Exemplos de Redes Sociais
meios digitais atualmente está no
formato de imagens, sons ou vídeos.
• Nas redes sociais, é produzida
diariamente uma grande quantidade de
dados multimídia.
• Esse cenário ajuda a ilustrar a
importância dos bancos de dados
multimídia.

Fonte: rvlsoft/iStock.com.
Tipos de mídias armazenadas

• Os vídeos costumam ser


Figura 2 – Vídeos e Áudios
compactados para otimizar
espaço, usando padrões
como MPEG (Moving Picture
Experts Group).
• Os dados de áudio precisam
ser digitalizados, e sua
recuperação é um processo
complexo. Fonte: coreay/iStock.com.
Tipos de mídias armazenadas
• Imagens são armazenadas em sua forma Figura 3 – Imagens
bruta, no formato de um conjunto de
valores de pixels, ou em forma
compactada, por meio de padrões como
GIF ou JPEG.

• Em imagens em preto e branco, os pixels


podem ter apenas um bit.

Fonte: RichLegg/iStock.com.
Análise automática de imagens

• Atividade crítica para o suporte de consultas em


bancos de dados multimídia.
• Técnicas para a recuperação de imagens com
base em semelhança de cor são implementadas
principalmente por meio do cálculo de um
histograma de cor para cada imagem.
• Mecanismos para a segmentação são utilizados
para detectar limites da imagem.
Reconhecimento de objetos em imagens

• Tarefa de identificar objetos do mundo real em


imagens ou segmentos de vídeo.
• Uma técnica bastante comum para o
reconhecimento de objetos consiste em dividir a
imagem em segmentos homogêneos.
• Técnicas de reconhecimento de objetos
encontram pontos (ou características)
interessantes em uma imagem, os quais não
variam com as suas transformações.
Marcação semântica em imagens
Atividade que visa reconhecer imagens semelhantes,
em características ou conteúdo.
Figura 4 – Marcação em imagens

Fonte: Nitiphonphat/iStock.com.
Armazenamento de textos e documentos

• Responsável pelo armazenamento de documentos


de texto, como artigos, livros ou revistas.
• Esses documentos normalmente são indexados ao
identificar as palavras-chaves que aparecem no
texto e suas respectivas frequências.
• Palavras comuns (stopwords) são eliminadas
nesse processo. Diversas técnicas têm sido
desenvolvidas para dar ênfase às palavras que são
relevantes para os documentos.
Dados em banco de dados
multimídia
Bloco 2
Rogério Ferreira
Armazenamento de grandes objetos

• PostgreSQL: utiliza os tipos de dados Large


Objects (LO) ou Binary Large OBjects (BLOB) para
armazenar grandes objetos.

SELECT n.nspname as "Esquema", p.proname as "Nome",


pg_catalog.pg_get_function_result(p.oid)
as "Tipo de dado do resultado",
pg_catalog.pg_get_function_arguments(p.oid)
as "Tipos de dados dos argumentos"
FROM pg_catalog.pg_proc p
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
WHERE p.proname ~ '^(lo_.*)$'
AND pg_catalog.pg_function_is_visible(p.oid)
ORDER BY 1, 2, 4;
Funções para a manipulação de grandes objetos
Tabela 1 – Funções para grandes objetos em PostgreSQL
Função Descrição
lo_create Cria um novo objeto e retorna o OID
associado a ele.
lo_export Recupera um objeto por meio de seu nome
ou OID.
lo_unlink Apaga um objeto por meio de seu nome ou
OID.
Escreve certa quantidade de bytes obtidos
lo_write de um buffer para o descritor de um objeto
no sistema de arquivos.
Lê uma certa quantidade de bytes obtidos
lo_read do descritor de um objeto no sistema de
arquivos para um buffer em memória.

Fonte: adaptada de Ahmed, Fayyaz e Shahzad (2015).


Inserção de grandes objetos

• A inserção de grandes objetos em PostgreSQL utiliza


a função lo_import.
CREATE TABLE test_large_objects
(picture_id INTEGER,
name VARCHAR(30),
picture_loc oid,
CONSTRAINT pk_picture_id PRIMARY
KEY(picture_id));

INSERT INTO test_large_objects VALUES


(1, 'tigre africano',
lo_import('/tmp/tigre.jpg'));
Inserção de grandes objetos
Figura 5 – OID da figura na tabela do usuário

SELECT * FROM test_large_objects;

Fonte: elaborada pelo autor.

Figura 6 – Dados da armazenados na tabela do sistema

SELECT * FROM pg_largeobject;

Fonte: elaborada pelo autor.


Dados em banco de dados
multimídia
Bloco 3
Rogério Ferreira
Recuperar e exibir grandes objetos

• Para construir uma aplicação em Java que acesse as funções para


manipulação de grandes objetos, deve-se associar ao projeto o driver JDBC
(Java Database Connectivity) para o acesso ao banco de dados PostgreSQL
(driver postgresql-42.2.14.jar).

• Uma vez estabelecida a conexão via JDBC, as funções disponíveis nela podem
ser usadas para armazenar, recuperar, apagar ou editar as informações
relacionadas a grandes objetos persistidos no banco de dados.
Recuperar e exibir grandes objetos
• Exemplo de código em Java para a manipulação de
grandes objetos em PostgreSQL.
Figura 7 – Classe GerenciarGrandeObjeto – Parte 1

Fonte: elaborada pelo autor.


Recuperar e exibir grandes objetos
Figura 7 – Classe GerenciarGrandeObjeto – Parte 2

Fonte: elaborada pelo autor.


Recuperar e exibir grandes objetos
Figura 7 – Classe GerenciarGrandeObjeto – Parte 3

Fonte: elaborada pelo autor.


Recuperar e exibir grandes objetos

Figura 8 – Classe Main

Fonte: elaborada pelo autor.


Teoria em Prática
Bloco 4
Rogério Ferreira
Reflita sobre a seguinte situação

Crie uma pequena aplicação para armazenar e exibir imagens de filmes, utilizando
os recursos para armazenamento de objetos grandes do bando de dados
PostgreSQL. O esquema fornecido para a aplicação está definido a seguir. Os
próximos slides mostram uma possibilidade de resolução em Java.

CREATE TABLE filmes (filme_id INTEGER,


nome VARCHAR(30),
filme_loc oid,
CONSTRAINT pk_filme_id PRIMARY KEY(filme_id));
Norte para a resolução...

Figura 9 – Classe GerenciamentoCinema

Fonte: elaborada pelo autor.


Norte para a resolução...
Figura 10 – Método mostrarGrandeObjeto

Fonte: elaborada pelo autor.


Norte para a resolução...
Figura 11 – Método lerGrandeObjeto

Fonte: elaborada pelo autor.


Norte para a resolução... Figura 12 – Método Main

Figura 13 – Resultado da aplicação

Fonte: elaborada pelo autor.

Fonte: Geber86/iStock.com.
Dica do Professor
Bloco 5
Rogério Ferreira
Dica do Professor
• O ambiente Eclipse (ECLIPSE, 2020) permite vincular aos seus projetos
os drivers externos (arquivos .jar), que possibilitam realizar a conexão
com bancos de dados para a manipulação de arquivos multimídia.
Figura 14 – Ambiente Eclipse

Fonte: adaptada de Eclipse (2020).


Referências

AHMED, Ibrar; FAYYAZ, Asif; SHAHZAD, Amjad. PostgreSQL Developer's Guide.


Birmingham: Packt Publishing, 2015.
ECLIPSE. Eclipse: The Community for Open Innovation and Collaboration. 2020.
Disponível em: https://www.eclipse.org. Acesso em: 25 jun. 2020.
ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de banco de dados. 6. ed. São
Paulo: Pearson Addison Wesley, 2011.
Bons estudos!

Você também pode gostar