algumas das principais características do nosql

27
BANCO DE DADOS II Bancos de Dados NoSQL Prof.: Cláudio Bezerra Leopoldino Eric Silva

Upload: eric-silva

Post on 22-Dec-2014

216 views

Category:

Technology


2 download

DESCRIPTION

Este trabalho tem como objetivo apresentar algumas das principais características do NoSQL, um banco de dados que possui como diferencial um grande poder de escalabilidade, proporcionando uma maior capacidade de armazenamento e velocidade.

TRANSCRIPT

Page 1: Algumas das principais características do NoSQL

BANCO DE DADOS II

Bancos de Dados NoSQLProf.: Cláudio Bezerra Leopoldino

Eric Silva

Page 2: Algumas das principais características do NoSQL

Objetivo

Este trabalho tem como objetivo apresentar

algumas das principais características do NoSQL,

um banco de dados que possui como diferencial um

grande poder de escalabilidade, proporcionando

uma maior capacidade de armazenamento e

velocidade.

Page 3: Algumas das principais características do NoSQL

Introdução – Banco de dados

“Um conjunto de dados relacionados que possuem um significado.”(Ramez Elmasri, Shamkant B. Navathe)

Quando guardamos as informações de nossos amigos(nome, telefone, endereço...) em uma agenda, estamos criando um banco de dados.

Também podemos armazenar esses dados no nosso computador, em um Excel por exemplo, também temos um banco de dados.

Page 4: Algumas das principais características do NoSQL

Banco de Dados Relacional

“No modelo relacional os dados são percebidos pelo usuário como tabelas.” (C. J. Date)

Tabela é uma estrutura com linhas e colunas, e cada linha possui o mesmo conjunto de colunas.

Um registro(linha da tabela) é uma ocorrência de uma entidade(tabela), e podem existir associações entre as entidades, através de regras de relacionamento.

Page 5: Algumas das principais características do NoSQL

Banco de Dados Relacional

Países

UFs

Cidades

Page 6: Algumas das principais características do NoSQL

Banco de Dados NoSQL (Not OnlySQL)

É um Banco de Dados não relacional, ou seja, não

utiliza uma estrutura fixa de tabelas, e geralmente

não oferecem suporte a instruções SQL. Não há Joins

Não há SQL Injection

Não utilizamos comandos CREATE TABLE, ALTER TABLE...

A grande motivação para o surgimento do NoSQL

é resolver o problema de escalabildade, pois pode

ser muito caro e/ou complexo escalar um Banco de

Dados Relacional.

Page 7: Algumas das principais características do NoSQL

Banco de Dados NoSQL (Not OnlySQL)

Grandes empresas mundiais utilizam e apóiam esta

abordagem.

O Google investe desde 2004 no BigTable, um banco

proprietário desenvolvido para suprir as necessidades de

armazenamento da empresa.

O Facebook projetou o Cassandra, um sistema de alta

disponibilidade e escalabilidade, para trabalhar com o seu

grande fluxo de informações.

O objetivo não é subutilizar os Bancos de Dados

Relacionais, e sim apresentar uma alternativa.

Page 8: Algumas das principais características do NoSQL

Comparação entre as duas abordagens

Banco de Dados Relacional Banco de Dados NoSQL

Escalabilidade É possível, porém possui uma

certa complexidade, o que

dificulta a implementação.

Quanto mais dados, mais

espaço no servidor e

memória são necessários.

Como não possui estrutura fixa, a

inclusão de dados é bastante

flexível. Quanto mais dados,

aumenta-se o número de servidores,

que podem ser ou não de alta

performance, barateando e

otimizando o armazenamento.

Consistência As regras de integridade

garantem a consistência das

informações.

Não garante a consistência da

informação, caso nenhuma

informação seja atualizada,

retornará o mesmo valor para todas

as solicitações.

Disponibilidade Uma grande demanda pode

ser prejudicial(dificuldade

com o volume de acesso e

distribuição de dados).

Possui um alto grau de distribuição

de dados(em vários servidores), e

garante um maior número de

solicitações.

Page 9: Algumas das principais características do NoSQL

Comparação entre as duas abordagens

Banco de Dados Relacionais Banco de Dados NoSQL

Resumo Todos os dados são guardados em

tabelas. Tenta-se diminuir ao máximo

a redundância através das relações

entre as tabela.

Alta escalabilidade,

disponibilidade, desempenho e

menor tempo de resposta a

consultas

Características Tabelas, esquema definido,

redundância mínima, entidade e

relacionamento, ACID

Registros, não possui estrutura

fixa, escalabilidade

Necessidades Sistemas financeiros, sistemas

corporativos, consistência dos dados

Sistemas em nuvem, análises

sociais, performance na

consulta/escrita, replicação

SGBD DB2, Firebird, InterBase, SQL Server,

MySQL, Oracle, PostgreSQL

Cassandra, BigTable, MongoDB,

CouchDB, Dynamo

Empresas que

utilizam

SAP, OpenERP, Previdência Social,

Caixa, Itaú

Twitter, Facebook, Amazon,

LinkedIN, Google, Yahoo

Page 10: Algumas das principais características do NoSQL

Então NoSQL é melhor?

NÃO!

É diferente...

Page 11: Algumas das principais características do NoSQL

Modelo híbrido

Podemos estabelecer um modelo de sistema que

utilize as duas abordagens, criando um sistema de

banco de dados híbrido.

Em uma aplicação, quando existe uma parte do

sistema que necessite de ACID, podemos utilizar um

Banco de Dados Relacional, e quando for

necessário desempenho em um módulo, então

podemos utilizar o NoSQL.

Page 12: Algumas das principais características do NoSQL

Modelo híbrido - Exemplo real

A boo-box, uma empresa brasileira de tecnologia de publicidade e mídias sociais que exibe propaganda para 60 milhões de pessoas por mês no Brasil, possui um modelo de negócios baseado em propaganda integrada com sistemas de recomendação buscando se aproximar dos interesses do usuário, fazendo uma recomendação otimizada, baseada em conteúdo acessado.

Contudo, para buscar promoções de lojas, mercados, marcas e links, que satisfaçam os interesses do usuário, é necessário o acesso as API’s dos sistemas dos respectivos estabelecimentos.

Se o modelo de dados fosse inteiramente baseado em um modelo relacional, seria necessário efetuar o acesso as API’s a cada vez que o usuário acessar uma página diferente e salvar na base de dados, tornando-se muitas vezes um processo demorado.

Já com o modelo híbrido propõe-se uma solução com maior desempenho, devido à estrutura, a qual consiste em guardar as requisições feitas temporariamente, como forma de cache, diminuindo assim o acesso as API’sexternas.

Page 13: Algumas das principais características do NoSQL

Modelo híbrido - Exemplo real

Page 14: Algumas das principais características do NoSQL

Classificação dos Bancos de Dados

NoSQL

ORIENTADOS A DOCUMENTOS

Podemos “comparar” Documentos com as linhas do modelo relacional.

Esse formato proporciona uma maior flexibilidade, pois os documentos não precisam possuir estrutura em comum, cada documento possui somente o que é importante.

Um documento pode conter documentos aninhados.

Page 15: Algumas das principais características do NoSQL

Classificação dos Bancos de Dados

NoSQL

ORIENTADOS A DOCUMENTOS

Imaginemos que temos uma relação de Pessoa com Cargo e queremos criar uma consulta para recuperar o cargo da pessoa João.

No modelo orientado a documentos bastaria recuperar o documento do João, que conteria o documento de seu cargo.

No modelo relacional seria necessário realizar um join entre a tabela Pessoa e Cargo, o que exigiria um certo custo de desempenho.

Page 16: Algumas das principais características do NoSQL

Classificação dos Bancos de Dados

NoSQL

codigo nome apelido idade peso Altura

1 João da Silva Joãozinho 22 55.0 1.64

2 Francisco Pedro 20 50.0 1.55

ORIENTADOS A DOCUMENTOS

Page 17: Algumas das principais características do NoSQL

Classificação dos Bancos de Dados

NoSQL

ORIENTADOS A DOCUMENTOS

Page 18: Algumas das principais características do NoSQL

Classificação dos Bancos de Dados

NoSQL

ARMAZENAMENTO CHAVE-VALOR

Esse é o tipo de banco de dados NoSQL mais simples.

Funciona como uma grande tabela hash, onde se fornece uma chave e obtemos um valor como resultado. put(chave, valor)

get(chave)

Esses tipos de bancos de dados são o que tem a maior escalabilidade.

Page 19: Algumas das principais características do NoSQL

Classificação dos Bancos de Dados

NoSQL

ARMAZENAMENTO CHAVE-VALOR

chave_1 Valor da chave 1

chave_2 Valor da chave 2

chave_3 Valor da chave 3

chave_4 Valor da chave 4

Page 20: Algumas das principais características do NoSQL

Classificação dos Bancos de Dados

NoSQL

ORIENTADO A COLUNAS

Os dados são organizados por um trio (linha,

coluna e um dado do tipo timestamp), onde linhas e

colunas são identificadas como chaves e o

timestamp permite diferenciar múltiplas versões de

um mesmo dado.

Page 21: Algumas das principais características do NoSQL

Classificação dos Bancos de Dados

NoSQL

ORIENTADO A COLUNAS

Page 22: Algumas das principais características do NoSQL

Classificação dos Bancos de Dados

NoSQL

BASEADOS EM GRAFOS

Os dados são armazenados em nós de um grafo

A estrutura do modelo de grafos é composta por: nós, os relacionamentos e os atributos dos nós

As operações realizadas nos dados são transformações nos grafos, fazendo uso de conceitos conhecidos nos grafos: vizinhos, caminhos, subgrafos, etc.

Está relacionado a soluções matemáticas

Page 23: Algumas das principais características do NoSQL

Classificação dos Bancos de Dados

NoSQL

BASEADOS EM GRAFOS

Relacionamento

Atributos

Page 24: Algumas das principais características do NoSQL

Classificação dos Bancos de Dados

NoSQL

QUANDO UTILIZAR CADA MODELO

Complexidade dos dados

Volu

me d

e d

ados

Chave/valor

Colunas

Documentos

Grafos

Page 25: Algumas das principais características do NoSQL

Dificuldades encontradas no NoSQL

Como não há um padrão de estrutura, a migração de um banco de dados pode gerar certas dores de cabeça.

Ausência de ferramentas de alto nível como as que encontramos no modelo relacional.

Curva de aprendizado. Cada banco de dados apresenta a sua própria linguagem de consulta e manipulação.

Pouco material para referência, bem como conteúdos “duplicados”.

Page 26: Algumas das principais características do NoSQL

Conclusão

As bases de dados NoSQL são um excelente complemento para o modelo relacional, evitando que o apliquemos em situações para as quais não foi desenvolvido.

A escolha por um modelo não relacional não deve ser baseada apenas pelo fato de ganho de performance, é necessário analisar a modelagem de forma coerente e saber onde esse modelo pode ser aplicado.

Page 27: Algumas das principais características do NoSQL

Referências bibliográficas

Ramez Elmasri, Shamkant B. Navathe Fundamentals of database systems – 6ª edição. Addison-Wesley, 2011.

C. J. Date. Introdução a Sistemas de Bancos de Dados. Tradução da 8ª edição americana. Rio de Janeiro: Elsevier Brasil, 2003.

VERAS, M. Arquitetura de Nuvem: Amazon Web Services. Rio de Janeiro: Brasport, 2013.

Thalles Ramon P. de Sousa, André Luiz de S. Silva Rocha, NoSQL: Princípios e Características. Faculdade de Tecnologia da Paraíba (FATECPB), João Pessoa - PB, 2010.

Renato Molina Toth, Abordagem NoSQL – uma real alternativa. Universidade Federal de São Carlos, Campus Sorocaba, São Paulo.

Pollyanna Gonçalves, Web 2.0 e os Bancos de Dados Não Relacionais. Universidade Federal de Ouro Preto, Minas Gerais.

https://www.ibm.com/developerworks/br/library/os-apache-cassandra/

http://blog.boo-box.com/br/2010/usando-banco-de-dados-nosql-redis/