Bases de Dados Relacional/Objeto e NoSQL Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática
SGBDs Principais tarefas Gerir grandes volumes de dados Suportar acessos eficientes Garantir a concorrência Garantir a integridade Garantir a segurança Garantir a recuperação Traduzir do nível lógico para o nível físico Disponibilizar ferramentas para o desenvolvimento de BDs e aplicações 2
Bases de Dados Relational/Objeto Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática
BDs relacional/objeto Na década de noventa surgiu um grande interesse em integrar conceitos do paradigma orientado por objetos no modelo relacional, surgindo assim, o modelo de dados relacional/objeto [Stonebraker 1996]. 4
Caraterísticas do modelo R/O Através de um rico sistema de tipos de dados, é possível modelar e manipular os dados de uma forma mais natural do que usando relações. Através de classes e hierarquias de classes é possível partilhar e reutilizar software e esquemas, o que dificilmente se consegue em sistemas relacionais. Através de tipos de dados abstratos, é possível proteger e prevenir erros de manipulação providenciando acessos aos objetos através de funções bem definidas. 5
ODL Object Definition Language Integração do modelo orientado por objectos em SQL Tipos definidos pelo utilizador Tipos abstratos de dados Tipos de linha com nome Tipos distintos Construtores de tipos Conjuntos, listas e sacos Funções e procedimentos definidos pelo utilizador Objetos de grande dimensão BLOBs e CLOBs 6
ODL Sintaxe Declaração de interfaces interface <nome> { <lista de propriedades> 7
ODL Interfaces Exemplos de declaração de atributos interface Filme{ attribute string nome; attribute integer ano; attribute integer duracao; attribute enum Pelicula{cor, pretoebranco} tipopelicula; interface Ator{ attribute string nome; attribute Struct Mor{string rua; string cidade} morada; 8
ODL Interfaces Exemplos de declaração de relacionamentos interface Filme{ attribute string nome; relationship Set <Ator> Atores; interface Ator{ attribute string nome; relationship Set <Filme> Participa; 9
ODL Interfaces Exemplos de declaração de relacionamentos inversos interface Filme{ attribute string nome; relationship Set <Ator> Atores inverse Ator::Participa; interface Ator{ attribute string nome; relationship Set <Filme> participa inverse Filme::Atores; 10
ODL Tipos de dados Atómicos inteiro, float, string, enumerado, etc Complexos Set <T> Bag <T> List <T> Array <T> Struct S {T1 x, T2 y, } 11
ODL Subclasses/Superclasses interface BandaDesenhada : Filme { relationship Set <Ator> vozes; interface FilmeTerror : Filme { attribute string arma; Heranças múltiplas interface BDTerror : BandaDesenhada, FilmeTerror { 12
ODL Chaves e Extent interface Filme (key(nome,ano)){ attribute string nome; relationship Set <Ator> Atores inverse Ator::Participa; O extent permite definir o conjunto de objetos da classe interface Filme (extent Filmes key(nome,ano)){ attribute string nome; relationship Set <Ator> Atores inverse Ator::Participa; 13
ODL Exemplo completo interface Filme (extent Filmes key(nome,ano)){ attribute string nome; relationship Set<Ator> Atores inverse Ator::Participa; relationship Estudio Produzido inverse Estudio::Produz; float duracaohoras() raises (duracaoinexixtente); NomesActores(out Set<String>); OutrosFilmes(in Ator, out Set<Filme>) raises (atorinexixtente); 14
Bases de Dados NoSQL Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática
NoSQL Sistemas NoSQL NoSQL significa Not only SQL. Mais fáceis e mais rápidos de configurar implementar. Grande escalabilidade. A garantia de consistência é relaxada em detrimento de uma performance e eficácia superiores. NoSQL (wikipedia) 16
NoSQL Sistemas NoSQL Alternativa aos SGBDs relacionais tradicionais. Suportam esquemas flexíveis. Mais fáceis e mais rápidos de configurar implementar. Grande escalabilidade. A garantia de consistência é relaxada em detrimento de uma performance e eficácia superiores. o Não suportam uma linguagem de interrogação declarativa. o Menos fiáveis. 17
NoSQL Exemplos Grafo de uma rede social Encontrar todos os amigos de um determinado utilizador. Encontrar todos os amigos dos amigos um determinado utilizador. Encontrar todos as amigas dos amigos um determinado utilizador. Encontrar todos os amigos dos amigos dos amigos de um determinado utilizador. Páginas na wikipédia Grande quantidade de páginas. Existe uma combinação de dados estruturados e dados não estruturados. Ir buscar todos os parágrafos introdutórios de todas as páginas acerca de físicos anteriores a 2010. 18
NoSQL Implementações Abordagens - Framework MapReduce (OLAP) - Armazenamento key-value (OLTP) - Armazenamento de documentos - Bases de dados baseadas em grafos 19
NoSQL framework MapReduce Desenvolvido pelo Google Não existe um modelo de dados. Os dados são guardados em ficheiros. Existem funções especificas - map(), reduce(), reader(), writer() e combiner(). O sistema fornece o processamento de dados, é tolerante a falhas e escalável. Exemplos Hadoop 20
NoSQL funções MapReduce Map() divide o problema em subproblemas Exemplo: map(item) -> 0 ou mais pares <key, value> Reduce() dá trabalho aos subproblemas, combina resultados Exemplo: reduce(key, lista-de-valores) -> 0 ou mais registos 21
NoSQL Armazenamento key-value Key-value Interface muito simples. Modelo de dados: pares (key, value). Operações: insert(key, value), fetch(key), update(key) e delete(key). Implementação:eficientes, escaláveis e tolerantes a falhas Registos distribuídos por nós baseados em keys Sistema de réplicas Transações sobre registos únicos nem sempre garantindo consistência Exemplos Google BigTable, Amazon Dynamo, Cassandra,Voldemort e 22 Hbase.
NoSQL Armazenamento de documentos Semelhante ao Key-value Documentos (JSON, XML, ). Modelo de dados: pares (key, document). Operações: insert(key, document), fetch(key), update(key) e delete(key). As operações de fetch podem ser baseadas nos conteúdos dos documentos. Exemplos CouchDB, MongoDB e SimpleDB. 23
NoSQL BDs baseadas em grafos A interface e a linguagem de interrogação são variáveis. Single-step versus path expressions versus full recursion. RDF(Resource Description Framework) triple stores podem ser mapeados para bases de dados baseadas em grafos. Exemplos Neo4j, FlockDB, Pregel. 24