sistemas nosql prof. carlos eduardo santos pires [email protected]

40
Sistemas Sistemas NoSQL NoSQL Prof. Carlos Eduardo Santos Pires [email protected]

Upload: internet

Post on 17-Apr-2015

130 views

Category:

Documents


16 download

TRANSCRIPT

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

Sistemas Sistemas NoSQLNoSQL

Prof. Carlos Eduardo Santos [email protected]

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

AgendaAgenda• Motivação• Sistemas NoSQL

o Definiçãoo Característicaso Modelos de Armazenamento de Dadoso Modelos de Dadoso Controle de Concorrência

• Conclusões

Sistemas NoSQL 2

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

Bancos de Dados RelacionaisBancos de Dados Relacionais• Dados são estruturados de acordo com o modelo

relacional• Padrão para a grande maioria dos SGBDs

o SQL Server, Oracle, PostgreSQL, MySQL, DB2, etc.

• Elementos básicoso Relações (ou tabelas) e registros (ou tuplas)

• Características fundamentaiso Restrições de integridade (PK, FK, UK, CK, NN)o Normalizaçãoo Linguagem SQL (Structured Query Language)

Sistemas NoSQL 3

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

Bancos de Dados RelacionaisBancos de Dados Relacionais• A estrutura é pouco flexível

o Tudo bem, usemos SGBDOO e SGBDOR

• Porém...o O volume de dados manipulados por alguns sistemas

computacionais vem crescendo em ritmo acelerado (web 2.0)

o Google: petabyteso Milhares de usuários acessando dados simultaneamente

• Demanda por escalabilidade é cada vez maior

Sistemas NoSQL 4

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

Como escalonar BDs Como escalonar BDs

Relacionais?Relacionais?• Alternativa 1: Escalonamento vertical

o Muitos cores e/ou CPUs que compartilham memória RAM e discos

• Oracle RAC (Real Application Cluster)

Sistemas NoSQL 5

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

Como escalonar BDs Como escalonar BDs

Relacionais?Relacionais?• Alternativa 1: Escalonamento vertical

o Custo• 1 milhão de dólares

o Mesmo assim, é insuficiente se o número de dados cresce em ritmo muito intenso

o O problema passa a se concentrar no acesso à base de dados

Sistemas NoSQL 6

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

Como escalonar BDs Como escalonar BDs

Relacionais?Relacionais?• Alternativa 2: Escalonamento horizontal

o 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 7

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

Modelo de DadosModelo 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çãoo Fragmenta os dados

Sistemas NoSQL 8

Joins? More joins?

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

Sistemas NoSQLSistemas 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

o Ainda estão definindo um padrão próprioo Cada projeto foi concebido para resolver um problema

particular

Sistemas NoSQL 9

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

Sistemas NoSQLSistemas 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 10

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

Sistemas NoSQLSistemas 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 Relacionalo IV Reich – “o Reich dos 43 anos”o Poucas variações ao longo do tempo

Sistemas NoSQL 11

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.

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

Sistemas NoSQLSistemas NoSQL• Paradigma recente (de 2008 para cá)• Motivados pelas aplicações da Web 2.0

o 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”?o Busca, leitura e escrita em um único registro ou em um

conjunto pequeno de registros

Sistemas NoSQL 12

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

Características dos Sistemas Características dos Sistemas

NoSQLNoSQL• 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 13

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

Características dos Sistemas Características dos Sistemas

NoSQLNoSQL• Sistemas NoSQL possuem várias características

em comumo Livres de esquemao Alta disponibilidadeo Escalabilidade

• Mesmo assim, possuem diversas características únicas quanto aoo Modo de armazenamento dos dadoso Modelo de dados

Sistemas NoSQL 14

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

Modo de Armazenamento de DadosModo de Armazenamento de Dados

• Temos os sistemas que...o mantêm suas informações em memória

realizando persistências ocasionais• Scalaris, Redis

o mantêm suas informações em disco• CouchDB, MongoDB, Riak, Voldemort

o são configuráveis• BigTable, Cassandra, Hbase, HyperTable

Sistemas NoSQL 15

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

Modelo de DadosModelo de Dados• Existem quatro categorias:

o Sistemas baseados em armazenamento chave-valor

o Sistemas orientados a documentos

o Sistemas orientados à coluna

o Sistemas baseados em grafos

Sistemas NoSQL 16

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

Baseados em Armazenamento Chave-Baseados em Armazenamento Chave-

ValorValor

• 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 17

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

Baseados em Armazenamento Chave-Baseados em Armazenamento Chave-

ValorValor

• 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 NoSQLo Riak, Redis, Scalaris

Sistemas NoSQL 18

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

Baseados em Armazenamento Chave-Baseados em Armazenamento Chave-

ValorValor

• 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 chaveo user1923_color Redo user1923_age 18o user3371_color Blueo user4344_color Brackisho user1923_height 6' 0“o user3371_age 34

Sistemas NoSQL 19

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

Orientados a DocumentosOrientados 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 20

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

Orientados a DocumentosOrientados a Documentos

• Documento do CouchDBo Objeto com um identificador único e certos camposo Possui cinco campos e seus respectivos valores

• O sistema NoSQL ‘que se vire’ para indexar• Exemplos

o MongoDB e CouchDB

Sistemas NoSQL 21

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

Orientados à ColunaOrientados à Coluna• Muda-se o paradigma de orientação a registros

para orientação a colunas• BD orientado a registro

o 1, Smith, Joe, 40000; o 2, Jones, Mary, 50000; o 3, Johnson, Cathy, 44000;

• BD orientado a colunao 1, 2, 3;o Smith, Jones, Johnson; Joe, Mary, Cathy; o 40000, 50000, 44000;

Sistemas NoSQL 22

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

Orientados à ColunaOrientados à Coluna• Para sistemas que possuem carga de trabalho

com um pequeno número de consultas complexas sobre todos os dados de colunaso Similar ao processamento OLAPo SUM(valor), AVG(quantidade), MAX(total)

• Exemploo Cassandra e BigTable

Sistemas NoSQL 23

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

Baseados em GrafosBaseados em Grafos• Já tentou modelar/consultar uma hierarquia em

bancos de dados relacionais?• SGDB Oracle

o START WITHo CONNECT BY

Sistemas NoSQL 24

SELECT lpad(' ', 2*level) || child FROM prune_testSTART WITH parent IS NULLCONNECT BY PRIOR child=parent;

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

Baseados em GrafosBaseados 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 25

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

Baseados em GrafosBaseados em Grafos• Nós representam entidades como pessoas,

grupos, itens, etc.• Os objetos possuem propriedades• Arestas

o Conectam nós distintos entre si ou nós a propriedadeso Representam o relacionamento entre os mesmos

• Exemploo Neo4j

Sistemas NoSQL 26

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

Modelos de Dados NoSQLModelos de Dados NoSQL

Sistemas NoSQL 27

Complexidade dos dados

Vo

lum

e d

e d

ado

s

chave-valor

colunas

documentos

grafo

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

Controle de ConcorrênciaControle de Concorrência• Bancos de Dados Relacionais

o Uso de bloqueios (locks) para garantir que dois usuários não atualizem o mesmo item de dados no mesmo instante

• Bancos de Dados NoSQLo Estratégias usadas permitem um maior grau de

concorrência

Sistemas NoSQL 28

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

Controle de ConcorrênciaControle de Concorrência• BDR

o ACID = Atomicity, Consistency, Isolation, and Durability

• NoSQLo BASE = Basically Available, Soft state, Eventually

consistent

• Desempenho e escalabilidade são conseguidos relaxando-se algumas propriedades

Sistemas NoSQL 29

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

Controle de ConcorrênciaControle de Concorrência• Consistência Eventual

o Eventual em português• Pode acontecer ou não

o Eventual em inglês• Vai acontecer em algum momento• Pode não ser agora, mas vai acontecer

o Exemplo• Transferência bancária no sistema financeiro brasileiro

o Portanto, no mundo NoSQL a tradução melhor seria• Consistência em momento indeterminado

Sistemas NoSQL 30

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

Controle de ConcorrênciaControle de Concorrência• Consistência Eventual

o Se nenhuma nova atualização for realizada sobre o objeto, eventualmente todos os acessos à esse objeto retornarão o último valor atualizado

o 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

o Não há garantia que os dados lidos estão sempre atualizados

o Atualizações são eventualmente propagadas em todos os nós

Sistemas NoSQL 31

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

Controle de ConcorrênciaControle de Concorrência• Modelo ACID

o Força a consistência ao final de cada operação

• Modelo BASEo Permite que o BD esteja eventualmente em um estado

consistente

Sistemas NoSQL 32

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

Controle de ConcorrênciaControle de Concorrência

• Exemplo: Shopping Cart da Amazono É possível comprar um produto que não

esteja em estoqueo É muito raro não ter o produto em

estoqueo É muito custoso verificar se há estoque

do produtoo Então é melhor vender sem verificaro Se não tiver em estoque, manda

mensagem com desculpas ou dá um desconto em um produto

Sistemas NoSQL 33

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

NewSQLNewSQLSQLPadrões

DurabilidadeSegurança

GatilhosChave estrangeiraChave composta

Transação2 phase commit

Relacional

34Sistemas NoSQL

• NoSQLo Flexibilidadeo Grafoso Key-value storeo Documentoo Escalabilidadeo Commodity hardwareo RAMo Distributedo APIs

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

ConclusõesConclusões• Mudança para a abordagem NoSQL deve levar

em conta as necessidades do problema• Fatores a serem analisados

o Escalabilidade do sistemao Consistência de dadoso Facilidade de usoo Existência ou não de linguagens de consulta

• Cada fator tem um preço

Sistemas NoSQL 35

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

ConclusõesConclusões• SGBDRs

o Soluções muito mais maduras e experimentadaso 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 36

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

ConclusõesConclusões• Não existe, em qualquer abordagem NoSQL, nada

que se aproxime da simplicidade e expressividade oferecida pelo SQLo Perde-se toda a funcionalidade oferecida: funções,

rotinas armazenadas, etc.o 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 37

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

ConclusõesConclusõ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 38

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

ReferênciasReferências1. 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.

2. N. Leavitt, "Will NoSQL Databases Live Up to Their Promise?,“ Computer, Vol. 43, no. 2, pp. 12-14, Feb. 2010.

3. “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.

4. Rick Cattell. Scalable SQL and NoSQL Data Stores. SIGMOD Record, December 2010 (Vol. 39, No. 4)

Sistemas NoSQL 39

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

ReferênciasReferências5. W. Vogels. Eventually Consistent. Commun.

ACM, 52(1):40–44, 2009.6. D. Pritchett. BASE: An Acid Alternative, ACM

Queue vol. 6, no. 3, Julho 2008.7. 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 40