universidade do vale do itajaí centro de ciências

Propaganda
UNIVERSIDADE DO VALE DO ITAJAÍ
CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
BANCO DE DADOS ORIENTADO A OBJETOS COMO FERRAMENTA
PARA ARMAZENAMENTO E RECUPERAÇÃO DE DADOS MULTIMÍDIA
Banco de Dados
por
Marcela Leite
Alexandre Biazin, M.Sc
Orientador
Itajaí (SC), junho de 2008
UNIVERSIDADE DO VALE DO ITAJAÍ
CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
BANCO DE DADOS ORIENTADO A OBJETOS COMO FERRAMENTA
PARA ARMAZENAMENTO E RECUPERAÇÃO DE DADOS MULTIMÍDIA
Banco de Dados
por
Marcela Leite
Relatório apresentado à Banca Examinadora do
Trabalho de Conclusão do Curso de Ciência da
Computação para análise e aprovação.
Orientador: Alexandre Biazin, M.Sc
Itajaí (SC), junho de 2008
SUMÁRIO
LISTA DE ABREVIATURAS..................................................................iv
LISTA DE FIGURAS................................................................................. v
LISTA DE TABELAS ..............................................................................vii
RESUMO..................................................................................................viii
ABSTRACT................................................................................................ix
1 INTRODUÇÃO ...................................................................................... 1
1.1 PROBLEMATIZAÇÃO ..................................................................................... 3
1.1.1 Formulação do Problema ................................................................................. 3
1.1.2 Solução Proposta ............................................................................................... 3
1.2 OBJETIVOS ........................................................................................................ 4
1.2.1 Objetivo Geral ................................................................................................... 4
1.2.2 Objetivos Específicos ........................................................................................ 4
1.3 METODOLOGIA................................................................................................ 4
1.4 ESTRUTURA DO TRABALHO ....................................................................... 5
2 FUNDAMENTAÇÃO TEÓRICA ........................................................ 6
2.1 DADOS MULTIMÍDIA...................................................................................... 6
2.2 ARMAZENAMENTO E RECUPERAÇÃO DE DADOS MULTIMÍDIA ... 7
2.3 GERENCIAMENTO ELETRÔNICO DE DOCUMENTOS ......................... 9
2.4 BANCO DE DADOS OBJETO-RELACIONAL ........................................... 10
2.4.1 Modelo Relacional (MR) ................................................................................ 11
2.4.2 Modelo de Entidade/Relacionamento (MER) .............................................. 12
2.4.3 Modelo de dados EER - ER Estendido ......................................................... 13
2.5 BANCOS DE DADOS ORIENTADOS A OBJETOS ................................... 19
2.5.1 Modelo de Dados Orientado a Objetos ......................................................... 20
2.5.2 Object Database Management Group (ODMG).......................................... 27
2.6 FERRAMENTAS DISPONÍVEIS DE BANCOS DE DADOS
ORIENTADOS A OBJETOS................................................................................... 32
2.6.1 Caché ................................................................................................................ 32
2.6.2 Poet ................................................................................................................... 35
2.6.3 Jasmine............................................................................................................. 36
2.6.4 Versant ............................................................................................................. 37
2.6.5 Análise comparativa ....................................................................................... 38
2.7 FERRAMENTAS DISPONÍVEIS DE BANCOS DE DADOS OBJETORELACIONAL.......................................................................................................... 39
2.7.1 DB2 ................................................................................................................... 39
2.7.2 Oracle ............................................................................................................... 40
2.7.3 Análise comparativa ....................................................................................... 41
ii
3 DESENVOLVIMENTO ...................................................................... 42
3.1 IMPLEMENTAÇÃO DO PROTÓTIPO DE SISTEMA GEDOO .............. 42
3.1.1 Arquitetura do sistema ................................................................................... 48
3.1.2 Banco de dados OO Caché ............................................................................ 51
3.1.3 Funções do Sistema GEDOO ......................................................................... 55
3.1.4 Diagramas ........................................................................................................ 62
3.2 ANÁLISE DOS RESULTADOS ...................................................................... 66
3.2.1 Armazenamento e recuperação de dados Multimídia................................. 66
3.2.2 Segurança dos dados e compartilhamento ................................................... 70
3.2.3 Facilidade no desenvolvimento ...................................................................... 70
4 CONCLUSÃO ...................................................................................... 72
REFERÊNCIAS BIBLIOGRÁFICAS ................................................... 75
A DIAGRAMA DE CLASSES COMPLETO....................................... 78
B DADOS COLETADOS........................................................................ 81
iii
LISTA DE ABREVIATURAS
API
BD
BDOO
BDOR
BLOB
CLOB
EER
GED
IDE
LOB
LPOOs
MER
MR
ODL
ODMG
OID
OML
OO
OQL
SGBD
SGBDOO
SGBDOR
SQL
TAD
TCC
UML
UNIVALI
XML
Application Program Interface
Banco de Dados
Banco de Dados Orientado a Objetos
Banco de Dados Objeto-Relacional
Binary Large Object Binary
Character Large Object Binary
Entidade/Relacionamento Estendido
Gerenciamento Eletrônico de Documentos
Integrated Development Environment
Large Object Binary
Linguagem de Programação Orientada a Objetos
Modelo Entidade/Relacionamento
Modelo Relacional
Object Definition Language
Object Data Management Group
Object Identifier
Object Manipulation Language
Orientada a Objetos
Object Query Language
Sistemas Gerenciadores de Bancos de Dados
Sistemas Gerenciadores de Banco de Dados Orientado a Objetos
Sistemas Gerenciadores de Banco de Dados Objeto-Relacional
Structured Query Language
Tipo Abstrato de Dado
Trabalho de Conclusão de Curso
Universal Modeling Language
Universidade do Vale do Itajaí
Extensible Markup Language
iv
LISTA DE FIGURAS
Figura 1. Comparativo de formas de armazenamento..........................................................................9
Figura 2. Exemplo de modelo de dados relacional. ...........................................................................12
Figura 3. Exemplo de modelo de dados entidade/relacionamento.....................................................13
Figura 4. Exemplo de modelo de dados EER.....................................................................................14
Figura 5. Sintaxe para definição de tipos. ..........................................................................................15
Figura 6. Sintaxe para geração de OIDs.............................................................................................15
Figura 7. Exemplo do uso de referência entre tabelas........................................................................16
Figura 8. Sintaxe para definição de métodos para um tipo de dado...................................................17
Figura 9. Sintaxe da definição de método Externo. ...........................................................................17
Figura 10. Sintaxe para o uso da Herança de tipos. ...........................................................................18
Figura 11. Utilizando OIDs para representar os relacionamentos. ....................................................21
Figura 12. Modelo de objeto do tipo atom. ........................................................................................22
Figura 13. Modelo de objeto do tipo tuple. ........................................................................................22
Figura 14. Modelo de objeto do tipo set.............................................................................................23
Figura 15. Sintaxe para assinatura de uma classe. .............................................................................25
Figura 16. Persistência de um objeto pelo mecanismo de nomeação. ...............................................25
Figura 17. Persistência de um objeto pelo mecanismo de alcançabilidade........................................26
Figura 18. Declaração de uma classe no padrão ODL. ......................................................................27
Figura 19. Declaração de uma inteface no padrão ODL. ...................................................................28
Figura 20. Herança de comportamento no padrão ODL. ...................................................................28
Figura 21. Herança de estado e comportamento. ...............................................................................28
Figura 22. Herança múltipla de uma classe........................................................................................29
Figura 23. Declaração de atributos.....................................................................................................29
Figura 24. Representação de relacionamentos do padrão ODMG. ....................................................29
Figura 25. Sintaxe da assinatura de um método.................................................................................30
Figura 26. Modelo de esquema de banco de dados para representação de um esquema ODL..........30
Figura 27. Exemplo de utilização da linguagem OQL.......................................................................31
Figura 28. Exemplo de Expressões de caminho.................................................................................32
Figura 29. Tela da Ferramenta de desenvolvimento de classes e métodos do Caché. .......................33
Figura 30. Arquitetura do SGBDOO Caché.......................................................................................34
Figura 31. Armazenamento de um objeto persistente. .......................................................................35
Figura 32. Armazenamento de índices. ..............................................................................................35
Figura 33. Arquitetura BDOO Jasmine..............................................................................................37
Figura 34. Tela da interface de administração do banco de dados Versant. ......................................38
Figura 35. Tela da ferramenta Centro de Desenvolvimento do DB2.................................................40
Figura 36. Diagrama de atividades do processo de publicação de documento. .................................43
Figura 37. Casos de uso do sistema GEDOO.....................................................................................45
Figura 38. Modelo de objetos do sistema...........................................................................................46
Figura 39. Código da definição do formulário. ..................................................................................47
Figura 40. Código do Servlet lstUltArq. ...........................................................................................47
Figura 41. Código do método getArquivosByArea da classe persisteArquivo. .............................48
Figura 42. Diagrama de componentes do sistema GEDOO...............................................................49
Figura 43. Método conDataBase da classe persisteArquivo. ..........................................................49
Figura 44. Método salvaArquivoDB2 da classe persisteArquivo...................................................50
Figura 45. Exemplo de criação de objeto do banco Caché. ...............................................................53
Figura 46. Criação de uma classe na ferramenta Studio. ...................................................................54
v
Figura 47. Exemplo de acesso ao Caché utilizando comandos SQL .................................................55
Figura 48. Tela de autenticação do sistema........................................................................................56
Figura 49. Tela principal do sistema. .................................................................................................56
Figura 50. Tela de submissão de arquivos. ........................................................................................57
Figura 51. Tela de confirmação de arquivo salvo. .............................................................................57
Figura 52. Exemplo de código utilizando a biblioteca commons-fileupload.....................................58
Figura 53. Tela de documentos pendentes de aprovação. ..................................................................59
Figura 54. Tela de aprovação de documentos. ...................................................................................59
Figura 55. Tela de pesquisa de arquivos. ...........................................................................................60
Figura 56. Tela do resultado da pesquisa. ..........................................................................................60
Figura 57. Tela de recuperação do arquivo. .......................................................................................61
Figura 58. Tela de alteração de arquivos – Pesquisa..........................................................................61
Figura 59. Tela de alteração de arquivos............................................................................................62
Figura 60. Diagrama de classes do sistema GEDOO.........................................................................63
Figura 61. Diagrama de Seqüência de submissão de um arquivo ......................................................64
Figura 62. Diagrama de Seqüência da pesquisa de arquivos. ............................................................65
Figura 63. Diagrama ER do sistema GEDOO....................................................................................66
Figura 64. Gráfico comparativo entre os tipos de mídia. ...................................................................69
vi
LISTA DE TABELAS
Tabela 1. Comparativo de Banco de dados OO. ................................................................................39
Tabela 2. Comparativo de Banco de dados Objeto-Relacional..........................................................41
Tabela 3. Tabela ARQUIVO..............................................................................................................51
Tabela 4. Tabela VERSAO. ...............................................................................................................51
Tabela 5. Atributos da Classe ArqCh ................................................................................................54
Tabela 6. Resultado dos testes efetuados. ..........................................................................................67
Tabela 7. Média do tempo de armazenamento e recuperação............................................................67
Tabela 8. Média do tempo de armazenamento e recuperação por tipo de arquivos (Bytes/ms). .......68
vii
RESUMO
LEITE, Marcela. Banco de Dados Orientado a Objetos como Ferramenta para
Armazenamento e Recuperação de Dados Multimídia. Itajaí, 2007. 110 f. Trabalho de
Conclusão de Curso (Graduação em Ciência da Computação)–Centro de Ciências Tecnológicas da
Terra e do Mar, Universidade do Vale do Itajaí, Itajaí, 2007.
As informações multimídia estão cada vez mais acessíveis e se tornaram ferramentas importantes
em escritórios ou salas de aula. Elas abrangem imagens, sons e documentos, entre outras diversas
fontes de hiperlinks que estão disponíveis em meio eletrônico e, entre elas, a Internet. Gerenciar
dados multimídia tem se tornado uma grande tarefa para os administradores de sistemas, que
encontram problemas de recuperação e compartilhamento dessas informações. Uma opção para o
armazenamento de dados multimídia é a utilização de banco de dados orientado a objetos, que, além
de possuir suporte a dados complexos, facilitam na persistência dos objetos e desenvolvimento de
sistemas orientados a objetos. Com a finalidade de avaliar o BDOO como ferramenta para
armazenamento e recuperação de dados multimídia, foi implementado o sistema GEDOO Gerenciamento Eletrônico de Documentos Orientado a Objetos. Este protótipo de sistema para
controle de arquivos multimídia que se comporta como um sistema Ged, foi desenvolvido
utilizando a linguagem de programação Java no padrão MVC com suporte para armazenar arquivos
em três meios diferentes: disco, banco de dados objeto-relacional e orientado à objetos. Com esse
protótipo foi realizada a análise de performance para armazenamento e recuperação dos dados
multimídia obtendo-se uma visão da forma mais adequada de armazenamento além da análise
aprofundada do desenvolvimento e aplicabilidade de um BDOO .
Palavras-chave: BDOO.Armazenamento e Recuperação.Multimídia.
viii
ABSTRACT
Multimedia information is more accessible and became an important tool in offices or classrooms.
It encloses images, sounds and documents, among other various sources of hyperlinks that are
available in electronic media and, among them, Internet. The management of multimedia data has
become a great task for system administrators that deal with difficulties in recovering and sharing
this information. An option for multimedia storage data could be the use of an object oriented
database that, besides having support for the complex data, eases in the persistence of objects and
systems development. With proposal to evaluate the OODB as a tool for storing and recovering
multimedia data, the GEDOO – Management of Electronic Document Object Oriented – system
was developed. This controller system of multimedia information prototype, designed behaves as a
GED system, was developed using the Java program language in MVC pattern, supporting the
storage of files into three different ways: disc, relational object database and object oriented
database. Using this prototype, it was analyzed the performance of storing and recovering
multimedia data, getting knowledge for a better way of storage, such as a deep analysis of the
development and applicability of an OODB.
Keywords: OODB. Storage and Recovery. Multimedia
ix
1 INTRODUÇÃO
Os bancos de dados se tornaram ferramentas indispensáveis para o gerenciamento e
manutenção de dados. Entretanto, com o passar do tempo surgiu a necessidade de armazenar dados
mais complexos, o que tornou os bancos mais complexos também.
Os bancos de dados relacionais são utilizados em grande escala na construção de sistemas de
informação tradicionais. Entretanto, estes bancos de dados possuem algumas limitações que não
atendem a projetos de sistemas como: engenharia e manufatura (CAD/CAM e CIM), experimentos
científicos, telecomunicações, sistemas de informações geográficos e multimídia (ELMASRI &
NAVATHE, 2005).
Os Bancos de Dados Orientados a Objetos (BDOO) foram projetados para atender às
necessidades dessas aplicações mais complexas através da utilização de conceitos de classes,
encapsulamento, herança e polimorfismo que já existiam nas linguagens Orientada a Objetos (OO),
e integram a orientação a objeto com características de bancos de dados relacionais. Através de
construções orientadas a objeto, pode ser feito o encapsulamento para proteção das classes sem
perder a disponibilidade de compartilhar referências comuns no sistema. E é o banco de dados que
garante o compartilhamento destas informações, onde os usuários sempre podem obter o estado
atualizado dos objetos e salvar novos estados que ficarão gravados permanentemente no disco
rígido (KHOSHAFIAN, 1994).
Uma característica chave dos BDOO é o poder dado ao projetista para especificar, além da
estrutura do banco, as operações que podem ser aplicadas aos objetos do banco.
Um objeto geralmente possui dois componentes: estado (valor) e comportamento
(operações). Os objetos em uma linguagem de programação OO existem somente durante a
execução do programa e são chamados objetos transientes. Um banco de dados OO pode estender a
existência de objetos de modo que sejam armazenados de forma permanente, e isso é conhecido
como persistência nos BDOO, onde cada objeto possui um identificador único conhecido como
OID (Object Identifier) que é gerado automaticamente pelo próprio banco. O usuário externo não
possui acesso a esse identificador, sendo acessado somente pelo banco (ELMASRI & NAVATHE
2005).
São cada vez mais comuns aplicações de telecomunicação ou sistemas de processamento de
imagens. Esses tipos de dados são conhecidos como Multimídia, que podem ser considerados a
combinação de texto, arte gráfica, som, animação e vídeo transmitido pelo computador. Quando o
usuário controla quando e quais elementos serão transmitidos, é chamada de multimídia interativa.
Outro tipo de multimídia é quando há uma estrutura de elementos vinculados pela qual o usuário
pode mover-se. Neste caso, a multimídia interativa passa a ser hipermídia (VAUGHAN, 1994).
Alguns bancos de dados suportam o armazenamento de dados de tipos grandes como os
BLOBs, que podem armazenar dados multimídia. Embora campos grandes possam ser armazenados
em arquivos de sistemas operacionais, armazená-los no banco de dados permite que os dados
multimídia sejam compartilhados ao mesmo tempo por muitos usuários sob controle de transação
(KHOSHAFIAN, 1994).
Os modelos de dados tradicionais encontrados nos bancos de dados relacionais não são
adequados para o armazenamento de informações multimídia, pois não possuem recursos para
suportá-los. Para resolver essa necessidade, são utilizados os BDOO que possuem suporte a esse
tipo de dado.
Neste trabalho foi desenvolvido um estudo aprofundado sobre os BDOOs, aplicando os
conceitos aprendidos em um protótipo de aplicação para armazenamento e recuperação de dados
multimídia, analisando o desempenho e a funcionalidade do banco, tanto em nível de programação,
quanto em nível de persistência de objetos.
Segundo Ricarte (1998): “As necessidades dessas novas categorias de aplicações constituem
a maior motivação para o surgimento de novas abordagens para o gerenciamento de dados.”.
Ricarte apresenta em sua tese uma proposta de solucionar o problema de armazenamento de dados
multimídia e automação de escritório através da utilização de BDOO.
Borba e Morales (2006) apresentam uma proposta de modelagem de dados
multidimensional utilizando BDOO, os quais descrevem as vantagens na utilização de um banco de
dados puramente orientado a objeto. Segundo sua pesquisa, através da utilização do modelo de
dados OO, não é mais necessário reescrever a modelagem do sistema OO para o modelo MER, com
a finalidade de criar a base de dados, pois, com a utilização do BDOO, o modelo de dados passará a
ser o mesmo para o programa e para a base de dados (BORBA & MORALES, 2006).
Silva (2006) apresenta em sua tese, uma análise sobre o desempenho de BDOO na
recuperação de dados multimídia utilizando o Banco de Dados Objeto-Relacional (BDOR)
PostgreSQL. Ele demonstra que os resultados na utilização de objetos para armazenamento de
dados multimídia não foram satisfatórios, obtendo uma perda de performance e que a utilização de
OIDs apresentou o pior tempo de recuperação para os dados armazenados.
No presente trabalho foi elaborado um comparativo entre salvar dados multimídia em disco
e em banco de dados, sendo que foram utilizados dois tipos de banco de dados: Objeto-Relacional e
o Orientado a Objetos, com o intuito de avaliar a melhor formar de persistir dados multimídia em
2
termos de performance, facilidade no desenvolvimento e segurança da informação armazenada.
Para isso foi elaborada uma pesquisa sobre as ferramentas de SGBD disponíveis no mercado,
buscando melhor opção para utilização no desenvolvimento do sistema proposto, além de
considerar aspectos como: suporte a linguagens de programação conhecidas, interface gráfica,
documentação, desempenho, entre outros.
1.1 PROBLEMATIZAÇÃO
1.1.1 Formulação do Problema
Com o avanço das tecnologias de informação que permitem disponibilizar qualquer tipo de
dados nos computadores de forma digital e na Internet, pode-se acessar qualquer informação de
qualquer lugar. Tais informações (imagens, áudio ou vídeo) são consideradas Multimídias, não
apenas por serem digitais, mas por serem informações interativas.
Apesar do aumento da utilização da informação Multimídia, a forma de armazenamento e
recuperação desses dados continua sendo feita diretamente em disco físico, utilizando os bancos de
dados relacionais como forma de descrever e organizar esses, para que possam ser localizados no
arquivo físico, como forma de indexação.
Devido a esse avanço na utilização de sistemas de multimídia, os fornecedores de SGBDs
relacionais incrementaram suas ferramentas com suporte a objetos multimídia através de campos
grandes como Blobs. Mesmo com essa tecnologia, os BDOR não são os mais adequados para o
armazenamento de objetos. Muitas pesquisas apontam para a utilização de SGBDOOs para o
armazenamento e gerenciamento das informações Multimídia, sendo esse o alvo desta pesquisa.
1.1.2 Solução Proposta
Através da criação de um sistema Gerenciador de Documento Eletrônico (GED) essa
pesquisa buscou analisar o desempenho e funcionamento dos bancos de dados orientados a objetos
para o armazenamento e gerenciamento dos dados Multimídia. Essa ferramenta possibilitou a
gravação, recuperação e gerenciamento de documentos, textos e imagens através de uma interface
web conectada a um banco de dados.
3
1.2 OBJETIVOS
1.2.1 Objetivo Geral
O objetivo desse trabalho é investigar as funcionalidades dos Sistemas de BDOOs como
ferramenta para armazenamento e recuperação de dados Multimídia e avaliar soluções e recursos
disponíveis no mercado para este tipo de dado.
1.2.2 Objetivos Específicos
•
Analisar e investigar a arquitetura e funcionamentos dos BDOO;
•
Estudar a modelagem de dados em sistemas de DBOO;
•
Analisar as ferramentas disponíveis no mercado;
•
Pesquisar e analisar aplicações de multimídia;
•
Realizar a modelagem do protótipo da aplicação de armazenamento e recuperação de
dados multimídia;
•
Implementar um protótipo;
•
Testar e validar a implementação do protótipo;
•
Avaliar o desempenho e funcionalidade do BDOO aplicado a dados multimídia;
•
Analisar a funcionalidade e performance do sistema utilizando outro BDOO para
comparativo das ferramentas; e
•
Documentar a pesquisa e os resultados obtidos com a implementação do protótipo.
1.3 Metodologia
A metodologia utilizada na primeira fase desse projeto abrangeu quatro etapas. Na primeira
etapa realizou-se uma pesquisa e análise sobre dados Multimídia, BDOO e BDOR. Nas duas etapas
seguintes, foi realizada a uma pesquisa e análise sobre ferramentas de bancos de dados disponíveis
no mercado. Na última etapa foi realizada a modelagem da ferramenta GED que servirá para a
análise da performance dos bancos de dados selecionados.
4
1.4 Estrutura do trabalho
Esse trabalho está estruturado em quatro capítulos: Introdução, Fundamentação Teórica,
Projeto e Considerações Finais.
O Capítulo 1, Introdução, apresenta uma visão geral do projeto, onde é possível ter uma
visão geral da pesquisa realizada e dos objetivos que se desejam alcançar.
No Capítulo 2, Fundamentação Teórica, é apresentada uma revisão bibliográfica sobre os
assuntos envolvidos no projeto: Dados Multimídia, GED, BDOR e BDOO e ferramentas de bancos
de dados disponíveis no mercado selecionadas para o projeto.
O Capítulo 3, Desenvolvimento, explica como a ferramenta de GEDOO foi desenvolvida e
suas características e também apresenta a análise dos resultados obtidos.
O Capítulo 4, Conclusão, finaliza o trabalho apresentando as conclusões finais, bem como as
sugestões de trabalhos futuros.
5
2 FUNDAMENTAÇÃO TEÓRICA
Este capítulo apresenta um estudo elaborado através de livros, artigos, internet e revistas,
sobre o tema abordado no projeto, e algumas ferramentas de Sistemas Gerenciadores de Banco de
Dados Orientado a Objetos (SGBDOO) e Sistemas Gerenciadores de Banco de Dados ObjetoRelacional (SGBDOR) estudadas. Com o intuito de aperfeiçoar o conhecimento sobre o assunto,
dando assim, uma base melhor para a elaboração dos requisitos do protótipo do sistema que será
desenvolvido e auxiliando na obtenção dos resultados desejados.
2.1 Dados Multimídia
Segundo Silva (2006), multimídia compreende os vários tipos de mídias existente tais como
imagens, sons, vídeos, textos e hiperlinks . Ele classifica a multimídia nas seguintes categorias:
•
Mídia de Percepção: É o formato das informações que são apresentas aos usuários.
A imagem, o som e o texto são exemplos desse tipo de mídia. Elas são classificadas
em contínuas e não contínuas. As contínuas são dependentes do tempo. O som e o
vídeo são classificados como contínuas. As mídias não contínuas independem do
tempo. A imagem é classificada como uma mídia de percepção não contínua;
•
Mídia de Representação: É referente à forma como os dados são armazenados. A
mídia de percepção imagem pode ser representada nos formatos GIF, JPEG, BMP,
entre outros;
•
Mídia de Apresentação: Representa a forma como as mídias serão apresentadas aos
usuários como monitores, caixas de som e impressoras, os quais promovem a saída
de dados e informação, e os teclados, mouse e scanners, que promovem a entrada de
dados, são mídias de apresentação;
•
Mídia de Armazenamento: Compreende os dispositivos que armazenam dos dados
multimídia como discos rígidos, CD’s e DVD’s;
•
Mídia de Transmissão: Referente à forma como os dados são transmitidos a outros
usuários. As redes de computadores são consideradas mídias de transmissão.
Silva (2006) classifica como os principais tipos de dados multimídia os seguintes itens:
•
Texto: Essa mídia é formada por cadeia de caracteres, sendo umas das mídias mais
utilizadas. Pode servir também como indexador para outros tipos de mídias na forma
de metadados;
•
Imagem: São desenhos ou fotografias digitalizadas em um formato de bitmap ou um
formato compactado como JPG. O formato compactado utiliza técnicas matemáticas
para diminuir o tamanho da imagem sem perder a sua resolução;
•
Vídeo: São formados por conjuntos de imagens disponibilizados em um espaço
temporal. Cada imagem do conjunto é conhecida como frame, que são imagens
estáticas. Na execução do vídeo, os frames são exibidos em um intervalo de tempo
fixo, o que define a qualidade do vídeo. Quanto mais frames por segundo, melhor
será sua qualidade;
•
Áudio: É composto por gravações de sinais sonoros captados através de microfones.
Esses sinais podem sem enviados para os computadores, onde são convertidos em
uma cadeia de bits, formando assim o áudio digital.
2.2 Armazenamento e Recuperação de dados Multimídia
Os bancos de dados Multimídia compreendem o armazenamento e consulta de tipos
diferentes de informação como imagens, vídeos, gravações ou documentos (ELMASRI &
NAVATHE, 2005).
Para consultar esses objetos, é necessário utilizar técnicas de recuperação baseada em
conteúdo, porque a fonte multimídia está sendo recuperada com base em certo objeto ou
característica. Para isso, é necessário utilizar algum modelo para organizar e indexar as fontes
multimídias segundo seus conteúdos (ELMASRI & NAVATHE, 2005).
A identificação dos conteúdos de fontes é considerada uma tarefa difícil e demorada. Neste
sentido, segundo Elmasri e Navathe (2005), há duas abordagens principais:
•
Através das características matemáticas de seus conteúdos é feito a análise
automática das fontes multimídia para consultar um objeto. Essa abordagem emprega
diferentes técnicas que dependem do tipo da fonte multimídia (imagem, texto, vídeo
ou áudio); e
7
•
Utilização de metadados, onde é feito a identificação manual dos objetos e suas
características em cada fonte multimídia, utilizando essa informação para indexar os
objetos. Essa técnica pode ser aplicada a todos os diferentes tipos de multimídias,
porém, é necessário que uma pessoa examine cada fonte multimídia para identificar e
catalogar os objetos e suas características, dessa forma esses metadados poderão ser
utilizados para indexação dos objetos.
Para Elmasri e Navathe (2005), o armazenamento de dados multimídia em dispositivos
físicos apresenta problemas de representação, compressão, mapeamento de hierarquias de
dispositivos, arquivamento e buffering durante as operações de entrada e saída.
A recuperação de informações em banco de dados está baseada em linguagens de consulta e
em estruturas internas de índices. As consultas ao banco de dados utilizam estes índices para
recuperação das informações. Para os dados multimídia, isso representa um problema quanto à
formulação eficiente de consultas, sua execução e otimização. O problema de indexação não é tão
agravante quando se trata de apenas documentos e textos, porém, para aplicações que envolvem
reprodução de vídeo ou sincronização de áudio e vídeo, as limitações físicas predominam
(ELMASRI & NAVATHE, 2005).
Para sistemas de armazenamento de documentos e textos como sistemas de bibliotecas ou
sistemas de GED, é fundamental uma eficiente recuperação de textos. Elmasri e Navathe (2005)
demonstram as seguintes técnicas utilizadas para recuperação de documentos e textos:
•
Indexação de frase: Utiliza descritores de frase – múltiplas palavras (em vez de
termos de índice de palavra única) são atribuídas aos documentos e usadas nas
consultas;
•
Uso de Thesaurus (dicionário ou enciclopédia): Serve para expandir o vocabulário
de consultas utilizado para indexar os documentos;
•
Resolução de Ambigüidade: Uma das razões para a baixa precisão em sistemas de
recuperação de informação de texto é que as palavras possuem múltiplos
significados. Para isso é necessário analisar o contexto que a palavra está inserida
através do uso de dicionários e ontologias.
8
Para a indexação de imagens podem ser utilizadas técnicas de processamento de imagens ou
metadados associados às imagens. A técnica de processamento de imagem requer um grande
processamento e tempo para localizar uma imagem, o que limita sua utilização a padrões de busca
simples.
Segundo Silva (2006), os sistemas orientados a objetos são a alternativa de armazenamento
mais adequada. Porém, as mídias contínuas ainda permanecem com o problema da falta de
gerenciamento de acesso em tempo real.
Na Figura 1, Silva (2006) apresenta um quadro comparativo entre as formas de
armazenamento de dados Multimídia disponíveis atualmente, onde pode-se perceber que a forma
mais adequada de armazenamento são os SGBDOO, porém limitando o acesso em tempo real aos
dados.
Figura 1. Comparativo de formas de armazenamento.
Fonte: Silva (2006).
2.3 Gerenciamento Eletrônico de Documentos
Os documentos são um elemento fundamental em todas as organizações, por registrarem
informações, decisões e atividades por elas executadas (SADIQ, 1997 apud FANTINI, 2001).
Segundo Fantini (2001), um documento é um conjunto de informações que agrega dados
estruturados, semi-estruturados e não-estruturados e que representam o conhecimento produzido ao
longo de um processo da organização.
9
A fim de cumprir normas impostas para a certificação de qualidade ISO 9001, muitas
empresas passaram a adotar sistemas de gerenciamento eletrônico de documentos, pois estes
permitem ter um total controle sobre os principais documentos e processos da empresa, além de
possibilitar o controle de versões e cópias controladas (FANTINI, 2001).
Os sistemas de GED buscam preservar as características visuais e espaciais, e a aparência do
documento original em papel. Estes sistemas gerenciam toda a vida das informações desde sua
criação até o arquivamento, e suas várias versões, além de sua localização física e digital
(FANTINI, 2001).
Fantini (2001) afirma ainda que os sistemas de GED são a melhor forma de tornar
documentos disponíveis de forma eficiente para os usuários, permitindo sua recuperação e
armazenamento seguro. A localização dos documentos é feita através da atribuição de múltiplos
índices eletrônicos que permitem a recuperação mais rápida dos dados.
2.4 Banco de Dados Objeto-Relacional
Os Bancos de Dados surgiram a partir da necessidade de armazenar uma grande quantidade
de dados de forma permanente e de fácil acesso, junto com a possibilidade de armazenar esses
dados em um computador. Os bancos de dados tiveram surgimento a partir dos anos 60 com a
difusão dos meios magnéticos. A partir da existência dos bancos de dados surgiram os SGBDs que
fornecem um conjunto de ferramentas para acesso e manipulação dos bancos de dados (NASSU &
SETZER, 1999).
Os sistemas de bancos de dados são projetados para gerenciar grandes blocos de dados, isto
envolve desde a definição de suas estruturas aos mecanismos para manipulação destas estruturas.
(SILBERSCHATZ; KORTH & SUDARSHAN, 2006).
As estruturas de um banco de dados são descritas através de Modelos de Dados, que são
constituídos por uma coleção de ferramentas para descrever dados, suas relações, semântica dos
dados e restrições de consistência (SILBERSCHATZ; KORTH & SUDARSHAN, 2006).
Segundo Edelweiss e Galante (2005), com o surgimento do modelo de dados orientado a
objetos, havia uma expectativa de que estes dominariam o mercado, porém, não houve grandes
avanços de ferramentas de SGBDs. Com isso, os bancos relacionais continuaram a dominar o
10
mercado, onde sofreram variações para atender as novas necessidades de suporte a tipos dados
complexos.
Os bancos de dados relacionais passaram a incorporar os conceitos de orientação a objeto,
unindo os recursos avançados de orientação a objeto com a alta performance e eficiência dos bancos
de dados relacionais (EDELWEISS & GALANTE, 2005).
A SQL (Structured Query Language) foi criada nos anos 70 e passou por melhorias em 1989
e 1992. A linguagem continuou sua evolução até um novo padrão denominado SQL3, o qual
acrescentou a orientação a objetos além de outras características, sendo essa versão conhecida como
SQL99 (ELMASRI & NAVATHE, 2005).
A seguir são apresentados alguns conceitos de modelo de dados, BDOR, suas principais
características, SQL99 e armazenamento de dados em BDOR.
2.4.1 Modelo Relacional (MR)
O Modelo Relacional (MR) utiliza um conjunto de tabelas para representar os dados e as
relações entre eles. Ele é baseado em registros onde cada tabela possui colunas identificadas por um
nome único e formatos fixos. Cada tabela contém registros de um tipo específico, onde estes
definem um número fixo de campos ou atributos (SILBERSCHATZ; KORTH & SUDARSHAN,
2006).
Segundo Silberschatz; Korth e Sudarshan (2006), existe uma correspondência entre o
conceito de tabela e o conceito matemático de relação, de onde vem o nome de modelo de dados
relacional. Neste modelo de dados, cada coluna representa um atributo, o qual possui um domínio.
O domínio representa um conjunto de valores aceitos para cada tipo de atributo da tabela. No MR a
relação do conjunto de dados é representada por um produto cartesiano de uma lista de domínios
(SILBERSCHATZ; KORTH & SUDARSHAN, 2006).
Na Figura 2 é apresentado um exemplo de modelo de dados relacional.
11
Figura 2. Exemplo de modelo de dados relacional.
Fonte: Adaptado de Silberschatz; Korth e Sudarshan (2006).
2.4.2 Modelo de Entidade/Relacionamento (MER)
O Modelo Entidade-Relacionamento (MER) é baseado nos objetos do mundo real e suas
relações, onde os objetos são representados por entidades e suas relações. Ele é muito utilizado para
mapear processos em uma empresa, empregando três noções básicas: conjunto de entidades,
conjunto de relacionamentos e atributos (SILBERSCHATZ; KORTH & SUDARSHAN, 2006). A
seguir é apresentado o conceito de cada conjunto desses.
Uma entidade é a representação de um ser do mundo real distinto de todos os outros seres
existentes. Cada entidade possui um conjunto de propriedades, e os valores para algum conjunto de
propriedades podem as identificar de maneira única. Estas podem ser classificadas como concretas
ou abstratas. Um conjunto de entidades é formado por entidades do mesmo tipo e com as mesmas
propriedades, sendo representada por um conjunto de atributos (SILBERSCHATZ; KORTH &
SUDARSHAN, 2006).
Atributos são representações das características das entidades. Cada entidade possui um
valor para cada um de seus atributos. Para cada atributo existe um conjunto de valores permitidos,
chamado de domínio, ou o conjunto de valores desse atributo. Os atributos podem ser simples ou
compostos e possuir um valor único ou múltiplos valores (SILBERSCHATZ; KORTH &
SUDARSHAN, 2006).
Um relacionamento é uma associação entre várias entidades, onde relacionamentos do
mesmo tipo constituem um conjunto de relacionamentos. A associação entre conjuntos de entidades
12
é denominada participação. Em um diagrama MER, os relacionamentos representam a associação
que existe entre os seres reais que estão sendo modelados.
Na Figura 3 é apresentado um exemplo de modelo de dados entidade/relacionamento:
Figura 3. Exemplo de modelo de dados entidade/relacionamento.
Fonte: Adaptado de Silberschatz; Korth e Sudarshan (2006).
Com o avanço tecnológico, surgiu a necessidade de armazenar tipos de dados não
suportados pelos modelos de dados tradicionais. Essa necessidade impulsionou a criação de
modelos de dados voltados a objetos, que adquiriu mais força com o avanço das linguagens de
programação orientada a objetos (ELMASRI & NAVATHE 2005).
Segundo Ramakrishnan (2003 apud EDELWEISS & GALANTE, 2005) os sistemas
orientados a objetos podem ser abordados de duas formas: SGBDOs e SGBDROs.
2.4.3 Modelo de dados EER - ER Estendido
Funciona como uma extensão do MER com noções de encapsulamento, métodos e
identidade de objeto (SILBERSCHATZ; KORTH & SUDARSHAN, 2006).
A
modelagem
de
dados
baseados
em
objetos
é
também
conhecida
como
Entidade/Relacionamento Estendido (EER). A modelagem EER une os conceitos da modelagem ER
com as definições da UML (Universal Modeling Language). A modelagem do banco passa a ser
feita da mesma forma que a aplicação é projetada, englobando conceitos de classe, herança,
polimorfismo e especialização (ELMASRI & NAVATHE 2005).
Na Figura 4 é apresentado um exemplo de modelo de dados EER.
13
Figura 4. Exemplo de modelo de dados EER.
Fonte: Adaptado de Elmasri e Navathe (2005).
O modelo de dados relacional-objeto possui todas as características de um modelo orientado
a objetos, porém, fisicamente sua implementação é feita através de tabelas, ou seja, como um
modelo relacional. A semântica da aplicação é modelada e representada através de objetos,
enquanto sua implementação física é feita na forma relacional (EDELWEISS & GALANTE, 2005).
2.4.3.1
SQL99 com suporte a OO
Foram adicionados vários recursos ao padrão SQL para que este dê suporte aos BDROs.
Entre esses inclui-se o tipo row (linha), conceito conhecido como relações aninhadas. Também é
fornecido um tipo array (vetor) para representar coleções. A SQL99 inclui um mecanismo para
especificar identidade de objetos por meio do uso de tipo referência. O encapsulamento de
operações é possível por mecanismos de tipos definidos pelo usuário que podem incluir operações
como parte de suas declarações, além de serem disponibilizados mecanismos de herança
(ELMASRI & NAVATHE 2005).
2.4.3.2
Relações Aninhadas
Para os bancos de dados relacionais os atributos são constituídos por unidades indivisíveis,
onde dizemos que seus domínios são atômicos (ELMASRI & NAVATHE 2005).
14
Para armazenar dados que representem a realidade de uma forma mais natural, estes
precisam ser armazenados como um conjunto de objetos, pois não é possível representar um
determinado objeto do mundo real através de somente um registro, sendo necessários vários
registros para sua representação, dessa forma dando ao usuário acesso a este banco de dados através
dos objetos, sem tomar conhecimento de sua implementação física (EDELWEISS & GALANTE,
2005).
Através da SQL99, esse comportamento é tratado através de construtores de tipos de dados
definidos pelos usuários como os rows e arrays (ELMASRI & NAVATHE, 2005).
Na Figura 5 é apresentada a sintaxe para definição de um tipo de dado row.
Figura 5. Sintaxe para definição de tipos.
Fonte: Adaptado de Elmasri e Navathe (2005).
2.4.3.3
Identificadores de Objetos e Referências
No modelo objeto-relacional, um atributo pode referenciar diretamente um outro objeto. O
domínio deste tipo de atributo consiste em um ponteiro lógico para um objeto de um determinado
tipo. Desta forma são modelados relacionamentos de associação entre objetos. Somente pode ser
referenciada uma tabela que tenha definido um OID (EDELWEISS & GALANTE, 2005).
Segundo Elmasri e Navathe (2005) os OIDs são códigos únicos para cada objeto,
controlados pelo banco de dados, estes não são visíveis aos usuários, podendo ser gerados pelo
banco de dados (SYSTEM GENERATED) ou pelo usuário (USER GENERATED). Eles são
criados através do uso da sintaxe apresentado na Figura 6.
Figura 6. Sintaxe para geração de OIDs.
Fonte: Adaptado de Elmasri e Navathe (2005).
15
Em um BDOR, o identificador de um objeto é o valor indicado pelos atributos de referência.
Pode ser definido pelo usuário ou pelo sistema, e constituir uma chave primária (EDELWEISS &
GALANTE, 2005).
Um atributo componente de uma tupla pode ser uma referência a uma tupla de outra tabela
ou até mesmo à mesma tabela (ELMASRI & NAVATHE, 2005). Na Figura 7 é apresentado um
exemplo de uso de referência entre tabelas.
Figura 7. Exemplo do uso de referência entre tabelas.
Fonte: Adaptado de Edelweiss e Galante (2005).
A utilização de referências não se assemelha a uma chave estrangeira – chaves estrangeiras
podem ser compostas. O modelo objeto-relacional não permite a definição de chaves estrangeiras
(EDELWEISS & GALANTE, 2005).
Para referenciar um mesmo tipo para mais de uma tabela, é necessário identificar de qual a
tabela que se quer referenciar, ou seja, é necessária a definição do escopo da referência. Para isso é
utilizada a cláusula "scope" no momento da definição de uma tabela com o tipo que contém algum
atributo do tipo referência. Esta cláusula somente é necessária no caso de existirem duas ou mais
tabelas do tipo referenciado (EDELWEISS & GALANTE, 2005).
A manipulação de tabelas que contém atributos do tipo referência deve ser feita acessando
diretamente os objetos referenciados. Para se obter a linha apontada por uma referência é usado o
apontador de referência “” (EDELWEISS & GALANTE, 2005).
2.4.3.4
Encapsulamento
O modelo objeto-relacional permite ao usuário a definição de funções e procedimentos para
representar os métodos dos objetos. A SQL99 fornece uma estrutura semelhante à definição de
classes para a manipulação de código de programa através de três formas diferentes: métodos,
funções e procedimentos (EDELWEISS & GALANTE, 2005).
16
Segundo Elmasri e Navathe (2005), um tipo de dado definido pelo usuário pode possuir
métodos também definidos pelo usuário. Na Figura 8 é apresentada a sintaxe para definição de um
método em um determinado tipo de dado.
Figura 8. Sintaxe para definição de métodos para um tipo de dado.
Fonte: Adaptado de Elmasri e Navathe (2005).
O método será implementado separadamente. Este pode ser de dois tipos: interno ou externo
à SQL. As funções internas são escritas utilizando a própria SQL, já as funções externas são escritas
em uma linguagem hospedeira, onde somente sua estrutura aparece na definição do tipo de dado
(ELMASRI & NAVATHE, 2005) que pode ser visualizado na Figura 9.
Figura 9. Sintaxe da definição de método Externo.
Fonte: Adaptado de Elmasri e Navathe (2005).
Em alguns SGBDORs é possível definir um pacote (package) de Tipos Abstratos de Dados
(TAD). Estes funcionam como bibliotecas para implementações e são comprados separadamente
dos SGBDORs (ELMASRI & NAVATHE, 2005).
2.4.3.5
Herança
Para a orientação a objetos é indispensável a utilização de conceitos de herança. O modelo
objeto-relacional suporta somente herança simples, não contemplando a herança múltipla. Na
SQL99 a herança é representada através da cláusula UNDER. Ela está presente no nível dos tipos e
no das classes (EDELWEISS & GALANTE, 2005).
A herança de tipos é representada através de relacionamentos supertipo/subtipo, onde a
ordem dos supertipos na cláusula UNDER determina a hierarquia de herança (ELMASRI &
NAVATHE, 2005). A sintaxe do comando é apresentada na Figura 10.
17
Figura 10. Sintaxe para o uso da Herança de tipos.
Fonte: Adaptado de Elmasri e Navathe (2005).
O supertipo identifica os atributos da classe herdada e o subtipo identifica os atributos da
subclasse criada. Na herança de tipos, todos os atributos são herdados e uma instância de um
subtipo pode ser utilizada em todos os contextos em que é utilizada uma instância do supertipo
(ELMASRI & NAVATHE, 2005).
A sobrecarga de funções também é implementada nos BDOR, onde um subtipo pode
redefinir qualquer função que é definida em seu supertipo, com a restrição de que a assinatura deve
ser a mesma. Assim, quando uma função é chamada, a melhor combinação é selecionada com base
nos tipos de todos os argumentos (ELMASRI & NAVATHE, 2005).
A herança de classes é representada pela herança entre tabelas, ou seja, a definição de
subtabelas/supertabelas. Uma subtabela herda todas as colunas de sua supertabela e toda linha de
uma subtabela corresponde a uma, e somente uma, linha na supertabela, cada linha de uma
supertabela corresponde a pelo menos uma linha em uma subtabela (ELMASRI & NAVATHE,
2005).
Para aumentar a eficiência do banco de dados, podem ser implementados diferentes formas
de armazenamento. A forma natural é a de armazenar os atributos comuns, herdados pelas
subtabelas, somente na tabela da superclasse. Nas subclasses são armazenados somente os atributos
específicos de cada uma delas. Entretanto, para melhorar a eficiência, podem ser replicados os
atributos herdados nas subclasses, facilitando desta forma as consultas, pois todos os atributos da
subclasse seriam encontrados na mesma (tanto os herdados como os específicos) (EDELWEISS &
GALANTE, 2005).
2.4.3.6
Objetos Complexos em SQL
O suporte ao armazenamento de dados grandes, como imagens e arquivos de textos,
atendendo aplicações como de multimídia, requerem que grandes objetos complexos possam ser
utilizados na modelagem. Isto é atendido pelo modelo objeto-relacional ao permitir a definição de
objetos longos. Estes são tratados como um único objeto, sendo representados diretamente no banco
18
de dados, integrados aos outros dados, e não em arquivos separados (EDELWEISS & GALANTE,
2005).
A SQL possui tipos de dados para objetos grandes conhecidos como LOBs (large objects
binary) e para localizadores de objetos longos. Existem duas variações, os objetos binários longos
ou BLOBs (binary large objects binary) e os objetos de texto longo ou CLOBs (character large
objects binary). A SQL99 propõe a manipulação de LOBs internamente ao SGBD sem ter de
utilizar arquivos externos. Alguns operadores não são aplicáveis a atributos valorados-LOBs – por
exemplo, comparações aritméticas, group by ou order by. Entretanto, a recuperação parcial do
valor, a comparação (Like), a concatenação, a subcadeia, a posição e o tamanho são operações que
podem ser aplicadas a LOBs (ELMASRI & NAVATHE, 2005).
2.5 Bancos de Dados Orientados a Objetos
Um Banco de Dados Orientado a Objetos (BDOO) é um sistema em que a unidade de
armazenamento é o objeto, incorporando todos os conceitos das linguagens de programação
orientadas a objeto, onde a diferença está na persistência dos objetos, os quais continuam a existir
mesmo após o encerramento do programa (NASSU & SETZER, 1999).
Os BDOOs têm sido desenvolvidos para aplicações dinâmicas que manuseiam objetos
estruturados grandes e complexos, os quais apresentam modificações tanto no seu valor quanto em
sua estrutura. A necessidade de características adicionais na modelagem dos dados voltados a
orientação a objetos, que são incorporadas aos BDORs, também apontam para a crescente demanda
por sistemas que suportem tipos de dados complexos (ELMASRI & NAVATHE, 2005).
O crescente uso de linguagens de programação orientadas a objetos também impulsionam a
criação e utilização dos BDOOs devido ao fato de que os BDOOs são projetados para integrar
diretamente software desenvolvido em linguagem de programação orientada a objetos (ELMASRI
& NAVATHE, 2005).
À medida que os SGBDOOs tornaram-se disponíveis, sentiu-se a necessidade de um modelo
e uma linguagem padrão. Um consórcio de fornecedores e usuários de SGBDOOs, denominado
ODMG (Object Database Management Group) propôs um padrão conhecido como ODMG-93
(ELMASRI & NAVATHE, 2005).
19
A seguir são apresentados os conceitos do modelo de dados orientado a objetos e os padrões
para a modelagem dos dados através do padrão ODMG.
2.5.1 Modelo de Dados Orientado a Objetos
Um modelo de dados orientado a objetos é um conjunto de conceitos para modelagem de
dados que se assemelha ao funcionamento do mundo real. A modelagem de dados para BDOO pode
ser feita utilizando conceitos da UML (ELMASRI & NAVATHE, 2005).
Seu modelo permite o uso de atributos multi-valorados conhecidos como sets (conjuntos) ou
bags (multi-conjuntos). Esta propriedade é essencial para a representação de relacionamentos do
tipo “muito” em banco de dados puramente OO (HARRINGTON, 2000). Para criar um
relacionamento um-para-muitos, por exemplo, deve-se definir um atributo na classe destino do
relacionamento (muitos) do tipo set que conterá os OIDs das classes de origem (um)
(HARRINGTON, 2000).
Os relacionamentos muitos-para-muitos são diretamente representados através dos atributos
do tipo bag que são multi-valorados. Para representá-los, pode ser criado um atributo em cada
classe que faz parte do relacionamento para armazenar os OIDs das outras classes relacionadas,
porém, pode acarretar na perda de informação. O meio mais abrangente e elegante é representar o
relacionamento muitos-para-muitos através da criação de uma terceira classe que conectará os
objetos relacionados através de tipos de dados bag, armazenando os OIDs dos objetos relacionados
(HARRINGTON, 2000).
A seguir são apresentados os principais conceitos envolvidos na modelagem dos dados nos
BDOOs.
2.5.1.1
Identidade do Objeto
Os sistemas de BDOO oferecem um identificador de objeto único conhecido como OID
(Object Identifier) para cada objeto armazenado. Esse OID é gerado pelo sistema e seu valor não é
visível pelo usuário externo. O valor do OID jamais é alterado no banco de dados OO e não pode
ser atribuído a outro objeto, garantindo assim uma identidade única para cada objeto (ELMASRI &
NAVATHE, 2005).
20
No início da utilização do modelo de dados OO criava-se um OID para cada valor existente
no banco, dando a possibilidade de dois objetos distintos utilizarem o mesmo valor para fins
diferentes. Percebeu-se que esse modelo não era muito prático pelo número de OIDs gerados no
sistema, então adaptou-se o modelo onde cada objeto possui um OID e seus valores, e estes valores
não podem ser utilizados por outro objeto (ELMASRI & NAVATHE, 2005).
O OID é a propriedade que o objeto tem que o distingue dos demais, sendo a base para a
implementação de referências entre objetos, pois nos BDOOs não existe a entidade relacionamento
como nos bancos de dados relacionais (HARRINGTON, 2000). Na Figura 11 é apresentado um
modelo de dados que representa o relacionamento entre objetos criado pela referência a os OIDs de
outros objetos.
Figura 11. Utilizando OIDs para representar os relacionamentos.
Fonte: Adaptado de Harrington (2000).
O valor de um OID, além de ser gerado pelo próprio banco de dados, também pode assumir
um valor relacionado com sua localização física no arquivo do banco de dados, como o número da
página e um ponteiro para o início da página do arquivo no qual o objeto está armazenado
(HARRINGTON, 2000).
21
Esta técnica de armazenar informações da localização física do objeto em seu OID é
utilizada por alguns sistemas para melhorar a performance na recuperação dos dados. Nesse caso, se
o endereço físico do objeto for alterado, é referenciado o novo endereço do objeto no endereço
antigo através do uso de ponteiros (ELMASRI & NAVATHE, 2005).
2.5.1.2
Estrutura do Objeto
Um objeto em um banco de dados OO é constituído de três atributos (i,c,v), onde i é o OID
do objeto, c representa o construtor do objeto onde é definido o seu tipo, e v é o valor atual do
objeto. Os construtores podem ser dos seguintes tipos: atom (atômico), tuple (tupla), set (conjunto),
list (lista), bag (multi-conjunto) e array (vetor) (ELMASRI & NAVATHE, 2005).
Os atoms representam valores básicos como inteiros, números reais, cadeias de caracteres,
etc. (ELMASRI & NAVATHE, 2005). Na Figura 12 é apresentado um modelo de objeto do tipo
atom.
Figura 12. Modelo de objeto do tipo atom.
Fonte: Adaptado de Elmasri e Navathe (2005).
O tuple corresponde a um Struct da programação OO, sendo considerado um tipo
estruturado. O tuple é uma estrutura de dois componentes: o nome de uma variável e o OID do
objeto que representa essa variável (ELMASRI & NAVATHE, 2005), sendo apresentado um
exemplo de sua construção na Figura 13.
Figura 13. Modelo de objeto do tipo tuple.
Fonte: Adaptado de Elmasri e Navathe (2005).
Os tipos array, list, set e bag são tipos de coleções que armazenam um conjunto de OIDs
que referenciam outros objetos. Os arrays representam um vetor que armazena OIDs de outros
22
objetos, enquanto que o list armazena uma lista ordenada de OIDs. A diferença entre array e list é
que uma lista pode conter um número não definido de elementos, enquanto em um array é definido
o tamanho máximo (ELMASRI & NAVATHE, 2005).
O set funciona semelhante ao array e list, ele armazena um conjunto de OIDs que possuem
o mesmo tipo. O bag possui o mesmo princípio, porém, todos os elementos de um set devem ser
distintos, enquanto em um bag os elementos podem estar duplicados (ELMASRI & NAVATHE,
2005). Na Figura 14 é apresentado um modelo de estrutura do tipo set.
Figura 14. Modelo de objeto do tipo set.
Fonte: Adaptado de Elmasri e Navathe (2005).
2.5.1.3
Objetos Complexos
Estruturas de objetos constituídos por outros objetos são considerados objetos complexos. O
relacionamento de um objeto complexo e seus objetos constituintes pode ser de duas formas. Ele
pode utilizar a semântica de propriedade, onde os subobjetos de um objeto complexo são
encapsulados dentro de um objeto complexo, sendo considerados como parte do objeto complexo,
ou eles podem utilizar a semântica de referência, onde os componentes do objeto complexo são
objetos independentes, mas podem ser referenciados a partir do objeto complexo (ELMASRI &
NAVATHE, 2005).
2.5.1.4
Versões de Objetos
Os BDOOs oferecem recursos para manter várias versões de um mesmo objeto com a
finalidade de facilitar a revisão e fusão de alterações em objetos. Com este recurso é possível que
dois usuários façam alterações em um determinado objeto ao mesmo tempo, cada um irá gerar uma
versão nova. Quando o banco de dados unir essas versões, irá criar uma terceira versão com o
resultado das alterações que poderá ser revisado sem perder as versões antigas (ELMASRI &
NAVATHE, 2005).
23
2.5.1.5
Classes
Uma classe define um modelo de estrutura de um grupo de objetos com comportamento e
atributos semelhantes. Através do uso de classes pode-se definir um padrão de estrutura que pode
ser utilizado para criar novos objetos do mesmo tipo. Estes possuem os mesmos métodos e
atributos, porém com valores distintos (HARRINGTON, 2000).
Segundo Harrington (2000) uma classe pode ser de três tipos:
•
Classes de controle: são classes utilizadas para o controle operacional dos
programas. Os objetos criados a partir de uma classe de controle são responsáveis
por gerenciar a execução dos aplicativos, chamando os processos internos do
aplicativo de acordo com a interação dos usuários com o sistema e enviando as
resposta para a interface da execução dos processos internos;
•
Classes de Entidade: as classes de entidade são responsáveis pelos dados
armazenados. Elas representam as entidades do mundo real e seus relacionamentos; e
•
Classes de Interface: controlam as entradas e saídas do aplicativo. Os objetos
criados para interface com o usuário ou outros aplicativos são da classe de Interface.
2.5.1.6
Encapsulamento
Assim como nas Linguagens de Programação Orientada a Objetos (LPOO), o
encapsulamento através do uso de métodos e funções faz parte da modelagem e implementação dos
objetos do BDOO.
A estrutura de um objeto é dividida em atributos visíveis e ocultos. Os atributos visíveis
podem ser acessados por mecanismos externos, enquanto os atributos ocultos somente podem ser
acessados através do uso dos métodos do objeto (ELMASRI & NAVATHE, 2005).
Nos BDOOs uma classe é constituída da definição do tipo do objeto e seus métodos. A
assinatura dos métodos é definida na classe do objeto enquanto que a implementação é definida em
outro local utilizando uma linguagem de programação OO. O objetivo é definir o comportamento
de um tipo de objeto com base nas operações que podem ser externamente aplicadas aos objetos
daquele tipo, tornando assim a estrutura interna do objeto protegida, sendo que seus atributos
ocultos serão acessados somente através do uso de seus métodos (ELMASRI & NAVATHE, 2005).
24
Os usuários externos de um objeto conhecem apenas a interface do tipo do objeto, onde é
definido o nome e os parâmetros de cada operação. A interface de cada operação é chamada de
assinatura, e sua implementação, de método. Um método é invocado pela passagem de uma
mensagem ao objeto para que seja executado o método correspondente (ELMASRI & NAVATHE,
2005).
Na Figura 15 é apresentada a sintaxe para criação da assinatura na classe.
Figura 15. Sintaxe para assinatura de uma classe.
Fonte: Adaptado de Harrington (2000).
Os parâmetros podem ser de três tipos: entrada, saída ou entrada e saída ao mesmo tempo,
devendo ser utilizados os comandos in, out e inout antes da definição dos parâmetros
(HARRINGTON, 2000).
2.5.1.7
Persistência
Quando um objeto é criado em um banco de dados, ele pode ser persistente, onde continuará
existindo após a execução de um programa, ou transiente, onde ele deixa de existir ao término da
execução de um programa (ELMASRI & NAVATHE, 2005). Um objeto pode ser persistente de
duas formas:
Nomeação: nesse mecanismo de persistência, o objeto recebe um nome de persistência único pelo
qual poderá ser recuperado pelos programas que o utilizam (ELMASRI & NAVATHE, 2005). A
sintaxe dessa definição pode ser observada na Figura 16.
Figura 16. Persistência de um objeto pelo mecanismo de nomeação.
Fonte: Adaptado de Elmasri e Navathe (2005).
Nesse exemplo foi criado um objeto persistente nomeado TodosDepartamentos do tipo
Conjunto_de_departamentos que nesse exemplo trata-se de uma classe.
25
Alcançabilidade: por não ser viável nomear todos os objetos em um banco de dados de modo que
sejam persistentes, é utilizado o recurso da alcançabilidade para que determinados objetos se tornem
persistentes a partir de outros objetos nomeados, sendo alcançáveis através destes (ELMASRI &
NAVATHE, 2005). Na Figura 17 é apresentado um exemplo de persistência através da
alcançabilidade onde um objeto B se tornará persistente através do objeto TodosDepartamentos
definido anteriormente.
Figura 17. Persistência de um objeto pelo mecanismo de alcançabilidade.
Fonte: Adaptado de Elmasri e Navathe (2005).
2.5.1.8
Herança
A herança é um mecanismo da OO que permite reutilizar classes e otimizar a modelagem
dos dados. Ela pode representar uma generalização no caso das classes pai e uma especialização no
caso das classes filhas. A classe pai possuirá os atributos e funções comuns a vários tipos de objetos
e as classes filhas herdarão desta classe esses atributos acrescentando seus atributos específicos, o
que caracteriza a especialização (ELMASRI & NAVATHE, 2005).
A classe de onde se está herdando as definições é conhecida como superclasse, e a classe
que está herdando estas definições é a subclasse. Nos BDOOs a herança pode ser de duas formas:
herança múltipla, onde uma classe possui várias superclasses, e herança simples, quando possui
apenas uma superclasse (EDELWEISS & GALANTE, 2005).
2.5.1.9
Polimorfismo
Os BDOO dão suporte ao polimorfismo das operações, conhecido também como sobrecarga
de operadores. Essa característica permite que métodos definidos na superclasse possam ser
reescritos pelas subclasses utilizando a mesma assinatura da superclasse (ELMASRI & NAVATHE,
2005).
26
2.5.2 Object Database Management Group (ODMG)
O ODMG é um consórcio de fornecedores de SGBDs que uniram-se para definir um padrão
para os bancos de dados OO que hoje é aceito internacionalmente. A versão mais recente deste
padrão é a ODMG 3.0 (ELMASRI & NAVATHE, 2005). Os principais componentes deste padrão
são:
•
Modelos de objetos ODMG;
•
Linguagem de definição de objetos (Object Definition Language - ODL);
•
Linguagem de consulta a objetos conhecida como OQL (Object Query Language); e
•
Linguagens de manipulação de objetos através do uso de programação OO
conhecidos
como
OML (Object
Manipulation Language) (ELMASRI &
NAVATHE, 2005).
A seguir são apresentados os principais conceitos da ODL e OQL.
2.5.2.1
Linguagem de Definição de Objetos
A ODL é utilizada para especificar a estrutura dos objetos e suas classes de um BDOO
independente de qualquer linguagem de programação (ELMASRI & NAVATHE, 2005).
O padrão ODMG suporta dois tipos primitivos de dados que são o objeto e o literal. O
objeto possui um identificador único o qual pode ser referenciado, já o literal não possui
identificador e não pode ser referenciado (EDELWEISS & GALANTE, 2005).
A declaração de classes na ODL é semelhante à criação de classes em linguagens de
programação, como C++ ou Java, e sua sintaxe pode ser visualizada na Figura 18.
Figura 18. Declaração de uma classe no padrão ODL.
Fonte: Adaptado de Harrington (2000).
27
Além da possibilidade de criação de classes, a ODMG permite a criação de interfaces onde é
definido o comportamento de um objeto. Sua sintaxe pode ser observada na Figura 19.
Figura 19. Declaração de uma inteface no padrão ODL.
Fonte: Adaptado de Edelweiss e Galante (2005).
Quando uma classe implementa uma ou mais interfaces, ou seja, representa a herança de
comportamento, é utilizada a sintaxe apresentada na Figura 20 (HARRINGTON, 2000).
Figura 20. Herança de comportamento no padrão ODL.
Fonte: Adaptado de Harrington (2000).
A herança de estado e comportamento é representada através da palavra “extends”
(HARRINGTON, 2000), conforme sintaxe apresentada na Figura 21.
Figura 21. Herança de estado e comportamento.
Fonte: Adaptado de Harrington (2000).
Segundo Harrington (2000), existem algumas regras para a hierarquia de herança entre
classes e interfaces:
•
Uma interface pode herdar de outra interface;
•
Uma classe pode herdar de uma interface;
28
•
As interfaces não podem herdar de uma classe; e
•
Uma classe não pode herdar de outra classe.
Para representar a herança múltipla de uma classe, utiliza-se o termo “extent”
(HARRINGTON, 2000), conforme é apresentado na Figura 22.
Figura 22. Herança múltipla de uma classe.
Fonte: Adaptado de Harrington (2000).
A declaração de atributos pode ser observada na Figura 23.
Figura 23. Declaração de atributos.
Fonte: Adaptado de Harrington (2000).
Na Figura 24 é apresentada a sintaxe de um relacionamento de “um” e um relacionamento
“muitos”, respectivamente.
Figura 24. Representação de relacionamentos do padrão ODMG.
Fonte: Adaptado de Harrington (2000).
O comando “inverse” funciona da mesma forma que a integridade referencial em um banco
de dados relacional. Para que o relacionamento funcione nos BDOOs, é preciso que o
29
relacionamento da classe de origem para a classe destino exista também da classe de destino para a
classe de origem (HARRINGTON, 2000).
O termo “raises” serve para identificar um método que será executado quando ocorrer
alguma exceção na execução do método da classe. Na Figura 25 é apresentada a sintaxe para
definição da assinatura de um método em uma classe utilizando o termo “raises”.
Figura 25. Sintaxe da assinatura de um método.
Fonte: Adaptado de Harrington (2000).
Na Figura 26 é apresentado um exemplo de esquema de banco de dados segundo definição
ODL dos objetos.
Figura 26. Modelo de esquema de banco de dados para representação de
um esquema ODL.
Fonte: Adaptado de Elmasri e Navathe (2005).
30
2.5.2.2
Linguagem de Consulta de Objetos
A OQL é o padrão de consulta especificado pela ODMG, a qual pode ser utilizada em
conjunto com uma LPOO. Sua sintaxe é semelhante à SQL onde teremos uma estrutura do tipo
“select... from ... where...”, porém, com algumas características a mais para suporte aos
objetos (ELMASRI & NAVATHE, 2005).
Para que se possa efetuar uma consulta ao banco de dados, é necessário que haja um ponto
de entrada referenciando um conjunto de objetos que serão acessados na consulta. Pontos de entrada
são objetos que permitem localizar outros objetos a partir dele. Estes objetos possuirão coleções de
objetos que serão acessados através do nome do ponto de entrada mais o indicador ‘.’ e o nome do
objeto que se deseja acessar (ELMASRI & NAVATHE, 2005).
Na Figura 27 é apresentado um exemplo de consulta OQL considerando a classe
Departamento.
Figura 27. Exemplo de utilização da linguagem OQL.
Fonte: Adaptado de Elmasri e Navathe (2005).
Nesse exemplo d representada uma variável de iteração que funciona da mesma forma que
no padrão SQL, que pode ser representada também com o termo ‘as’ ou mesmo sem termo,
simplesmente definindo o nome da variável (ELMASRI & NAVATHE, 2005).
O OQL não exige que exista uma estrutura do tipo ‘Select’, para o retorno da consulta basta
definir uma variável que faça referência à classe (ELMASRI & NAVATHE, 2005).
31
O resultado de uma consulta vai depender do objeto da consulta, o qual pode ser um literal
(uma variável) ou um objeto, que pode ser do tipo coleção como set ou bag, dependendo da
estrutura da consulta que se está realizando (ELMASRI & NAVATHE, 2005).
A OQL disponibiliza um recurso chamado de “Expressões de Caminho” pelo qual é possível
navegar pelos objetos e suas estruturas utilizando o termo ‘.’ (ELMASRI & NAVATHE, 2005). Na
Figura 28 pode-se verificar um exemplo onde se deseja acessar nota de uma determinada disciplina
de um aluno a partir de Aluno a.
Figura 28. Exemplo de Expressões de caminho.
Fonte: Adaptado de Elmasri e Navathe (2005).
2.6 Ferramentas disponíveis de Bancos de Dados Orientados a Objetos
A seguir serão apresentadas algumas ferramentas de SGBDOO selecionadas para esta
pesquisa com o intuito de classificar a melhor opção para o armazenamento de dados Multimídia.
2.6.1 Caché
Caché é um SGBDOO desenvolvido pela empresa InsterSystems, sendo esta uma empresa
privada de desenvolvimento de software com sede em Massachusetts, fundada em 1978
(INTERSYSTEMS, 2007).
O Caché é um banco de dados denominado pós relacional pela empresa Intersystems porque
permite uma integração entre dois mundos: SQL e Objetos. Isso é possível porque o Caché
disponibiliza todos os dados armazenados como tabelas relacionais através de uma camada de
descrição dos objetos, o que possibilita a consulta através do SQL (INTERSYSTEMS, 2007).
O Caché possibilita o acesso aos dados armazenados de três formas: através do uso do SQL;
acesso direto através da linguagem proprietária do banco chamada Caché Object Script (COS); ou
utilizando os Objetos Caché projetados para alguma linguagem suportada pelo banco de dados
como Java ou C++, onde através de uma conexão ODBC é possível instanciar e salvar objetos
diretamente no banco de dados (INTERSYSTEMS, 2007).
32
Na Figura 29 é apresentada uma tela da ferramenta de desenvolvimento do Caché que
auxilia a criação e manutenção de classes do banco de dados.
Figura 29. Tela da Ferramenta de desenvolvimento de classes e métodos do Caché.
Fonte: Intersystems (2007).
A seguir são apresentadas suas principais características do Caché, segundo Intersystems
(2007):
•
Suporte a transações multidimensionais que dão a possibilidade de criação de bancos
de dados distribuídos;
•
Arquitetura unificada de objetos com a alta performance do SQL;
•
Um conjunto de tecnologias e ferramentas que permitem um desenvolvimento rápido
de bancos de dados e aplicações web;
•
Suporte nativo a objetos baseados em XML e WebServices;
•
Integração automática com linguagens de programação OO como Java e C++; e
33
•
Construção de páginas dinâmicas através da linguagem de programação própria CSP
(Caché Server Pages).
Os dados são mapeados internamente como vetores multidimensionais através de um
servidor de dados multidimensionais que faz o tratamento desses dados sem a necessidade do
mapeamento dos mesmos para uma tabela. Esse mapeamento multidimensional permite que os
dados possam ser indexados por qualquer parâmetro, não sendo limitados a linhas e colunas. Sendo
esta característica que o torna mais veloz em relação aos demais BDOO que precisam mapear seus
objetos como tabelas (KIRSTEN et al,2002 apud ROCHA et al,2008). Na Figura 30 é apresentado
um diagrama da arquitetura interna do banco de dados Caché.
Figura 30. Arquitetura do SGBDOO Caché.
Fonte: Intersystems (2007).
Os objetos são armazenados como arrays multidimensionais. Neste caso, o array é
sobrescrito pelo valor do OID e os dados de cada instância armazenados compativelmente com os
nós do array. Na Figura 31 é apresentado um exemplo de armazenamento de uma classe
‘Employee’ que possui os atributos nome, identificador e localização:
34
Figura 31. Armazenamento de um objeto persistente.
Fonte: Intersystems (2007).
Para os índices é utilizado um array multidimensional separado com duas dimensões como
apresentado na Figura 32.
Figura 32. Armazenamento de índices.
Fonte: Intersystems (2007).
Segundo Hutchinson (2006 apud Intersystems (2006)), a persistência no cachê torna-se
simples devido ao fato de não ser necessário fazer o mapeamento do modelo de dados OO para o
modelo relacional, o que vem sendo uma das principais vantagens dos BDOO.
2.6.2 Poet
O Poet é um SGBDOO produzido pela Poet Software, a qual é integrante da ODMG, dessa
forma seu sistema atende a muitos dos requisitos impostos pelo órgão. Ele funciona em conjunto
com compiladores Borland C++ e o Microsoft Visual C++ (NASSU & SETZER, 1999). A seguir
são apresentadas as suas principais características segundo Nassu e Setzer (1999):
35
•
Possibilidade de edição utilizando a ODL para criação de esquemas de bancos de
dados;
•
É possível gerar código fonte na linguagem C++, através de um pré-processador,
denominado PTXX, o qual pode ser utilizado em uma aplicação, que passa a possuir
classes persistentes;
•
Um visualizador gráfico dos objetos armazenados num banco de dados;
•
Possui uma interface gráfica para visualizar os objetos e inspecionar classes
pertencentes a um banco de dados;
•
Utilização da OQL para consultas ao banco de dados; e
•
Interface para administração do banco de dados, que inclui recuperação, backup e
organização do banco de dados.
Quando é efetuada uma alteração em algum objeto do banco, as alterações não são
efetivamente gravadas em disco até que a instrução ‘CommitTransaction’ seja executada, mantendo
os dados em um estado válido (NASSU & SETZER, 1999).
2.6.3 Jasmine
Foi desenvolvido inicialmente pela empresa Fujitsu, do Japão, e hoje é comercializado pela
Computer Associates. Inicialmente foi desenvolvido para servir como um gerenciador para banco
de dados relacional não-normalizado, também da Fujitsu. Juntamente com o Jasmine, é
disponibilizado um ambiente de desenvolvimento de aplicativos multimídia e manutenção de
Bancos de Dados, o Jade (Jasmine Application Development Environment) (NASSU & SETZER,
1999).
O Jasmine é puramente Orientado a Objetos, tornando-se mais adequado para o
gerenciamento de dados complexos que o modelo relacional tradicional, além de possuir suporte
para a web (SHIKIDA; ANDRADE & ARAÚJO, 1999).
Segundo Spangler (1998) apud Assis (2005) o Jasmine possui uma arquitetura clienteservidor multi-thread, que o torna apropriado para armazenamento de dados multimídia, além de
possui suporte a liguagem Java o que permite o desenvolvimento de aplicativos Web. Na Figura 33
36
é apresentado a arquiterura do BDOO Jasmine onde podem ser observados seus principais
componentes.
Figura 33. Arquitetura BDOO Jasmine.
Fonte: Assis (2005).
2.6.4 Versant
Versant é um banco de dados Orientado a Objetos desenvolvido pela empresa Versant
Corporation. Ele é desenvolvido para tornar mais rápido o desenvolvimento de aplicativos
complexos em ambientes heterogêneos. O SGBDOO Versant atende a todos os requisitos
estabelecidos pela ODMG e OMG (VERSANT, 2007).
A arquitetura do banco de dados Versant é voltada para ambientes distribuídos, com suporte
a processamento paralelo e uso de Multi-Threads (múltiplas tarefas) (VERSANT, 2007). A seguir
são apresentadas algumas de suas principais características, segundo Versant (2007):
•
Livre definição de tipos de dados complexos;
•
Gerenciamento de Transações;
37
•
Criação de bancos de dados distribuídos;
•
Plataformas heterogêneas; e
•
Suporte nativo a LPOO como Java e C++.
Na Figura 34 é apresentada uma tela da interface de administração do banco de dados
Versant.
Figura 34. Tela da interface de administração do banco de dados Versant.
Fonte: Versant (2007).
O SGBDOO Versant permite desenvolver os métodos das classes do banco em uma
linguagem de alto nível como C e C++. O código fonte dos métodos será armazenado em arquivos
separados e não diretamente no banco de dados onde ficará armazenado as classes com a
denominação dos métodos (VERSANT, 2007).
2.6.5 Análise comparativa
Na Tabela 1 é apresentado um comparativo entre os bancos de dados OO Caché, Poet,
Jasmine e Versant, discutidos anteriormente, onde e possível observar suas principais
características:
38
Tabela 1. Comparativo de Banco de dados OO.
Critério
Definição de dados pelo usuário
Herança Múltipla
Valida cardinalidade entre objetos
Caché
Sim
Sim
Sim
Poet
Não
Não
Não
Suporta transações longas
Linguagem de definição de
atributos
Sim
Java, C++,
Delphi, Visual
Basic e PHP
Sim
Sim
C++
Sim
Sim
Sim
Sim
Sim
Sim
Não
Sim
Sim
Sim
Sim
Não
Somente via
ODBC
Sim
Armazenamento dos métodos no
BD
Compatibilidade com o ODMG
Suporte a SQL
Interface gráfica
Jasmine
Versant
Sim
Sim
Sim
Sim
Apenas no nível
Sim
"0, 1 ou muitos".
Não
Sim
C, C++, ODQL, C, C++, Java
Java
Sim
Os parâmetros definidos para o comparativos dos BDs foram baseados na pesquisa
elaborada por Boscarioli et al. (2006), onde o autor elabora um comparativo entre os BDs
Objectivity/DB, GemStone e Jasmine, buscando avaliar o desempenho e funcionalidade destes.
Através da Tabela 1 pode-se observar que a ferramenta Caché se destaca pelos recursos
oferecidos, compatibilidade com o padrão ODMG e suporte a SQL. Nenhuma das ferramentas
estudadas é livre de licença, porém a maioria delas oferece uma versão gratuita para
desenvolvimento de pesquisas e testes, o que permite a análise para o Trabalho.
Através deste comparativo realizado, foi escolhida a ferramenta Caché para o
desenvolvimento deste trabalho, por seu desempenho e pelo suporte à linguagem de programação
Java, a qual foi utilizada para o desenvolvimento do sistema proposto.
2.7 Ferramentas disponíveis de Bancos de Dados Objeto-Relacional
2.7.1 DB2
O DB2 Universal Database é um SGBD relacional desenvolvido pela empresa IBM
Corporation e comercializado em todo mundo. Trata-se de um banco de dados robusto com suporte
a dados relacionais e objetos (IBM, 2007).
O banco de dados DB2 utiliza tecnologias derivadas do conceito de Banco de Dados
Universal, que visa ampliar as capacidades da tecnologia de banco de dados, permitindo manipular
39
tipos de dados não-convencionais como: informações armazenadas em documentos, planilhas e
objetos multimídia. Versões recentes oferecem suporte a vários tipos de aplicações cliente/servidor
disponíveis, incluindo a internet (SILVA, 2001).
Na Figura 35 é apresentada uma tela da ferramenta Centro de Desenvolvimento que permite
desenvolver procedimentos armazenados, funções e gatilhos do banco de dados. Esta ferramenta
também permite o desenvolvimento na linguagem Java e C.
Figura 35. Tela da ferramenta Centro de Desenvolvimento do DB2.
2.7.2 Oracle
Oracle é o banco de dados mais utilizado no mundo, ocupando uma fatia de 47,1 % do
mercado de bancos de dados. Sua versão mais atual é a 11g (ORACLE, 2007). A seguir são
apresentadas suas principais características:
•
Apresenta tecnologia de Grid Computing, que permite compartilhar uma infra-estrutura para
todos os processos de negócios (ORACLE, 2007);
40
•
Possui ferramentas que auxiliam no desenvolvimento de software utilizando o padrão UML,
onde é possível gerar códigos fontes em Java (SILBERSCHATZ; KORTH &
SUDARSHAN, 2006);
•
Suporte a dados XML (SILBERSCHATZ; KORTH & SUDARSHAN, 2006);
•
Possui a ferramenta Oracle Repository que gerencia todos os objetos armazenados no banco
de dados (SILBERSCHATZ; KORTH & SUDARSHAN, 2006);
•
Suporta dados multidimensionais (SILBERSCHATZ; KORTH & SUDARSHAN, 2006); e
•
Armazenamento
de
objetos
com
mapeamento
relacional
de
seus
atributos
(SILBERSCHATZ; KORTH & SUDARSHAN, 2006).
2.7.3 Análise comparativa
Na Tabela 2 é apresentado um quadro comparativo dos bancos de dados objeto-relacional
estudados, com o intuito de observar suas principais características.
Tabela 2. Comparativo de Banco de dados Objeto-Relacional.
Critério
Definição de dados pelo usuário
Suporte a dados multidimensionais
Suporte a Objetos Grandes
Linguagem de programação
Armazenamento dos métodos no BD
Armazenamento dados Multimídia
Suporte a Orientação a Objetos
Integração Ferramentas Cases
DB2
Sim
Sim
Sim
Java, C, REXX,
Pearl
Sim
Sim
Sim
Sim
Oracle
Sim
Sim
Sim
Java
Sim
Sim
Sim
Sim
Os critérios utilizados para o comparativo foram selecionados para avaliar se o BD poderá
ser utilizado para o armazenamento de dados Multimídias e o suporte a OO. As duas ferramentas
pesquisadas possuem uma versão livre de licenças que pode ser utilizada para a pesquisa.
41
3 DESENVOLVIMENTO
Neste capítulo será apresentado o processo de desenvolvimento do protótipo do sistema
GEDOO para gerenciamento eletrônico de documentos e análise efetuada a partir deste quanto à
utilização de bancos de dados para o armazenamento de dados multimídia.
A seção 3.1 apresenta as etapas do desenvolvimento do protótipo e as ferramentas utilizadas
nessa etapa. Também é apresentado o funcionamento do protótipo para melhor entendimento dos
resultados obtidos. Na seção 3.2 são apresentados os testes realizados e análise dos resultados
obtidos. Nesta seção é contextualizada a forma como os BDs selecionados tratam os arquivos de
multimídia e armazenam estes.
3.1 Implementação do protótipo de sistema GEDOO
O protótipo do sistema GEDOO foi desenvolvido a partir de um projeto que visa atender
regras básicas para o controle de documentos de forma eletrônica em uma empresa. Seu objetivo
principal é o armazenamento de arquivos como imagens, documentos em PDF, MSWord e
MSExcel, como também arquivos de vídeo e música.
O sistema GEDOO segue um fluxo de operação simples onde os usuários podem administrar
seus documentos por áreas e com controle de segurança para consulta e publicação de documentos.
Na Figura 36 é apresentado o diagrama de atividades do sistema.
Figura 36. Diagrama de atividades do processo de publicação de documento.
No projeto do sistema foi decidida a utilização da linguagem de programação PHP, por ser
mais familiar e de fácil implementação, porém a mesma não possuía suporte adequado e
documentação para a utilização com o BDOO Caché. Dessa forma foi estudado qual seria a melhor
43
opção para atender aos objetivos desse trabalho e que possuía um melhor suporte para o BDOO,
optando-se pela linguagem de programação Java.
A seguir são apresentadas as priciapais regras de negócios do protótipo:
1. Armazenagem de arquivos Multimídia;
2. Segmentação em áreas;
3. Controle de aprovação e publicação de arquivos;
4. Controle de versões;
5. Controle de acesso aos arquivos e compartilhamento; e
6. Pesquisa de arquivos publicados.
Para atender as regras de negócio propostas para o sistema GEDOO foram implementados
os casos de usos apresentados na Figura 37.
44
Figura 37. Casos de uso do sistema GEDOO.
O sistema GEDOO é um sistema web, desenvolvido na linguagem de programação Java e
utilizando recursos como JSP e Servlets como camada intermediária. O projeto do sistema foi
elaborado seguindo o modelo MVC, onde há uma camada do software responsável pela interação
com os usuários, uma camada que fará o controle da aplicação de acordo com a interação do usuário
e a camada de persistência, que será responsável pela implementação das regras de negócio e acesso
ao banco de dados. Na Figura 38 é apresentado o modelo de objetos implementados no sistema para
atender as regras de negócio, onde podem ser observados três tipos de objetos.
45
Figura 38. Modelo de objetos do sistema.
Para a camada de controle foi utilizado o conceito de Servlets, que faz o tratamento das
requisições dos usuários e interação com a camada de persistência. Toda troca de informação entre
a camada de persistência e a camada de interface é efetuada através da utilização desse mecanismo.
Para o desenvolvimento do sistema foi selecionada a ferramenta NetBeans, por ser gratuita e
de fácil utilização, além de fornecer todos os recursos necessários para implementação desse
projeto. O Netbeans é uma IDE (Integrated Development Environment) livre de licenças para
desenvolvimento de aplicativos tanto desktop quanto programas web na linguagem Java. Na
instalação desta ferramenta, também é instalado o servidor Apache Tomcat, que servirá como
servidor web para execução das páginas JSP (NETBEANS, 2006). Na ferramenta, foi criado um
projeto chamado Gedoo onde são armazenados todos os fontes do sistema. Neste projeto existem
dois tipos de arquivos: arquivos .JSP, que são as páginas web, e arquivos .JAVA, que são os
servlets e classes do sistema.
O JSP é uma linguagem que permite criar páginas dinâmicas, com suporte à utilização de
classes Java. As páginas JSP são executadas em um servidor web Apache Tomcat e se comunicam
com a camada de Servlets que fazem o controle do sistema.
46
A utilização dos servlets através das páginas JSP funciona da seguinte forma: nas páginas
JSP são definidos formulários que possuem como action o nome do servlet que deve ser executado
quando o formulário for submetido, conforme apresentado na Figura 39.
Figura 39. Código da definição do formulário.
O servidor Tomcat interpreta essa ação e executa o servlet indicado. O servlet é uma classe
Java que implementa e processa as requisições http. Essa camada é executada do lado do servidor e
não possui interface com o usuário (SUN, 2008). No servlet são processadas as requisições,
efetuando os tratamentos necessários, e após devolvendo o resultado para as páginas JSP. Na Figura
40 é apresentado um exemplo de implementação de um servlet que busca os últimos arquivos
publicados de uma determinada área.
Figura 40. Código do Servlet lstUltArq.
As classes servlet invocam as classes de persistência que buscam os dados na base de dados
do sistema GEDOO e retornam um objeto com os dados requisitados. Na Figura 41 é apresentado
um exemplo da implementação do método getArquivosByArea que retorna um Array contendo o
objeto arquivo.
47
Figura 41. Código do método getArquivosByArea da classe
persisteArquivo.
3.1.1 Arquitetura do sistema
O sistema foi desenvolvido para trabalhar com dois bancos de dados diferentes. A estrutura
do sistema, seus usuários e áreas são armazenados no banco de dados DB2, sendo que os arquivos
submetidos podem ser armazenados de três formas diferentes: em disco, no banco de dados objetorelacional DB2 e no banco de dados Orientado a Objetos Caché. Sendo que, independente da forma
de armazenamento do arquivo, os meta-dados destes arquivos serão armazenados no banco DB2.
Quando o usuário submete um arquivo na tela de submissão de arquivos, este pode escolher a forma
de armazenamento. Dependendo da forma escolhida o sistema irá executar o método adequado.
48
Figura 42. Diagrama de componentes do sistema GEDOO.
Para comunicação com os bancos de dados foi utilizado drivers JDBC disponibilizados
pelos fabricantes dos SGBDs. Estes drivers permitem estabelecer comunicação com os bancos de
dados através de comandos SQL.
Há dois métodos no sistema, um para cada tipo de banco de dados, que executam a conexão
com o banco de dados e retornam um objeto do tipo Conecction que será utilizado para executar as
consultas no banco de dados. Na Figura 43 é apresentado o método ConectaDB2 que demonstra um
exemplo de utilização deste driver, e na Figura 44 é demonstrado como esse método é utilizado
para abrir uma conexão com o banco de dados e executar a inserção de um novo arquivo na base
DB2:
Figura 43. Método conDataBase da classe persisteArquivo.
49
Figura 44. Método salvaArquivoDB2 da classe persisteArquivo.
Para o banco de dados OO Caché foi utilizado o mesmo mecanismo de comunicação JDBC,
pois o banco Caché possui uma característica que o diferencia dos demais bancos de dados que é o
suporte a consultas na linguagem SQL.
Para o armazenamento dos arquivos foram criadas duas tabelas na base de dados DB2:
ARQUIVO e VERSAO. Foi necessário criar esse relacionamento para atender as regras de negócio
do sistema que exigem um controle de versão dos documentos onde o sistema deve manter
armazenadas todas as versões publicadas de um documento. Nas Tabela 3 e Tabela 4 são
apresentadas a estrutura dessas duas tabelas no banco de dados.
50
Tabela 3. Tabela ARQUIVO.
Campo
CODARQUIVO
Tipo
INT (AutoIncrement)
NOMEARQUIVO
VARCHAR
ASSUNTO
VARCHAR
DESCRICAO
VARCHAR
PALAVRASCHAVE VARCHAR
DT_CRIACAO
DATE
HR_CRIACAO
TIME
COD_AREA
VARCHAR
IDUSUARIO
INT
Tamanho Descrição
4
Código do arquivo
Chave primária da tabela
50
Nome do arquivo indicado pelo usuário
50
Assunto relacionado ao arquivo
255
Descrição do arquivo
120
Palavras-chave para pesquisa do arquivo
4
Data de criação do arquivo no sistema
3
Hora de criação do arquivo no sistema
10
Código da área a qual o arquivo está
relacionado
4
Código do usuário que submeteu o arquivo no
sistema.
Tabela 4. Tabela VERSAO.
Campo
CODARQUIVO
CODVERSAO
END_ARQUIVO
ARQUIVO
DT_INCLUSAO
HR_INCLUSAO
DISCO
SITUACAO_ARQ
NMREALARQ
NMORIGARQ
Tipo
INT
Tamanho Descrição
4
Código do Arquivo
Chave Primária da Tabela
INT
4
Código da Versão
Chave primária da tabela
VARCHAR 255
Endereço onde o arquivo está armazenado
utilizado para os casos em que o arquivo é
armazenado em disco
BLOB
4 Mb
Armazena o Arquivo
DATE
4
Data de inclusão da versão do arquivo no
sistema
TIME
3
Hora de inclusão da versão no sistema
INT
4
Indica o tipo de armazenamento do arquivo,
que pode ser 0 – Disco, 1 - DB2 e 2 – Caché
INT
4
Situação do arquivo em relação a sua
aprovação para publicação
VARCHAR 60
Nome real do arquivo, quando o mesmo é
armazenado em disco
VARCHAR 60
Nome original do arquivo
Para a base de dados do sistema caché foi criado a classe ArqCh, que armazena o código do
arquivo e versão e o arquivo. O tratamento da base de dados Caché será detalhado na próximo
seção.
3.1.2 Banco de dados OO Caché
51
O banco de dados Caché possui uma arquitetura diferente dos demais bancos de dados OO
onde o maior destaque está para o suporte a instruções SQL para manipulação dos dados. Quando
cria-se uma classe no ambiente de desenvolvimento Studio do Caché, o sistema gera um
mapeamento relacional para essa classe.
O Caché, além de suas linguagens de programação proprietárias, como COS e CSP,
possibilita o desenvolvimento através de linguagens de programação de alto nível como C++ e Java.
Para implementação de uma aplicação em Java há várias formas como a utilização do driver JDBC,
Objetos Caché e a ferramenta Jalapeño.
A utilização do driver JDBC permite acessar a base de dados de forma relacional através da
linguagem SQL. Os Objetos do Caché podem ser compilados dentro do Caché e associados ao
projeto onde poderão ser instanciados diretamente dentro da aplicação Java através da classe
com.intersys.objects, onde os mesmos podem ser salvos diretamente na base de dados. Através da
tecnologia Jalapeño é possível efetuar o caminho inverso, onde classes Java podem ser compiladas
dentro do Caché e armazenadas pelo SGBD.
Para abrir um conexão com o Caché para acesso direto aos objetos é utilizada a o seguinte
sintaxe:
CacheDatabase.getDatabase(url, username, password);
Sendo que para esse tipo de conexão também é utilizado o protocolo JDBC, porém o método
getDatabase retorna uma conexão com o banco que permitirá instanciar objetos diretamente no
banco de dados e salvá-los sem necessidade de uma instrução SQL. Na Figura 45 é apresentado um
exemplo de como instanciar uma classe diretamente na base de dados do Caché e salvar o objeto no
banco de dados.
52
Figura 45. Exemplo de criação de objeto do banco Caché.
Ao criar uma classe no Caché o sistema cria todos os atributos como privados da classe e
cria automaticamente os métodos set e get que farão a atualização e consulta do objeto na base de
dados. Somente será possível acessar os atributos da classe através desses métodos.
Através da ferramenta Studio do Caché é possível criar as classes no banco de dados de
forma fácil através de wizards e comandos simples. Utilizando o método Projection o Studio
projeta a classe criada para o diretório de saída especificado como parâmetro, para que esta possa
ser utilizada em um aplicativo Java da forma demonstrada na Figura 45. Na Figura 46 é apresentada
a criação da classe ArqCh que representa a classe que irá armazenar o arquivo na base de dados
Caché.
53
Figura 46. Criação de uma classe na ferramenta Studio.
Essa classe possuirá os atributos Tabela 5:
Tabela 5. Atributos da Classe ArqCh .
Atributo
Tipo
Codarquivo INT
Codversao
Arquivo
Descrição
Armazena o código do arquivo associado a tabela
VERSAO do banco DB2 que fará o controle dos
arquivos
INT
Armazena o código da versão do arquivo
GlobalBinaryStream Armazena o arquivo
A classe ArqCh somente irá armazenar o arquivo e os dados necessários para relacionar o
arquivo aos seus meta-dados que ficarão armazenados na base de dados DB2.
Para criar uma conexão JDBC e acessar ao banco Caché de forma relacional, é utilizada a
mesma terminologia utilizada para qualquer outra base de dados:
Class.forName("com.intersys.jdbc.CacheDriver");
conn = DriverManager.getConnection(url, user, password);
54
A partir desta conexão é possível acessar aos dados do banco Caché da mesma forma como
um banco relacional com comandos SQL. É devido a essa característica do Caché, de interpretação
de comandos SQL que a empresa Intersystems denomina o BDOO como pós-relacional. Na Figura
47 é apresentado um exemplo de código para acesso a base de dados Caché através de comandos
SQL.
Figura 47. Exemplo de acesso ao Caché utilizando comandos SQL
Inicialmente decidiu-se por utilizar os objetos Caché para implementação do módulo do
sistema que salvaria os arquivos nesta base de dados. Porém, durante o desenvolvimento percebeuse que o Caché não criava os métodos set e get para atributos do tipo Stream que é o tipo
equivalente ao Blob no BDOR. Dessa forma foi necessário implementar um novo método,
utilizando conexão JDBC e SQL para inserção e recuperação do arquivo na base de dados.
3.1.3 Funções do Sistema GEDOO
Foram desenvolvidas funcionalidades básicas para o controle de documentos no protótipo de
sistema GEDOO. A seguir são apresentadas as funções do sistema e a forma de interação do
usuário.
3.1.3.1
Autenticação
Na tela de autenticação o usuário deve informar usuário e senha previamente cadastrados no
sistema. O sistema irá controlar o acesso do usuário através do uso de sessões e caso o usuário
deseje sair do sistema, deve utilizar a opção Logoff para eliminar as sessões abertas. Na Figura 48 é
apresentada a tela de autenticação do sistema.
55
Figura 48. Tela de autenticação do sistema.
Ao usuário efetuar autenticação no sistema, será exibida a tela principal do sistema onde
serão apresentados os últimos documentos publicados no sistema, as opções de menu que o usuário
possui acesso e as áreas relacionadas ao acesso do usuário, conforme apresentado na Figura 49.
Figura 49. Tela principal do sistema.
3.1.3.2
Submissão de Arquivo
Através do menu “Incluir Arquivo” o usuário irá acessar a tela de submissão de arquivos
conforme apresentado na Figura 50. Nesta tela o usuário informa alguns dados básicos do arquivo
56
que servirão como meta-dados para pesquisa. O usuário deve indicar o arquivo que deseja submeter
e a forma de armazenamento do arquivo, que pode ser diretamente em Disco, no BDOR DB2 ou no
BDOO Caché.
Figura 50. Tela de submissão de arquivos.
Após preenchido o formulário, o usuário pode clicar no botão “Enviar” que irá processar os
dados e redirecionar o usuário para uma tela de confirmação da submissão onde podem ser
observados dados como tamanho do arquivo submetido e tempo para armazenar o arquivo no
destino, em milissegundos, conforme pode ser observado na Figura 51.
Figura 51. Tela de confirmação de arquivo salvo.
Para implementação do upload do arquivo inicialmente foi testada a utilização do
componente UploadBean. Este componente pode ser integrado com páginas JSP e Servlets para
57
upload de arquivos. Ele também permite salvar arquivos em banco de dados, para isso é utilizado o
método setDatabasestore para indicar que o arquivo será salvo em banco. O componente irá salvar
o arquivo em uma tabela chamada UPLOAD que deve ser criada no banco de dados do sistema
(JAVAZOOM, 2008). Devido a essa limitação esse componente não foi utilizado pois para a
implementação do projeto proposto foi necessário desenvolver o algoritmo de armazenamento no
banco de dados para atender ao banco OR e OO.
Optou-se, então, por utilizar a biblioteca commons-fileupload do projeto Jakarta
disponibilizado pela organização Apache (APACHE SOFTWARE FOUNDATION, 2005). O
projeto Jakarta é um conjunto de componentes desenvolvidos em Java para auxiliar no
desenvolvimento de aplicativos Web utilizando a linguagem de programação Java. O Componente
commons-fileupload implementa uma classe que trata os arquivos e retorna um objeto serializado
do tipo FileStream para armazenamento (JAKARTA, 2008). O tratamento do arquivo é efetuado no
servlet UploadArquivo que gera um objeto arquivo que será enviado para a classe
persisteArquivo que efetuará a gravação do arquivo no destino correto. Na Figura 52 é apresentado
um exemplo de como é efetuado o tratamento do arquivo utilizando a biblioteca commonsfileupload.
Figura 52. Exemplo de código utilizando a biblioteca commonsfileupload.
3.1.3.3
Aprovação da publicação do Arquivo
Ao submeter um arquivo no sistema, o usuário deve selecionar uma área a qual o arquivo
será relacionado. O sistema irá verificar o aprovador da área selecionada e disponibilizar o arquivo
58
para que este usuário efetue a aprovação do mesmo para publicação. O arquivo somente estará
disponível para consulta após aprovação. Na Figura 53 é apresentada a tela de aprovação de
documentos onde são listados todos os arquivos que estão pendentes de liberação.
Figura 53. Tela de documentos pendentes de aprovação.
Na tela apresentada na Figura 53 o usuário poderá selecionar o arquivo que deseja efetuar a
aprovação. Ao selecionar o arquivo que será analisado o usuário é redirecionada para a tela de
efetivação da aprovação, apresentada na Figura 56, onde são mostrados os detalhes dos documento
que está sendo analisado. O usuário deve indicar se o arquivo será aprovado ou não e clicar no
botão “Enviar” para confirmar a operação.
Figura 54. Tela de aprovação de documentos.
Caso o usuário não aprove o documento, este será eliminado da base de dados. Aprovando o
documento este será liberado para consultas.
59
3.1.3.4
Pesquisa de arquivos
O sistema possui duas formas de pesquisa de documentos que pode ser por assunto ou por
palavras-chave. Ao preencher o formulário de pesquisa e clicar no botão “Enviar”, o sistema
apresentará uma listagem de todos os arquivos encontrados relacionados aos termos informados na
pesquisa. Na Figura 55 é apresentado como executar a pesquisa. Após clicar no botão pesquisar o
sistema exibe uma listagem com os resultados encontrados. Na listagem apresentada é exibido um
link para consulta do arquivo pesquisado, conforme apresentado na Figura 56.
Figura 55. Tela de pesquisa de arquivos.
Figura 56. Tela do resultado da pesquisa.
Ao clicar o link para efetuar consulta do arquivo, o sistema carrega o arquivo da base
armazenada e apresenta na tela do resultado da recuperação do arquivo, os dados do arquivo e um
link para download do mesmo conforme apresentado na Figura 57.
60
Figura 57. Tela de recuperação do arquivo.
3.1.3.5
Alteração do Arquivo
O sistema disponibiliza uma função para que o usuário possa alterar um arquivo publicado.
O sistema irá tratar essa alteração como uma nova versão do arquivo mantendo armazenada a
versão antiga para consulta. Para o usuário efetuar a alteração de um documento, inicialmente ele
deve pesquisar o documento desejado, conforme apresentado na Figura 58.
Figura 58. Tela de alteração de arquivos – Pesquisa.
Ao efetuar a pesquisa, o sistema listará todos os arquivos do usuário que já foram aprovados
para que o usuário possa alterá-los. Clicando no nome do arquivo o sistema apresenta a tela de
alteração do arquivo apresetanda na Figura 59.
61
Figura 59. Tela de alteração de arquivos.
3.1.3.6
Administração do sistema – Cadastro de usuários e áreas
A função de administração do sistema permite o usuário administrador cadastrar novas áreas
no sistema e gerenciar o cadastro de usuários do sistema. No cadastro de usuários pode ser inserido
novo usuário, alterar ou bloqueado o acesso de um usuário. O administrador também deve associar
o usuário a uma ou mais áreas, nas quais o usuário poderá publicar ou consultar documentos
publicados.
3.1.4 Diagramas
Nesta seção serão apresentados os principais diagramas desenvolvidos e utilizados para a
implementação do protótipo de sistema GEDOO.
3.1.4.1
Diagrama de Classes
O diagrama de classes representa todas as classes presentes no sistema. No caso do sistema
GEDOO, as classes de persistências representadas no diagrama servem para a construção da base de
dados do sistema.
Na Figura 60 é apresentado o diagrama de classe do sistema GEDOO que está dividido em
três partes: classes de interface, classes de controle e classes de persistência.
62
Figura 60. Diagrama de classes do sistema GEDOO.
3.1.4.2
Diagrama de Seqüência
Submissão de Arquivo
Este diagrama representa o processo de submissão de um novo arquivo ao sistema. O
diagrama da Figura 61 demonstra que um usuário submete um novo arquivo ao sistema GEDOO,
sendo este arquivo associado a uma área.
63
Figura 61. Diagrama de Seqüência de submissão de um arquivo
Pesquisa de arquivos
Este diagrama representa o processo de pesquisa de um documento no sistema GEDOO. Na
Figura 62 é possível observar o fluxo do processo de consulta de um documento. Neste processo o
usuário acessa a opção de pesquisa de arquivos, onde tem duas opções de pesquisa: por palavraschave ou por assunto do arquivo. O usuário informa os dados da pesquisa e submete o formulário ao
sistema, este processa a pesquisa e retorna os resultados associados com os dados da pesquisa. Caso
o usuário deseje visualizar o arquivo, o sistema disponibiliza um link para download onde o usuário
é redirecionado para um interface com detalhes do arquivo selecionado.
64
Figura 62. Diagrama de Seqüência da pesquisa de arquivos.
3.1.4.3
Diagrama ER
O modelo Entidade-relacionamento foi utilizado para implementar a versão do sistema para
o banco de dados Objeto-Relacional, para atender aos objetivos do presente trabalho em comparar a
performance do BDOO e o BDOR. Na Figura 63 podem ser observadas as estruturas das tabelas do
GEDOO e seus relacionamentos.
65
Figura 63. Diagrama ER do sistema GEDOO.
3.2 Análise dos resultados
Após a implementação do protótipo GEDOO foi iniciada a etapa de testes para validação do
protótipo. Nos testes realizados foram observadas algumas características novas essenciais para o
sistema, a afim de possibilitar a análise objetivo deste trabalho. Uma dessas características foi
inclusão de telas que demonstrassem o tempo para processamento e recuperação de arquivos. A
seguir são apresentados os dados da análise elaborada a partir do protótipo implementado.
3.2.1 Armazenamento e recuperação de dados Multimídia
Para todos os tipos de armazenamentos abordados, sendo este em disco, no BDOR DB2 e no
BDOO Caché, foi necessário implementar o tratamento do arquivo recebido para o formato
serializado InputStream através do componente commons-fileupload para realizar o upload deste.
O formato do arquivo passou a ser o mesmo para os três tipos de armazenamento, limitando as
diferenças de performance ao desempenho do próprio SGBD ou sistema operacional. Os testes
66
foram realizados em um computador portátil com processador Pentium M de 1.7 MHz, com 512
MHz de memória RAM.
Nos testes realizados foram analisados os seguintes indicadores definidos no projeto para
determinar a melhor forma de armazenamento dos dados multimídia: tempo de armazenamento e
recuperação, compartilhamento dos arquivos, segurança dos dados armazenados e facilidade de
desenvolvimento para implementar o armazenamento.
Nos primeiros testes realizados foram processados 5 formatos de arquivo, sendo 4 de cada
formato, num total de 20 arquivos em cada destino de armazenamento. Na Tabela 6 são
apresentados os dados obtidos com os testes realizados:
Tabela 6. Resultado dos testes efetuados.
Nome
PDF 1
PDF 2
PDF 3
PDF 4
DOC 1
DOC 2
DOC 3
DOC 4
IMG 1
IMG 2
IMG 3
IMG 4
MP3 1
MP3 2
MP3 3
MP3 4
ZIP 1
ZIP 2
ZIP 3
ZIP 4
Tamanho Tempo Tempo
(Bytes)
Armaz. Armaz.
Disco
DB2
ms
ms
980.104
1.014.909
485.542
5.221.877
803.840
953.856
1.808.896
136.704
1.725.078
24.924
231.249
16.310
4.697.307
3.086.336
3.234.306
3.813.761
2942722
238531
2597334
466249
0
109
62
172
15
16
62
47
47
0
47
62
94
109
203
78
62
16
47
78
2015
312
297
781
234
203
328
78
391
125
140
94
9719
3454
4453
6000
5391
94
4968
922
Tempo
Armaz.
Caché
ms
8000
1704
625
10328
266
235
968
141
2938
141
266
94
6063
2078
2594
2656
1360
141
1266
187
Tempo
Recuperação
Disco
ms
0
32
16
16
437
281
140
125
109
110
109
78
0
0
16
0
0
0
0
0
Tempo
Recuperação
DB2
ms
656
437
62
1125
172
141
515
15
390
16
125
16
625
343
703
719
688
16
234
47
Tempo
Recuperação
Caché
ms
2141
156
157
125
203
109
156
156
109
78
110
78
719
172
94
78
125
110
125
110
A partir dos dados coletados na Tabela 6 foi gerada a Tabela 7 onde são apresentadas as
médias de bytes armazenados e recuperados por segundo:
Tabela 7. Média do tempo de armazenamento e recuperação.
Forma armazenamento Armazenagem (Bytes/ms)
Disco
DB2
Caché
75.321
2.037
1.353
67
Recuperação (Bytes/ms)
972.527
5.791
12.698
A partir da coleta dos dados apresentados nas Tabela 6 e Tabela 7, é possível observar que o
armazenamento em disco possui uma performance superior ao armazenamento em um banco de
dados. Esse é um fato esperado, sabendo-se que não há nenhum tratamento para os dados
armazenados em disco. Essa análise foi abordada para servir como parâmetro para os dados
armazenados nos SGBDs, sendo estes valores, o tempo mínimo que poderá se obter para o
armazenamento de dados multimídia.
Verificou-se com esta primeira coleta de dados que há uma relação entre o tipo de arquivo e
tempo necessário para armazenamento e recuperação. Devido a esse fato foi realizado uma segunda
coleta de dados, onde um mesmo arquivo foi submetido 5 vezes para obter uma média dos tempos
de armazenamento e recuperação. Foram analisados 4 tipos de arquivos (AVI, MP3, BMP e PDF).
A média dos recultados obtidos é apresentada na Tabela 8 e a tabela completa dos dados coletados
pode ser consultada no Apêndice B.
Tabela 8. Média do tempo de armazenamento e recuperação por tipo de arquivos (Bytes/ms).
AVI
Armazena Recupera
gem
ção
MP3
Armazena Recupera
gem
ção
BMP
Armazena Recupera
gem
ção
PDF
Armazena Recupera
gem
ção
Média
Armazena Recupera
gem
ção
DISCO
34.575
0
65.240
0
79.132
0
64.151
0
60.774
-
DB2
3.910
8.365
7.093
19.017
5.021
20.391
8.146
17.223
6.043
16.249
CACHÉ
1.177
54.924
1.558
31.357
3.607
13.169
1.458
50.698
1.950
37.537
Com este comparativo, pode se observar que realmente há uma difrença entre os tempos de
armazenamento de acordo com o tipo de arquivo, porém análise de comparação dos BDs permanece
a mesma, onde o SGBDOR apresenta uma performance melhor quanto ao armazenamento, porém o
SGBDOO possui uma performance superior na recuperação dos dados armazenados. Esse
comportamente pode ser observado no gráfico apresentado na Figura 64.
68
90.000
80.000
70.000
60.000
50.000
40.000
30.000
20.000
10.000
-
DISCO
DB2
AVI
MP3
BMP
Recuperação
Armazenagem
Recuperação
Armazenagem
Recuperação
Armazenagem
Recuperação
Armazenagem
CACHÉ
PDF
Figura 64. Gráfico comparativo entre os tipos de mídia.
O armazenamento em SGBDs apresentou uma performance aproximadamente de 90%
inferior ao armazenamento em disco. Por isso, pode se observar que é necessário um
aperfeiçoamento para armazenamento de dados multimídia em campos BLOBs nos bancos de dados
para tornar viável o gerenciamento de uma grande quantidade de dados multimídia em um SGBD.
Além da deficiência no armazenamento, a recuperação dos dados em SGBDs também
apresentou uma performance muito inferior a recuperação dos dados em disco. Pode-se obbservar
que para arquivos de tamanho até 3 Mb o armazenamento e recuperação em SGBDs é viável de
implementação, pois o tempo gasto, mesmo sendo superior ao armazenamento em disco é
suficientemente rápido para o uso em sistemas domésticos e empresarial.
O BDOO Caché, apresentou uma performance inferior ao BDOR DB2 no armazenamento
de dados, porém essa diferença não foi grande, o que demonstra um avanço para a tecnologia de
SGBDOO. Apesar da performace inferior no armazenamento de dados, o BDOO apresentou uma
performance superior na recuperação dos arquivos armazenados. Nesse caso, a implementação de
um sistema para armazenamento de dados multimídia em um BDOO ainda precisa ser analisada
como uma opção, avaliando-se outros requisitos como a facilidade de implementação e os recursos
de pesquisa sematica disponíveis nos BDOOs, além das necessidades básicas do sistema que
pretende se desenvolver, onde deve se observar requisitos como: quantas vezes o arquivo será
armazenado e quantas vezes este será recuperado. Se analisar-se requisitos comos estes a utilização
de um SGBDOO se torna ainda mais interessante.
69
Outra vantagem dos SGBDOOs para o armazenamento de dados multimídia é o seu
tratamento de versionamento, onde um objeto nunca é excluído. Objetos multimídia nunca serão
alterados no banco de dados como um registro comum, estes precisaram ser substitídos
completamente na base de dados, a utilização de um controle de versões neste caso se torna muito
interessante para não se perder versões antigas de um projeto de CAD por exemplo, onde os
usuários geralmente desejam criar comparativos entre versões de um mesmo arquivo.
3.2.2 Segurança dos dados e compartilhamento
É importante ressaltar que o nível de segurança dos dados armazenados em um banco de
dados é superior ao armazenamento destes diretamente em disco, pois em um banco, os arquivos
ficam protegidos de acessos indevidos e corrupção de arquivo. Isso é uma questão importante,
principalmente em sistemas que armazenam documentos confidenciais, como, por exemplo, o
sistema desenvolvido para controle eletrônico de documentos, que muitas vezes é implantado em
grandes empresas.
Além da segurança dos dados armazenados, o compartilhamento dos arquivos passa a ser
gerenciado pelo SGBD que possui controle de transações por conexão. O arquivo armazenado em
um SGBD é tratado como um dado de uma tabela, onde o sistema irá controlar acessos simultâneos
e uso exclusivo do arquivo, o que garante a sua integridade. No armazenamento em disco, o
controle de compartilhamento passa a ser gerido pelo software, que deve controlar alterações e
acessos simultâneos.
Para as duas questões citadas, os bancos de dados utilizados atendem da mesma forma,
sendo que o BDOO possui controle de versões de objetos, o que permite criar um acervo dos
objetos armazenados sem perder uma versão anterior após uma alteração. Esse característica é
muito utilizada em aplicativos CAD e CAM que permitem comparar diferentes versões de um
mesmo projeto.
3.2.3 Facilidade no desenvolvimento
Percebeu-se através do protótipo desenvolvido e dos testes realizados que o
desenvolvimento com o SGBDOO Caché foi mais fácil de implementar quando não há uma
definição relacional dos objetos que serão manipulados. A persistência de um objeto em um BDOO
passa a ser simples, sem a necessidade de um mapeamento das classes para o modelo relacional.
70
Dependendo do escopo do aplicativo, quando não há necessidade de armazenar uma grande massa
de dados, essa facilidade pode ser decisiva para escolha do banco de dados a utilizar.
71
4 CONCLUSÃO
Neste projeto foi desenvolvido o protótipo GEDOO para análise e comparação dos meios de
armazenamento em disco, em um banco de dados objeto-relacional e em um banco de dados
orientado a objetos. Foi avaliado o armazenamento de dados multimídia para avaliar a melhor
opção para armazenamento desse tipo de informação.
Foram escolhidas duas ferramentas de SGBDs para análise: o SGBD Objeto relacional DB2
da empresa IBM e o SGBD Orientado a Objetos Caché da empresa Intersystems.
O banco de dados DB2 foi escolhido pelas suas características de objeto-relacional e por ser
uma ferramenta de fácil acesso, já consolidada no mercado, e que possui uma versão gratuita para
demonstração. O banco de dados Caché foi escolhidos por ser o único BDOO com suporte a
consultas SQL, e por possuir boa documentação disponível pelo fabricante, além do suporte à
linguagem Java. O Caché também possui uma versão livre para demonstração que permite realizar
pesquisas e desenvolvimento para o aprendizado. Além de avaliar o armazenamento de dados
multimídia em SGBDs, foi também implementada uma opção para armazenamento em disco para
comparar se o armazenamento em bancos de dados possui performance muito inferior ou adequada
em relação ao armazenamento diretamente em disco.
O desenvolvimento do protótipo de sistema GEDOO proporcionou uma visão mais
abrangente da utilização dos conceitos de Orientação a Objetos no desenvolvimento de um sistema
e a aplicação destes conceitos na utilização de uma ferramenta de SGBDOO que muitas vezes não é
aprofundada durante o curso de ciência da computação.
Através da implementação do protótipo integrado com um banco de dados OO pode se
observar as principais características e vantagens na utilização deste tipo de SGBD, o que agrega
facilidade na implementação do código e persistência de objetos. Porém, observou-se que esse tipo
de banco de dados atualmente não é o mais apropriado para o armazenamento de grandes
quantidade de dados. O tratamento para campos BLOB precisa ser aperfeiçoado nesse tipo de
SGBD para que este possibilite um melhor tratamento no armazenamento e recuperação de arquivos
multimídia.
Ao iniciar o desenvolvimento da persistência dos dados multimídia na ferramenta Caché,
encontrou-se dificuldades para a utilização de seus objetos projetados para a linguagem Java. A
72
projeção criada pelo Caché para atributos do tipo Stream, os quais armazenam os dados multimídia,
não geram métodos para acesso a esse tipo de atributo. Dessa forma foi necessário alterar a forma
de acesso ao BDOO Caché, para que o armazenamento destes dados fosse efetuado através de
comandos SQL, que são interpretados pelo banco e traduzidos para o modelo orientado a objetos. A
necessidade da interpretação dos comandos SQL pelo SGBDOO gera uma perda de performance,
fator esse que ocorre na maioria dos BDOO que internamente armazenam os dados
seqüencialmente como no modelo OR, porém para acessá-los o SGBDOO monta uma organização
lógica para o modelo OO tornando seu mecanismo de armazenamento e recuperação mais lentos do
que um SGBDOR.
Observou-se também que houve um grande avanço na tecnologia de SGBDOO em relação
ao citado no trabalho, indicando a falta de crescimentos destes SGBDs pela sua baixa performance
em relação ao modelo relacional (EDELWEISS & GALANTE, 2005). Hoje estes SGBDs estão
mais estáveis e com uma performance aprimorada, o que torna viável a sua utilização para sistemas
em que o foco não é o armazenamento de grandes quantidade de dados. A pesquisa de dados em
bancos OO se mostra superior ao modelo relacional devido à organização interna dos dados no
modelo OO. Porém esse aspecto não é observado para dados do tipo BLOB.
O BDOO Caché apresentou muitas facilidades de utilização devido ao suporte à linguagem
SQL e à possibilidade de acesso direto aos objetos utilizando a linguagem Java. O Caché é um
BDOO com uma arquitetura evoluída que apresenta algumas ferramentas que tornam sua utilização
mais fácil, além da documentação disponível no site para o desenvolvimento de aplicativos
utilizando a linguagem Java.
O objetivo geral do presente trabalho foi alcançado através do desenvolvimento do protótipo
de sistema que possibilitou elaborar o comparativo entre os três meios de armazenamento
abordados: disco, BDOR DB2 e BDOO Caché, onde o armazenamento e recuperação em disco
apresentou um performance superior. Porém o armazenamento em bancos de dados se apresentou
viável e mais indicado pela segurança e integridade dos dados armazenados. O protótipo também
permitiu observar que o tratamento para dados multimídia no BDOR DB2 possui melhor
performance e melhor tratamento para os dados armazenados.
Embora o SGBDOO tenha apresentado uma performance inferior ao esperado, ele ainda
surpreendeu quanto à sua performance em relação ao SGBDOR, apresentando bom desempenho.
Sugere-se a partir da análise elaborada, que para o desenvolvimento de ferramentas semelhantes,
73
busque avaliar-se também o escopo do projeto, pois aplicativos de armazenamento de dados
multimídia caseiros não necessitam de uma grande base de dados, podendo-se salvar os dados
diretamente em disco. Porém, para uma grande corporação onde a informação é patrimônio mais
valioso, sugere-se a utilização de um banco de dados OR.
Com os resultados obtidos, conclui-se que ainda é necessário um aperfeiçoamento nos
SGBDOO para que estes venham a ocupar espaço no mercado, hoje dominado pelas ferramentas
relacionais, para armazenamento de grandes massas de dados. Observou-se um avanço nesta
tecnologia comparada com trabalhos anteriores a estes onde os sistemas BDOO possuíam uma
performance muito baixa. Além desse aspecto, é necessário observar que há uma grande falta de
conhecimento no mercado sobre o assunto, e esse desconhecimento sobre a ferramenta não permite
grandes avanços na tecnologia, pois não são realizadas muitas pesquisas na área.
Como trabalhos futuros com o projeto GEDOO, podem-se citar:
1. Pesquisa por conteúdo através do desenvolvimento de algoritmos de Inteligência Artificial;
2. Compactação de arquivos para armazenamento em um banco de dados através um algoritmo
de compressão.
74
REFERÊNCIAS BIBLIOGRÁFICAS
APACHE SOFTWARE FOUNDATION. The Apache Jakarta Project. 2005. Disponível em
http://jakarta.apache.org/. Acessado em: 02 mai 2008.
ASSIS, Mateus Calçado. Sistemas de Informação Multimídia para conservação e
democratização de acervos históricos. 2005. 25 f. Monografia (Especialização em Informática,
Ênfase em Tecnologias da Informação e Multimídia) – Universisdade Federal de Minas Gerais,
Belo Horizonte, 2005.
BORBA, Sueli de Fátima Poppi; MORALES, Aran Bey Tcholakian. Aplicação de Banco de dados
orientado a objetos na modelagem multidimensional. In: SIMPÓSIO BRASILEIRO DE BANCO
DE DADOS, 21, 2006, Florianópolis. Florianópolis: 2006, 146 f.
BOSCARIOLI, Clodis; BEZERRA, Anderson; BENEDICTO, Marcos de; DELMIRO, Gilliard.
Uma reflexão sobre banco de dados orientados a objetos. In: CONGED – CONGRESSO DE
TECNOLOGIAS PARA GESTÃO DE DADOS E METADADOS DO CONE SUL, 4, 2006,
Paraná. Paraná: 2006, 12 f.
CA . Computer Associates. Disponível em: <http://www.ca.com/br>. Acesso em: 06 out. 2007.
EDELWEISS, Nina; GALANTE, Renata de Matos. Banco de dados orientado a objetos e
relacional-objeto. In: SIMPÓSIO BRASILEIRO DE BANCO DE DADOS e SIMPÓSIO
BRASILEIRO DE ENGENHARIA DE SOFTWARE, 20, 19, 2005. 46 f.
ELMASRI, Ramez; NAVATHE, B. Shamkant. Sistemas de banco de dados. 4. ed. São Paulo:
Pearson Addison Wesley, 2005.
FANTINI, Sérgio Rubens. Aplicação do gerenciamento eletrônico de documentos: estudo de
caso de escolha de soluções. 2001. 118 f. Dissertação (Mestrado em Engenharia de Produção) Universidade Federal de Santa Catarina, Florianópolis, 2001.
HARRINGTON, Jan L.. Object-oriented database design clearly explained. San Francisco:
Morgan Kaufmann Publishers, 2000.
IBM. Ibm Corporation. Disponível em: <http://www.ibm.com/br>. Acesso em: 01 out. 2007.
INTERSYSTEM. Intersystem Corporation. Disponível em: <http://www.intersystem.com.br>.
Acesso em: 06 out 2007.
JAKARTA. Apache Jakarta Project. Disponível em : http://jakarta.apache.org/. Acessado em 04
mai 2008.
JAVAZOOM. Javazoom.Net. Disponível em:
http://www.javazoom.net/jzservlets/uploadbean/uploadbean.html. Acesso em 02 abr. 2008.
KHOSHAFIAN, Setrag. Banco de dados orientado a objeto. Rio de Janeiro: Infobook, 1994.
NASSU, Eugénio A.; SETZER, Valdemar W. Bancos de dados orientados a objetos. São Paulo:
Edgard Blücher, 1999.
75
NETBEANS. NetBeans IDE. Disponível em: http://www.netbeans.org/products/ide/. Acessado em
03 mar. 2008.
ORACLE. Oracle Corporation. Disponível em: <http://www.oracle.com/global/br>. Acesso em:
01 out. 2007.
RICARTE, Ivan Luiz Marques. Sistemas de bancos de dados orientados a objetos. 1998. 41 f.
Dissertação (Mestrado em Engenharia da Computação e Automação Industrial ) – Faculdade de
Engenharia Elétrica e de Computação, Universidade Estadual de Campinas, São Paulo, 1998.
ROCHA, Carlos A. S.; RAICIKI, Helton Alixandre; ROCHA, Muriel F. B.; LUIZ, Rafael
Boaventura. Desenvolvimento de Ferramenta de Apoio a Atualização de Sistemas de
Informação Baseados no sistema de banco de dados Pós-Relacional Caché. 2008. 10 f.
Iniciação científica (Escola Superior de Criciúma) – Escola Superior de Criciúma, Santa Catarina,
2008.
SHIKIDA, Leonardo Kenji.; ANDRADE, Nélson Spangler de.; ARAÚJO, Arnaldo de
Albuquerque. Implementação de um protótipo de um sistema de informações multimídia para
documentos históricos. 1999. 18 f. Iniciação científica (Graduando em Ciência da Computação) –
Universidade Federal de Mimas Gerais, Minas Gerais, 1999.
SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de banco de dados.
5. ed. Rio de Janeiro: Elsevier, 2006.
SILVA, Enio Kilder Oliveira da, Um estudo sobre sistemas de banco de dados cliente/servidor.
2001. 99 f. Monografia (Graduação em Processamento de Dados) – Faculdade Paraibana de
Processamento de Dados, João Pessoa, 2001.
SILVA, Ricardo Czelusniak da. Benchmark em banco de dados multimídia: análise de
desempenho em recuperação de objetos multimídia. 2006. 55 f. Dissertação (Mestrado em Ciências
Exatas) – Universidade Federal do Paraná, Curitiba, 2006.
SOUZA, Flávio Rubens de Carvalho. Caché, Banco de dados Pós-relacional. 2005. 49 f.
SUN. Java Servlet Technology. 2008. Disponível em http://java.sun.com/products/servlet/.
Acessado em 15 abr. 2008.
VAUGHAN, Tay. Multimídia na prática. São Paulo: Makron Books, 1994.
VERSANT. Versant Object Technology. Disponível em: < http://www.versant.com>. Acesso em:
06 out. 2007.
76
APÊNDICES
77
A
DIAGRAMA DE CLASSES COMPLETO
Diagrama de Classes do sistema completo:
78
80
B
DADOS COLETADOS
Dados coletados para comparativo de armazenamento e recuperação de dados com
diferentes tipos de mídia.
Disco
VIDEO 1.avi
Bytes
Tamanho
16.312.320
Disco
Arquivo
Arquivo
KB
15.930
MP3 1.MP3
Bytes
Tamanho
4.697.307
Disco
Arquivo
KB
4.587
IMG 1.bmp
Bytes
Tamanho
1.725.078
Disco
Arquivo
KB
1.685
PDF 1.pdf
Bytes
Tamanho
5.221.877
KB
5.099
Tempos em Milisegundos
Armazenamento
Recuperação
1
797
0
2
344
0
3
250
0
4
453
0
5
515
0
Média
471,8
0
Tempos em Milisegundos
Armazenamento
Recuperação
1
62
0
2
79
0
3
78
0
4
63
0
5
78
0
Média
72
0
Tempos em Milisegundos
Armazenamento
Recuperação
1
31
0
2
16
0
3
31
0
4
15
0
5
16
0
Média
21,8
0
Tempos em Milisegundos
Armazenamento
Recuperação
1
78
0
2
94
0
3
78
0
4
79
0
5
78
0
Média
81,4
0
B / ms
B / ms
B / ms
B / ms
34.575
0
DB2
VIDEO 1.avi
Bytes
Tamanho
16.312.320
65.240
0
DB2
Arquivo
15.930
0
DB2
Arquivo
KB
MP3 1.MP3
Bytes
Tamanho
4.697.307
79.132
4.587
0
DB2
Arquivo
KB
IMG 1.bmp
Bytes
Tamanho
1.725.078
64.151
Arquivo
KB
1.685
PDF 1.pdf
Bytes
Tamanho
5.221.877
KB
5.099
Tempos em Milisegundos
Armazenamento
Recuperação
1
4968
2188
2
3687
2047
3
5953
1859
4
3297
1750
5
2953
1906
Média
4171,6
1950
Tempos em Milisegundos
Armazenamento
Recuperação
1
531
219
2
593
235
3
625
313
4
578
250
5
984
218
Média
662,2
247
Tempos em Milisegundos
Armazenamento
Recuperação
1
468
79
2
265
78
3
344
78
4
297
94
5
344
94
Média
343,6
84,6
Tempos em Milisegundos
Armazenamento
Recuperação
1
907
531
2
579
234
3
563
235
4
578
266
5
578
250
Média
641
303,2
B / ms
B / ms
B / ms
B / ms
3.910
8.365
Caché
VIDEO 1.avi
Bytes
Tamanho
16.312.320
19.017
Caché
Arquivo
Tempos em Milisegundos
7.093
15.930
Tempos em Milisegundos
20.391
Caché
Arquivo
KB
MP3 1.MP3
Bytes
Tamanho
4.697.307
5.021
4.587
Tempos em Milisegundos
17.223
Caché
Arquivo
KB
IMG 1.bmp
Bytes
Tamanho
1.725.078
8.146
Arquivo
KB
1.685
PDF 1.pdf
Bytes
Tamanho
5.221.877
Tempos em Milisegundos
KB
5.099
1
2
3
4
5
Média
B / ms
Armazenamento
Recuperação
13250
922
13937
172
13672
125
14890
141
13546
125
13859
297
1.177
54.924
1
2
3
4
5
Média
B / ms
Armazenamento
Recuperação
2844
109
2844
125
2844
125
3094
296
3453
94
3015,8
150
1.558
31.357
83
1
2
3
4
5
Média
B / ms
Armazenamento
Recuperação
312
125
547
125
375
156
407
140
750
109
478,2
131
3.607
13.169
1
2
3
4
5
Média
B / ms
Armazenamento
Recuperação
3593
94
3250
109
3343
109
4438
94
3282
109
3581,2
103
1.458
50.698
Download