Vantagens na Utilização de Banco de
Dados Objeto-Relacional
em Sistemas Laboratoriais
Ricardo Ferreira Schiavo
ESCOLA POLITÉCNICA DA
UNIVERSIDADE DE SÃO PAULO
1
Profª. Solange Nice Alves de Souza
Introdução




2
Bancos de dados objeto-relacionais
Sintaxe SQL99 e Oracle
Descrição do experimento
Análise de resultados obtidos
Modelo Objeto-Relacional



3
Bancos de dados orientado a objeto
suportam tipos complexos de dados, como
gráficos, imagens, multimedia, etc
Bancos de dados relacionais suportam
grandes volumes de dados e consultas
complexas
O Banco de dados objeto-relacional busca
aproveitar as vantagens de ambos
Modelo Objeto-Relacional


4
Muitos SGBDs orientados a objeto falharam
por oferecer as não oferecer a eficiencia de
otimização disponíveis e conhecidas em
SGBDs relacionais
OR-SGBDs oferecem muitas das vantagens
de OO, porém mantendo o as relações como
a abstração fundamental
SQL-99 e Oracle



5
INCITS - InterNational Committee for
Information Technology Standards
O padrão SQL-99 apresenta a maior parte
das funcionalidades objeto relacionais
Os diferentes fornecedores se basearam no
padrão porém com algumas diferenças na
sintaxe
Elementos Objeto-Relacionais - Oracle






6
Tipos de Objetos (UDT)
Nested Tables (Tabelas aninhadas)
References (REF)
VArrays (Varying Arrays)
Large Objects (LOBs)
Object View (Visão de Objetos)
Tipos definidos pelo usuário


Um “user-defined type” ou UDT é
essencialmente uma definição de classe,
com estrutura e métodos
Um UDT pode ser usado de duas formas:
–
–
7
Como uma linha em uma tabela
Como uma coluna de uma tabela
Definição de UDT

SQL99
CREATE TYPE <nome_do_tipo> AS (
<lista de atributos>
<lista de métodos>
);

8
Oracle
CREATE TYPE nome_do_tipo AS OBJECT
(
id NUMBER,
nome VARCHAR2(255),
MEMBER FUNCTION get_id RETURN NUMBER
);
/
SELECT e INSERT
SELECT t.campo_objeto.atributo,
t. t.campo_objeto.metodo()
FROM tabela t;
INSERT INTO tabela VALUES
(
1, ‘campo texto’, NOME_OBJ (11, ‘texto’)
);
(construstor, métodos de comparação (MAP) e ordem (ORDER)
criados automaticamente – ordem de atributos na definição)
9
Herança / Polimorfismo
CREATE TYPE Poligono AS OBJECT (
nome
varchar(20),
pontos
Points_obj,
MEMBER FUNCTION get_area RETURN NUMBER
)
NOT FINAL
NOT INSTANTIABLE
/
CREATE TYPE Quadrado UNDER Poligono (
OVERRIDING MEMBER FUNCTION
get_area RETURN NUMBER
);

10

É possível implementar herança múltipla
Utilização de herança em tabelas
Nested Tables
create type autor as object ( nome varchar(10) );
/
create type conj_autores as table of autor;
/
create type livro as object (
titulo varchar(20),
autores conj_autores);
/
create table livros of livro
nested table autores store as tabela_autores;
11
Definição de UDT






12
Tipos de Objetos (UDT)
Nested Tables (Tabelas aninhadas)
References (REF)
VArrays (Varying Arrays)
Large Objects (LOBs)
Object View (Visão de Objetos)
Experimento



LIMS
Pequena representação de um sistema laboratórial
Objetivos
–
–

Entidades
–
–
–
13
Obter descrição e resultado formatado de todos os tipos
Calcular regressão linear dos pontos do gráfico
Testes
Resultados (Text, Numeric, Date, Graph)
Pontos (100 pontos por gráfico)
Experimento
Result
Test
PK
TEST_ID
NAME
CREATED_ON
14
1
*
PK
RESULT_ID
FK1
TEST_ID
NAME
ORIGINAL_RESULT
RAW_NUMERIC_RESULT
RAW_DATETIME_RESULT
FORMATTED_RESULT
Points
1
*
FK1
RESULT_ID
X
Y
Diagrama Objeto-Relacional
result_objtyp
Test
PK
TEST_ID
-End1
NAME
CREATED_ON
1
-End3
*
-result_id
-name
-test_id
+get_id()
+show_super()
+show()
+formatted_result()
DATE_RESULT_OBJTYP
-RAW_DATETIME_RESULT
+show()
+formatted_result()
TEXT_RESULT_OBJTYP
-ORIGINAL_RESULT
POINT_TABTYP
+show()
+formatted_result()
*
POINT_OBJTYP
-X
-Y
15
*
NUMERIC_RESULT_OBJTYP
GRAPH_RESULT_OBJTYP
-RAW_NUMERIC_RESULT
-points <POINT_TABTYP>
+show()
+formatted_result()
+show()
+formatted_result()
+slope()
+intercept()
Scripts
16
OR_CriarEstrutura.sql
REL_CriarEstrutura.sql
OR_inserts.sql
REL_inserts.sql
Resultados - Inserts
Por execução
 4000 resultados
 4000 testes
 100.000 pontos gráfico
17
Por execução
 40.000 resultados
 40.000 testes
 1.000.000 pontos gráfico
Resultados - Selects
Volume dados
 20.000 resultados
 20.000 testes
 500.000 pontos grafico
18
Resultados - Selects
Volume dados
 140.000 resultados
 140.000 testes
 3.500.000 pontos gráfico
19
Resultados – Regressão Linear
500.000
20
pontos gráfico
O-R
Relacional
Elapsed: 00:00:00.20
Elapsed: 00:00:00.06
Statistics
---------------------------------------------------------3 recursive calls
0 db block gets
4163 consistent gets
0 physical reads
0 redo size
615 bytes sent via SQL*Net to client
381 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
Statistics
---------------------------------------------------------4 recursive calls
0 db block gets
1205 consistent gets
0 physical reads
0 redo size
512 bytes sent via SQL*Net to client
381 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
Resultados – Regressão Linear
3.500.000
21
pontos gráfico
O-R
Relacional
Elapsed: 00:00:17.16
Elapsed: 00:00:05.73
Statistics
---------------------------------------------------------132 recursive calls
0 db block gets
28074 consistent gets
19729 physical reads
0 redo size
616 bytes sent via SQL*Net to client
381 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
Statistics
---------------------------------------------------------5 recursive calls
0 db block gets
8142 consistent gets
5551 physical reads
0 redo size
512 bytes sent via SQL*Net to client
381 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
Resultados – Regressão Linear
3.500.000
22
pontos gráfico – 2ª execução
O-R
Relacional
Elapsed: 00:00:16.76
Elapsed: 00:00:04.86
Statistics
---------------------------------------------------------2 recursive calls
0 db block gets
27867 consistent gets
20061 physical reads
0 redo size
616 bytes sent via SQL*Net to client
381 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
Statistics
---------------------------------------------------------0 recursive calls
0 db block gets
8069 consistent gets
5438 physical reads
0 redo size
512 bytes sent via SQL*Net to client
381 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
Conclusão




23
Os componentes objeto-relacional presentes no
Oracle permitem uma melhor organização da
hierarquia das entidades e do código
A performance e escalabilidade de tabelas de
objetos ainda é inferior a estrutura equivalente
relacional, porém satisfatórias
Podem ser criados métodos para realizar operações
nos elementos complexos (LOBs, multimídia) sem
que seja necessária a transmissão de toda a
informação da base de dados para os clientes
Novas tendências de Mapeamento objeto-relacional
(ORM)
Download

3 Modelo Objeto-Relacional - PCS