3 Modelo Objeto-Relacional - PCS
Download
Report
Transcript 3 Modelo Objeto-Relacional - PCS
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)