Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Sistema de Tipos
Os sistemas de BD relacionais suportam uma coleco pequena e fixa de tipos de dados (inteiros, reais, datas, booleanos, cadeias de caracteres, ), os quais provaram ser adequados para os domnios de aplicao tradicionais, tais como o processamento de dados administrativos. No entanto, em domnios de aplicaes novos (CAD/CAM, multimedia, etc), tm de ser manipulados tipos de dados muito mais complexos.
Tipicamente, estes dados complexos tm sido guardados em sistemas de ficheiros (OS file systems), ou estruturas de dados especializadas, e no em SGBD.
Regras
As regras (rules) so um nome genrico para cdigo que activado automaticamente quando certos eventos ocorrem.
SGBDOO
Os Sistemas de Gesto de Bases de Dados Orientados por Objectos (SGBDOO)
Adicionam persistncia atravs de objectos usados em linguagens de programao OO: C++, Java Fazem objectos da base de dados aparecer como objectos da Linguagem de Programao
Podem ser usados apontadores neste modelo de dados e junes eficientes baseadas em apontadores.
Melhores na modelizao de objectos complexos Melhor performance em domnios especficos No existe desadaptao de impedncias (impedance mismatch)
A desadaptao de impedncias eliminada em virtude da base de dados se tornar uma extenso persistente para a linguagem, em vez de ser um servio externo, com o qual preciso falar atravs de uma interface estreita e limitada.
Ter de existir um compromisso entre flexibilizar do encapsulamento (permitindo s queries violar o encapsulamento em determinadas circunstncias) e restringir severamente a classe de possveis queries.
Discute-se que um retrocesso ao modelo rede! No h um suporte claro para interrogaes Problemas de segurana no acesso aos dados Ainda no atingiram a mesma maturidade dos SGBDR
10
O que um ODBMS?
Mas, afinal, que um ODBMS (Object Database Management System)? Diferentes pessoas do diferentes respostas.
1989: 1 Manifesto
O modelo relacional est velho e inadequado. O primeiro manifesto, [atkinson89], dizia: OK, ningum concorda no que um OODBMS; deste modo, vamos dar um conjunto de regras de ouro. Se um sistema de base de dados respeitar estas regras, podemos design-lo OO. As regras acentuaram, principalmente, as propriedades OO e consideraram as bases de dados relacionais como legacy systems (sistemas ultrapassados) no adequadas para os novos tipos de aplicaes.
Noes SGBDOO e SGBDRO
11
1995: 3 Manifesto
Estender o modelo relacional (permitindo a definio de tipos de dados novos), mas deitar fora o SQL O 3 manifesto, [darwen95], mais tcnico e formal que os dois primeiros, apresentou um sistema enraizado no modelo relacional. No entanto, alguns autores, [cadf90], defendiam que o SQL no devia ser suportado, porque uma plataforma defeituosa dos ideais relacionais.
Noes SGBDOO e SGBDRO
12
SGBD Relacional-Objecto
Ideia: adicionar caractersticas OO ao sistema de tipos do SQL Plain old SQL, mas
Colunas podem ser de novos tipos (Abstract Data Types - ADTs) Mtodos definidos pelo utilizador em ADTs Colunas podem ser de tipos complexos (ateno 1 Forma Normal!) Tipos referncia e deref Herana e herana em coleces Os velhos esquemas de SQL funcionam! (compatibilidade para trs)
13
CREATE TABLE Frames (frameno integer, image jpeg_im, category integer); CREATE TABLE Categories (cid integer, name text, lease_price float, comments text); CREATE TYPE theater_t AS ROW (tno integer, name text, address text, phone integer) CREATE TABLE Theaters OF TYPE theater_t;
Tipo Complexo
ADT
CREATE TABLE Nowshowing (film integer, theater Tipo ref(theater_t) with scope Theaters, start Referncia date, end date); CREATE TABLE Films (filmno integer, title text, stars Tipo setof(text), director text, budget float); CREATE TABLE Countries (name text, boundary polygon, population integer, language text)
Noes SGBDOO e SGBDRO 14
Coleco
Os ADTs so manipulados por mtodos definidos pelo utilizador. Exemplos: O mtodo thumbnail produz uma imagem reduzida da imagem original. O mtodo is_sunrise uma funo booleana que analisa uma imagem e devolve V (verdadeiro) se (se e s se) h um por-do-sol na imagem. O mtodo is_herbert devolve V se (se e s se) o Herbert est na imagem. Estes mtodos so escritos numa linguagem tipo C e registados na BD, podendo ser usados em queries da mesma maneira que os mtodos internos (built-in) do SQL (=, +, -, <, >, etc.)
Noes SGBDOO e SGBDRO 15
O atributo stars da tabela films um conjunto de nomes de cada estrela do filme. Atributos com conjuntos de valores so comparados com mtodos para conjuntos:
unio (), interseco (), pertena (), etc.
O mtodo radius retorna um crculo centrado no seu 1 argumento com um raio igual ao 2 argumento.
Noes SGBDOO e SGBDRO 16
Construtores de Tipos
O utilizador pode usar construtores de tipos para gerar novos tipos:
setof(base) - tipo conjunto de elementos do tipo base
- Um set um conjunto de elementos do tipo base, sem repetio e no ordenado.
bagof(base)
- Uma bag uma coleco desordenada de elementos, que podem ser repetidos.
listof(base)
- Uma list um conjunto ordenado de valores do tipo base.
ARRAY(base) - tipo vector de elementos do tipo base RECORDOF(c1:t1, , ck:tk) - tipo registo com n campos
Setof, listof, bagof, ARRAY so chamados tipos coleco ou bulk data types. Os tipos coleco podem ser encaixados:
ARRAY( ROW(age: integer, sal: integer) )
Noes SGBDOO e SGBDRO 17
Por iterao dos construtores obtmse estruturas arbitrariamente complexas Tipos + Mtodos = Classe Os objectos de uma classe so constantes (objectos imutveis) ou variveis desse tipo (mutveis) {2,5,7} objecto imutvel da classe Cint = SETOF(inteiro) s:Cint uma varivel e pode guardar o conjunto {2,5,7}
18
A combinao de um tipo de dados atmico e dos seus mtodos associados chamado Abstract Data Type, ou ADT.
Elevada modularidade facilita a manuteno O encapsulamento das variveis internas impe disciplina no acesso informao. Obtm-se melhor qualidade e robustez ao software.
Noes SGBDOO e SGBDRO
19
Um OID pode ser usado para ser referido (ou apontado) de qualquer parte dos dados -- Tipos Referncia
A referncia tem um tipo (semelhante ao tipo de um apontador numa LP). Exemplo: ref(theater_t) um tipo representando uma referncia para um objecto do tipo theater_t Uma referncia para um tipo T, REF T, um tipo cujos valores so adequados para encontrar eficientemente um valor do tipo T:apontador para endereo de memria virtual, ou uma localizao num disco de uma mquina (distribuio).
Objectos complexos
objectos atmicos
25, Joo, 1.3
conjunto
{Joo, Maria, Susana}
tuplo
[ Nome:Pedro, Idade:25 ]
tuplo hierrquico
[ Nome:[Prprio: Joo, Apelido:Costa], Idade:25, Filhos: {Pedro, Paulo, Maria} ]
conjunto de tuplos
{ [Nome:Pedro, Idade:25], [Nome:Joo,Idade:7], [Nome:Maria, Idade:13] }
relao encaixada
{ [Nome:Pedro, Filhos:{Max, Susana}], [Nome:Joo, Filhos:{Maria, Francisco}] }
Noes SGBDOO e SGBDRO 22
Esposo Endereo
Prprio Apelido Filhos No Joo Costa Cidade Rua Costa Maria 34 Braga Direita Antnio Joana
Apelido Prprio Apelido Filhos No Maria Costa Cidade Rua Costa Joo 34 Braga Direita Antnio Joana Apelido
tuplo conjunto
24
Igualdade profunda (deep equal). Dois objectos so profundamente iguais sse tm o mesmo tipo e os valores do contedo so profundamente iguais; Exemplo: Consideremos 2 objectos complexos da tabela Nowshowing
ROW(538, t89, 6-3-2001, 8-7-2001) ROW(538, t33, 6-3-2001, 8-7-2001) Estes objectos no so shallow equal porque diferem no segundo atributo. No entanto, os objectos podem ser deep equal, se os OIDs t89 e t33 referirem objectos do tipo theater_t que tm o mesmo valor.
Noes SGBDOO e SGBDRO
25
tuplo conjunto
Maria
26
endereo
Queries envolvendo
Coleces Encaixadas
Films filmno title 67 77 Casablanca Seven stars {Bogart, Bergman} {Freeman, BradPitt}
SELECT F.filmno FROM Films F WHERE count(F.stars)>1; Este exemplo ilustra a utilizao de um operador de agregao (COUNT) num conjunto encaixado.
O operador count aplicado uma vez por cada tuplo da tabela films.
SELECT F.filmno, F.title, Films_flat S AS star FROM Films F, F.stars AS S; filmno title Este exemplo gera uma verso flat da tabela films 67 67 77 77 Casablanca Casablanca Seven Seven
Para cada valor de F, a varivel S sucessivamente limitada pelo conjunto existente no campo F.stars. Noes SGBDOO e SGBDRO
28
Interrogaes com caminhos podem ser re-escritas como junes. Porque que uma boa ideia?
SELECT E->Dept->Mgr.name FROM Emp E; SELECT M.name FROM Emp E, Dept D, Mgr M WHERE E.Dept = D.oid AND D.Mgr = M.oid;
Herana
Tal como em C++, til especializar tipos:
Exemplo: Um Caf-Teatro um teatro, mas tem um atributo adicional representando o menu do teatro CREATE TYPE theatercafe_t UNDER theater_t (menu text); O novo tipo theatercafe_t herda os atributos e mtodos de theater_t, adicionando-lhe o atributo menu, do tipo text
Mtodos de theater_t podem ser aplicados aos seus sub-tipos (mas no vice-versa)
Podem redefinir alguns destes mtodos. Podem definir mtodos adicionais.
O mecanismo de herana cria uma relao explcita na BD entre o sub-tipo (theatercafe_t ) e o super-tipo (theater_t)
Um objecto do sub-tipo tambm considerado um objecto do super-tipo. Quaisquer operaes que so aplicadas ao super-tipo tambm so aplicadas ao sub-tipo.
Noes SGBDOO e SGBDRO
30
31
As duas aproximaes tendem para um ponto comum, mas atingemno a partir de diferentes caminhos. A aproximao OODBMS comea numa arquitectura object oriented e adiciona facilidades para expressar queries declarativas.
alguns dos vendedores de tecnologia de Objectos esto a comear a fornecer suporte para SQL e grandes bases de dados, com um nmero alargado de utilizadores concorrentes.
A aproximao ORDBMS comea numa arquitectura relacional e extende o sistema de tipos com objectos.
os vendedores de SGBD relacionais esto a comear a fornecer extenses requeridas para gerir novos tipos de dados
Noes SGBDOO e SGBDRO
32
SGBD: alternativas
Ao nvel dos SGBD existem, actualmente, 3 alternativas:
SGBD Relacionais (SGBDR / RDBMS) SGBD Orientado por Objectos (SGBDOO / OODBMS) SGBD Relacional-Objecto (SGBDRO / ORDBMS)
SGBD Relacionais
Os SGBDR so, actualmente, a tecnologia de base de dados dominante. Provaram a sua capacidade para gerir grandes volumes de dados bem estruturados. A tecnologia est madura e bem compreendida.
33
SGBD Relacional-Objecto
Os SGBDRO tentam fazer a ponte entre as tecnologias Relacional e OO, extraindo o melhor de ambas. A maior parte dos vendedores de SGBD relacionais esto a mover-se neste sentido, de modo a que os SGBD suportem objectos complexos do mesmo modo que as estruturas relacionais.
34
35
36
A partir do grfico, podemos ver que as aplicaes que no so facilmente modelizadas com um SGBDR, so candidatas ideais para uma SGBDOO.
37
SGBDOO
SGBDRO SGBDR
Mike Stonebraker props esta matriz. Previso: a curto/mdio prazo, a maioria das aplicaes ir para o canto superior direito SGBDRO
38
Ambos fornecem:
Funcionalidades de SGBD, tais como controlo de concorrncia, recuperao e suporte de ndices.
39
Resumo SGBDOO/RO
SGBDOO: persistent OO programming
De uso difcil Sem SQL mas com OQL
- Apesar de termos definido um SGBDOO como uma LP com suporte para objectos persistentes, o facto de um SGBDOO suportar tipos de coleco torna possvel fornecer uma linguagem de interrogao sobre coleces. - De facto, foi desenvolvido um standard pelo Object Database Management Group (ODMG) chamada Object Query Language (OQL). - A OQL semelhante ao SQL, com uma sintaxe SELECT-FROM-WHERE, suportando, tambm, GROUP BY, HAVING e ORDER BY e muitas das extenses propostas para o SQL3. - O OQL suporta tipos de construo, incluindo sets, bags, arrays e lists. - O OQL tambm suporta tipos de referncia, caminhos de expresso, ADTs e herana e extenses a tipos e queries encaixadas (estilo SQL).
40
Referncias
Database Management Systems, Cap 21 Object-Database Systems Raghu Ramakrishnan McGraw-Hill International Editions A Gentle Introduction to Relational and Object Oriented Databases Frank Stajano, Novembro 1995 Olivetti Research Limited Limitaes do Modelo Relacional e Outros Modelos, Correia Lopes, FEUP, 2000 Modelo Orientado por Objectos, Gabriel David, FEUP
42