Prof. Carlos Eduardo Santos Pires

Slides:



Advertisements
Apresentações semelhantes
BANCO DE DADOS I Prof. Ricardo Santos.
Advertisements

Banco de Dados Prof. Antonio.
Curso: Banco de Dados I Análise de Sistemas PUC Campinas
Curso: Banco de Dados I Análise de Sistemas PUC Campinas
Evolução dos SGBD’s (2ª Parte).
Resumo 1.1) Introdução 1.2) Abordagem Convencional de Arquivos
Funcionalidades de um SGBD
SISTEMAS DE INFORMAÇÃO
Sistemas Distribuídos
Maurício Edgar Stivanello
Motor de Armazenamento
SGBD.
Sistema Gerenciador de Banco de Dados SGBD
Sistema Gerenciador de Banco de Dados SGBD
Bacharelado em Ciência da Computação
Introdução aos Sistemas Gerenciadores de Banco de Dados
Mapeamento Objeto Relacional
Iniciando Banco de Dados
Professora: Aline Vasconcelos
Profa. Aline Vasconcelos
Conceitos Básicos Dado: fato do mundo real que está registrado e possui um significado implícito no contexto de um domínio de aplicação Exemplos: endereço,
Material III-Bimestre Wagner Santos C. de Jesus
Grupo 5: Fernando Lourenço Pinho Costa Rafael de Souza Santos
Administração de Sistemas de Informação Banco de Dados
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Tecnologias de Linguagens para Banco de Dados
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
É um conjunto de registos dispostos numa estrutura regular que possibilita a reorganização dos mesmos e a produção de informação com a menor redundância.
Otimizador de consultas
Design Patterns / Acesso ao banco de dados (java.sql)
Prof. Kelly E. Medeiros Bacharel em Sistemas de Informação
ACESSO A BASE DE DADOS.
MapReduce Conceitos e Aplicações
1.
Um novo tipo de banco de dados não relacional
Bancos de dados NOSQL (Not Only SQL)
Exercícios SGBD - CESPE
Controle de concorrência
Banco de Dados Parte 04 Ceça. Ceça Moraes 2 Conteúdo  Os três níveis da arquitetura  Mapeamentos  Arquitetura cliente-servidor.
Treinamento PHP Módulo 2 PHP Avançado Waelson Negreiros waelson.com.br “Está conosco o Senhor dos Exércitos”
NoSQL colunas Jairo Tiburtino dos Santos.
Contexto da disciplina
A abordagem de banco de dados para gerenciamento de dados
Sistemas NoSQL - Chave-Valor
SGBD Distribuído Lílian Simão Oliveira.
O primeiro passo para a nuvem
Campus de Caraguatatuba Aula 2: Introdução a Tecnologia de BD
Introdução a Banco de Dados Aula 04
Teste.
TECNOLOGIAS E LINGUAGENS PARA BANCO DE DADOS I
Google Wave (Arquitetura) Ademir Junior / Felipe Ferreira / Fernando Kakimoto.
DESENVOLVIMENTO DE SOFTWARE AULA 7 – Sistemas de Banco de Dados
1 24/4/ :29 FMU – 1. Semestre – Tecnologia – Analise e Desenvolvimento de Sistemas Professor: Eduardo Silvestri Aluno:Clóvis de Oliveira- RA
LINQ e Entity Framework
NoSQL UFRPE. NoSQL ? NoSQL...  São diferentes sistemas de armazenamento que vieram para suprir necessidades em demandas onde os bancos de dados tradicionais.
UCSal – Bacharelado em Informática
Arquitetura de computadores
UCSal – Bacharelado em Informática
UCSal – Bacharelado em Informática
Plano de Ensino Conceitos e Características Tipos de Banco de Dados
1 Database Systems, 8 th Edition Sistemas de Banco de Dados: Projeto, Implementação e gestão Oitava Edição Capítulo 2 Modelo de Dados.
Temas para Monografia: Vou Escolher Logo o Meu!!!
1 Database Systems, 8 th Edition Sistemas de Banco de Dados: Projeto, Implementação e gestão Oitava Edição Capítulo 2 Modelo de Dados.
Banco de Dados Distribuídos Sílvia Cristina de Matos Soares
Copyright © 2011 Ramez Elmasri and Shamkant Navathe slide 1 Tópicos  Introdução  Um exemplo  Características da abordagem de banco de dados  Vantagens.
Modelos de dados.
Graph Database Neo4j Edson Barboza.
Bruna Cavallero Martins Universidade Católica de Pelotas.
Programação para Internet Aula 11 SQL (Introdução a linguagem, comandos de modificação: Create, Drop, Alter, Insert, Delete, Update)
Modelagem de Banco de Dados: Conceitos
Transcrição da apresentação:

Prof. Carlos Eduardo Santos Pires cesp@dsc.ufcg.edu.br Sistemas NoSQL Prof. Carlos Eduardo Santos Pires cesp@dsc.ufcg.edu.br

Agenda Motivação Sistemas NoSQL Conclusões Definição Características Modelos de Armazenamento de Dados Modelos de Dados Controle de Concorrência Conclusões Sistemas NoSQL

Bancos de Dados Relacionais Dados são estruturados de acordo com o modelo relacional Padrão para a grande maioria dos SGBDs SQL Server, Oracle, PostgreSQL, MySQL, DB2, etc. Elementos básicos Relações (ou tabelas) e registros (ou tuplas) Características fundamentais Restrições de integridade (PK, FK, UK, CK, NN) Normalização Linguagem SQL (Structured Query Language) Sistemas NoSQL

Bancos de Dados Relacionais A estrutura é pouco flexível Tudo bem, usemos SGBDOO e SGBDOR Porém... O volume de dados manipulados por alguns sistemas computacionais vem crescendo em ritmo acelerado (web 2.0) Google: petabytes Milhares de usuários acessando dados simultaneamente Demanda por escalabilidade é cada vez maior Sistemas NoSQL

Como escalonar BDs Relacionais? Alternativa 1: Escalonamento vertical Muitos cores e/ou CPUs que compartilham memória RAM e discos Oracle RAC (Real Application Cluster) Sistemas NoSQL

Como escalonar BDs Relacionais? Alternativa 1: Escalonamento vertical Custo 1 milhão de dólares Mesmo assim, é insuficiente se o número de dados cresce em ritmo muito intenso O problema passa a se concentrar no acesso à base de dados Sistemas NoSQL

Como escalonar BDs Relacionais? Alternativa 2: Escalonamento horizontal Aumentar o número de servidores Distribuir o processamento de dados em muitos servidores, sem que haja compartilhamento de memória RAM ou disco entre estes servidores Para escalar um BDR através de múltiplas máquinas não podemos simplesmente ligar mais uma máquina rodando o banco e esperar que tudo funcione Precisamos de uma série de configurações e alterações nas nossas aplicações para fazer tudo funcionar na nova arquitetura distribuída Sistemas NoSQL

Modelo de Dados Mas, além de escalabilidade, existe a questão do modelo de dados O modelo de dados relacional satisfaz de forma eficiente as necessidades de todos os tipos de aplicação? Normalização Fragmenta os dados Joins? More joins? Sistemas NoSQL

Sistemas NoSQL Abreviação de Not only SQL (não apenas SQL) Dezenas disponíveis na Web Open-source ou não Projetados por diversos tipos de desenvolvedores Implementações NoSQL Ainda estão definindo um padrão próprio Cada projeto foi concebido para resolver um problema particular Sistemas NoSQL

Sistemas NoSQL Projetados para escalonar aplicações simples utilizando vários servidores Objetivo não é substituir o Modelo Relacional, mas apenas em casos nos quais seja necessária uma maior flexibilidade da estruturação do BD Sistemas NoSQL

Sistemas NoSQL “NoSQL é um termo genérico para uma classe definida de banco de dados não-relacionais que rompe uma longa história de banco de dados relacionais e suas propriedades ACID” Império do Modelo Relacional IV Reich – “o Reich dos 43 anos” Poucas variações ao longo do tempo Edgar F. Codd *August 23, 1923 +April 18, 2003 Codd, E.F. (1970). "A Relational Model of Data for Large Shared Data Banks". Communications of the ACM 13 (6): 377–387. doi:10.1145/362384.362685. Sistemas NoSQL

Sistemas NoSQL Paradigma recente (de 2008 para cá) Motivados pelas aplicações da Web 2.0 Twitter, WIKI, Facebook, Blogs, etc. Aplicações que envolvem milhares ou milhões de usuários conectados simultaneamente realizando operações simples de leitura e escrita O que é uma “operação simples”? Busca, leitura e escrita em um único registro ou em um conjunto pequeno de registros Sistemas NoSQL

Características dos Sistemas NoSQL Habilidade de escalonar horizontalmente operações simples com vários servidores Habilidade de replicar e distribuir (particionar) dados em vários servidores Interface de chamada simples Modelo de controle de concorrência menos rígido que o ACID Livres de esquema: habilidade de atribuir dinamicamente novos atributos aos registros de dados Sistemas NoSQL

Características dos Sistemas NoSQL Sistemas NoSQL possuem várias características em comum Livres de esquema Alta disponibilidade Escalabilidade Mesmo assim, possuem diversas características únicas quanto ao Modo de armazenamento dos dados Modelo de dados Sistemas NoSQL

Modo de Armazenamento de Dados Temos os sistemas que... mantêm suas informações em memória realizando persistências ocasionais Scalaris, Redis mantêm suas informações em disco CouchDB, MongoDB, Riak, Voldemort são configuráveis BigTable, Cassandra, Hbase, HyperTable Sistemas NoSQL

Modelo de Dados Existem quatro categorias: Sistemas baseados em armazenamento chave-valor Sistemas orientados a documentos Sistemas orientados à coluna Sistemas baseados em grafos Sistemas NoSQL

Baseados em Armazenamento Chave-Valor Existe uma coleção de chaves únicas e de valores, os quais são associados às chaves Um índice único é utilizado para encontrar os valores Sistemas NoSQL

Baseados em Armazenamento Chave-Valor Modelo simples, restrito (buscas) e escalonável Fornecem mecanismos de persistência, replicação, versionamento, bloqueios, transações, etc. A interface oferece operações de inserção, remoção e index lookups Exemplos de Sistemas NoSQL Riak, Redis, Scalaris Sistemas NoSQL

Baseados em Armazenamento Chave-Valor Chave à esquerda e um valor (objeto) à direita Chave pode ser um string, inteiro, etc. Como não existe repetição de chave, é possível consultar apenas pela chave user1923_color Red user1923_age 18 user3371_color Blue user4344_color Brackish user1923_height 6' 0“ user3371_age 34 Sistemas NoSQL

Orientados a Documentos Documentos são as unidades básicas de armazenamento e estes não utilizam necessariamente qualquer tipo de estrutura pré-definida (esquema) Os documentos são indexados e um mecanismo simples de consulta é oferecido Sistemas NoSQL

Orientados a Documentos Documento do CouchDB Objeto com um identificador único e certos campos Possui cinco campos e seus respectivos valores O sistema NoSQL ‘que se vire’ para indexar Exemplos MongoDB e CouchDB Sistemas NoSQL

Orientados à Coluna Muda-se o paradigma de orientação a registros para orientação a colunas BD orientado a registro 1, Smith, Joe, 40000; 2, Jones, Mary, 50000; 3, Johnson, Cathy, 44000; BD orientado a coluna 1, 2, 3; Smith, Jones, Johnson; Joe, Mary, Cathy; 40000, 50000, 44000; Sistemas NoSQL

Orientados à Coluna Para sistemas que possuem carga de trabalho com um pequeno número de consultas complexas sobre todos os dados de colunas Similar ao processamento OLAP SUM(valor), AVG(quantidade), MAX(total) Exemplo Cassandra e BigTable Sistemas NoSQL

Baseados em Grafos Já tentou modelar/consultar uma hierarquia em bancos de dados relacionais? SGDB Oracle START WITH CONNECT BY SELECT lpad(' ', 2*level) || child FROM prune_test START WITH parent IS NULL CONNECT BY PRIOR child=parent; Sistemas NoSQL

Baseados em Grafos Dados são armazenados em nós de um grafo cujas arestas representam o tipo de associação entre esses nós Sistemas NoSQL

Baseados em Grafos Nós representam entidades como pessoas, grupos, itens, etc. Os objetos possuem propriedades Arestas Conectam nós distintos entre si ou nós a propriedades Representam o relacionamento entre os mesmos Exemplo Neo4j Sistemas NoSQL

Complexidade dos dados Modelos de Dados NoSQL Volume de dados chave-valor colunas documentos grafo Complexidade dos dados Sistemas NoSQL

Controle de Concorrência Bancos de Dados Relacionais Uso de bloqueios (locks) para garantir que dois usuários não atualizem o mesmo item de dados no mesmo instante Bancos de Dados NoSQL Estratégias usadas permitem um maior grau de concorrência Sistemas NoSQL

Controle de Concorrência BDR ACID = Atomicity, Consistency, Isolation, and Durability NoSQL BASE = Basically Available, Soft state, Eventually consistent Desempenho e escalabilidade são conseguidos relaxando-se algumas propriedades Sistemas NoSQL

Controle de Concorrência Consistência Eventual Eventual em português Pode acontecer ou não Eventual em inglês Vai acontecer em algum momento Pode não ser agora, mas vai acontecer Exemplo Transferência bancária no sistema financeiro brasileiro Portanto, no mundo NoSQL a tradução melhor seria Consistência em momento indeterminado Sistemas NoSQL

Controle de Concorrência Consistência Eventual Se nenhuma nova atualização for realizada sobre o objeto, eventualmente todos os acessos à esse objeto retornarão o último valor atualizado Quando uma escrita for realizada no banco, não se pode garantir que, a partir daquele momento, todos os outros processos terão acesso apenas ao dado atualizado Não há garantia que os dados lidos estão sempre atualizados Atualizações são eventualmente propagadas em todos os nós Sistemas NoSQL

Controle de Concorrência Modelo ACID Força a consistência ao final de cada operação Modelo BASE Permite que o BD esteja eventualmente em um estado consistente Sistemas NoSQL

Controle de Concorrência Exemplo: Shopping Cart da Amazon É possível comprar um produto que não esteja em estoque É muito raro não ter o produto em estoque É muito custoso verificar se há estoque do produto Então é melhor vender sem verificar Se não tiver em estoque, manda mensagem com desculpas ou dá um desconto em um produto Sistemas NoSQL

NewSQL SQL NoSQL Padrões Durabilidade Segurança Gatilhos Chave estrangeira Chave composta Transação 2 phase commit Relacional NoSQL Flexibilidade Grafos Key-value store Documento Escalabilidade Commodity hardware RAM Distributed APIs Sistemas NoSQL

Conclusões Mudança para a abordagem NoSQL deve levar em conta as necessidades do problema Fatores a serem analisados Escalabilidade do sistema Consistência de dados Facilidade de uso Existência ou não de linguagens de consulta Cada fator tem um preço Sistemas NoSQL

Conclusões SGBDRs Soluções muito mais maduras e experimentadas Transações dos SGBDRs ainda são a melhor forma de se trabalhar com o problema da consistência dos dados Os sistemas NoSQL servem para uma gama de problemas que nem sempre são os mesmos dos BDRs Sistemas NoSQL

Conclusões Não existe, em qualquer abordagem NoSQL, nada que se aproxime da simplicidade e expressividade oferecida pelo SQL Perde-se toda a funcionalidade oferecida: funções, rotinas armazenadas, etc. Deixa-se de utilizar a mais simples restrição de integridade sobre o BD, o que pode tornar a aplicação mais pesada. Sistemas NoSQL

Conclusões As técnicas utilizadas pelos bancos NoSQL são muitas vezes as mesmas que os programadores experientes em bancos de dados relacionais tem utilizados por anos para escalar seus sistemas mas de uma maneira otimizada e muitas vezes automática Não esperem que um banco de dados NoSQL vai ser uma “silver bullet” para os seus problemas de escalabilidade, em alguns casos vai ser tão difícil escalar um banco não relacional quanto um banco relacional É importante entender as ferramentas disponíveis para fazer o melhor uso possível das suas capacidades Sistemas NoSQL

Referências E. F. Codd, “A Relational Model of Data for Large Shared Data Banks”, Communications of the ACM, Volume 13, nº 6, Junho de 1970, p. 377-387. N. Leavitt, "Will NoSQL Databases Live Up to Their Promise?,“ Computer, Vol. 43, no. 2, pp. 12-14, Feb. 2010. “NoSQL Relational Database Management System: Home Page”. Strozzi.it. http://www.strozzi.it/cgi-bin/CSA/tw7/I/en_US/nosql/HomePage. Acessado em 13/04/2010. Rick Cattell. Scalable SQL and NoSQL Data Stores. SIGMOD Record, December 2010 (Vol. 39, No. 4) Sistemas NoSQL

Referências W. Vogels. Eventually Consistent. Commun. ACM, 52(1):40–44, 2009. D. Pritchett. BASE: An Acid Alternative, ACM Queue vol. 6, no. 3, Julho 2008. Lóscio, B. F., Oliveira, H. R., Pontes, J. C. S. NoSQL no desenvolvimento de aplicações Web colaborativas. Minicurso no VIII Simpósio Brasileiro de Sistemas Colaborativos Sistemas NoSQL