Você está na página 1de 42

Graduação

Pós-graduação

Introdução a Bancos de Dados NoSQL

José Walmir G. Duque


Supervisor MBA em TI
Prof. Ciência da Computação

1
Tópicos
Definição de NoSQL
Motivação
Introdução aos Tipos de Armazenamento de Dados
-- Armazenamento tipo Key-Value (Chave-Valor)
-- Armazenamento tipo Document (Documento)
-- Armazenamento tipo Extensible Record (Registro
Extensível)
-- Novo Banco de Dados Relacional
Considerações finais

2
NoSQL:Origem do nome (1)
“SQL” corresponde ao banco de dados relacional
tradicional

Experiência mostra que..

Nem todo problema de análise e armazenamento de dados é


melhor resolvido usando Banco de Dados Relacional

“NoSQL” = “No SQL” = Não utiliza o tradicional Banco de


Dados Relacional
“NoSQL” não significa que não usa a linguagem de consulta
SQL

3
NoSQL:Origem do nome (2)
Nem todo problema de análise e armazenamento de dados
é melhor resolvido exclusivamente usando Banco de
Dados Relacional

“NoSQL” = “Not Only use SQL”


Não utiliza somente o SQL

4
NoSQL:Origem do nome (3)

5
Sistema de Banco de Dados Relacional
Sistema Gerenciador de Banco de Dados (SGBD) Relacional é..

Conveniente
Multi-usuário
Seguro
Persistente (armazena dados)
?
Confiável
Massivo
Eficiente
O que está errado ?

6
Sistema de Banco de Dados Relacional
Aplicações Web tem necessidades diferentes
A resposta é.. daquelas desenvolvidas para Banco de Dados
Relacional:

-- Tempo de resposta baixo e previsível (latência)


-- Escalabilidade e Elasticidade (a baixo custo)
-- Alta disponibilidade
-- Esquemas flexíveis / Dados semi-estruturados
-- Distribuição Geográfica (Múltiplos Datacenters)

Aplicações Web podem (comumente) funcionar sem..


-- Transações / Consistência Forte / Integridade
-- Consultas (queries) complexas

7
Sistema NoSQL

Alternativa ao tradicional Sistema de Banco de


Dados Relacional:

• Esquema flexível
• Configuração mais barata ou mais rápida
• Escalabilidade massiva
• Consistência relaxada – maior desempenho e
disponibilidade

• Sem linguagem de consulta declarativa – mais programação


• Consistência relaxada – menores garantias
8
Sistema NoSQL
A ideia por trás do NoSQL:

Ao desistir de restrições ACID, pode-se atingir


desempenho e escalabilidade muito maior.

ACID = Atomicity (Atomicidade), Consistency


(Consistência), Isolation (Isolamento) e Durability
(Durabilidade)

BASE = Basicamentelly Available (Basicamente


Disponível), Soft state (Estado suave), Eventually
consistent (Eventualmente consistente).
9
Sistema NoSQL
Basic Available (BA): usa a replicação para reduzir a
indisponibilidade de dados e usa o conceito de sharding
(particionamento de dados), entre diversos servidores, para
tornar as falhas “parciais”, ou seja, em níveis aceitáveis.

Soft state (S): enquanto sistemas ACID assumem que


consistência de dados é um requisito forte, sistemas NoSQL
permitem que dados possam permanecer inconsistentes.

Eventually consistent (E): embora aplicações devam lidar com


consistência instantânea, sistemas NoSQL garantem que em
algum momento no futuro o dado assumirá um estado
consistente. Em contraste com sistemas ACID que reforçam
consistência já no commit de uma transação.

10
Teorema CAP
Consistency, Availability, Partition-tolerance
Um sistema somente pode ter duas das três seguintes propriedades:
Consistência, Disponibilidade e Tolerância a Partição.

Consistência: todos os nós veem


os mesmos dados ao mesmo tempo

Disponibilidade: garantia que todas


as solicitações de acesso receberão
resposta se bem sucedidas ou não

Tolerância a Partição: o sistema


continua a operar mesmo que haja
perda de mensagem ou falha em
parte do sistema.

11
Novo SGBD Relacional
Os sistemas SQL tem escalabilidade horizontal sem abandonar
transações que suportem SQL e ACID.

12
MVCC
• MVCC - Multi-Version Concurrency Control

13
NoSQL – Características (1)
Sistemas NoSQL geralmente tem seis características chave:

1. A habilidade para escalar horizontalmente “vazão de


operações simples” ("simple operation” throughput) para muitos
servidores;

2. A habilidade de replicar e distribuir (particionar) dados para


muitos servidores;

14
NoSQL – Características (2)

3. Um protocolo ou interface para o nível de chamada simples


(simple call level) (em contraste com o binding de SQL);

4. Um modelo de concorrência (fundada em BASE) mais fraca do


que as transações da maioria dos sistemas de bancos de
dados relacionais (fundada em ACID);

15
NoSQL – Características (3)

5. Uso eficiente de índices distribuídos e RAM para o


armazenamento de dados; e

6. A habilidade de adicionar dinamicamente novos atributos aos


registros de dados.

No entanto, os Sistemas NoSQL diferem, principalmente,


quanto ao seu Modelo de Dados

16
Tipos de Bancos de Dados NoSQL

Key-Value Stores

Document Stores

Extensible Record
Stores
(Columns)

17
18
Armazenamento tipo Chave-Valor (Key-Value)
• Armazenamento “schema-less” - coleção global
de pares Chave-Valor (Key-Value)

• Inspirado no Dynamo da Amazon e Hashtables


Distribuídas

• Operações:
•void
void Put(string key, byte[] data);
•byte[
byte[ ] Get(string key);
•void
void Remove(string key).

19
Armazenamento tipo Chave-Valor (Key-Value)
• Exemplo:

Chave Valor
Nome João Carlos
RA 82828
Data_Nasc 01/05/1985
Emissão_NF 09/10/2012

20
Armazenamento Chave-Valor
Exemplos de SGBDs

21
Projeto Voldemort
Armazenamento Chave-Valor avançado
Criado pelo LinkedIn, agora é open source
Escrito em Java
Suporte MVCC
Replicação assíncrona
Sharding (Partição Horizontal) + Hashing Consistente
Automática recuperação e detecção a falha

Página do projeto:
http://project-voldemort.com/design.php

22
23
Armazenamento tipo Documento
Documento?
O que é um Documento ?
Dado semi-estruturado

Encapsula e codifica dados (ou informação) em algum formato


ou codificação padrão

Codificações:
XML (eXtensible Markup Language)
YAML (Yeat Another Multicolumn Layout)
JSON (JavaScript Object Notation)
BSON (Binary-encoded Serialization of JSON)
Formas Binárias: PDF, Microsoft Office documents.. etc.

24
Armazenamento tipo Documento
Documento?
Documentos são como linhas (rows) ou registros (records)
em bancos de dados relacionais, mas..

Com Esquema Sem Esquema

FirstName:"Bob", Address:"5 Oak St.", Hobby:"sailing"


FirstName:"Jonathan", Address:"15 Wanamassa Point Road",
Children:[{Name:"Michael",Age:10}, {Name:"Jennifer", Age:8},
{Name:"Samantha", Age:5}, {Name:"Elena", Age:2}]

25
Armazenamento tipo Documento
Similar ao Chave-Valor (Key-Value) mas com diferenças:
Valor é um documento
Geralmente suporta índices secundários
Esquema flexível
Qualquer número de campos pode ser adicionado
Múltiplos tipos de documentos (objetos) e documentos aninhados
ou listas
Documentos são armazenados em JSON ou Binary JSON
(BSON)
Não atende a propriedades ACID

26
Armazenamento tipo Documento
Exemplos de SGBDs

TERRASTORE
by Google

27
MongoDB
Ágil e escalável
Armazenamento orientado a Documento
Replicação e Alta Disponibilidade
Auto-sharding (Auto-Particionamento)
Map/Reduce
Útil no MongoDB para processamento de dados e agregações
GridFS
Especificação para armazenamento de grandes arquivos no
MongoDB

Página do projeto:
http://www.mongodb.org

28
29
Armazenamento tipo Registro Extensível
Armazenamento tipo Registro Extensível (Extensible Record)
também é denominado Armazenamento por Colunas (Column
Stores).
Cada chave é associada a múltiplos atributos (colunas).
Armazenamento híbrido linha/coluna (Hybrid row/column)
Inspirado no SGBD Google BigTable
Exemplos: HBase, Cassandra

30
Cassandra
Criado pelo Facebook para a pesquisa no Inbox
Características tomadas tanto dos SGBDs
Dynamo quanto do Big Table
Nós Simétricos
-- Sem ponto único de falha
-- Fácil para Administração
-- Eventualmente há Consistência – ajustável.

31
Cassandra
Detalhes de Colunas
-- Name
--- Tipo byte[ ]
--- Utilizados nas consultas
--- Determina a ordem de classificação
- Value
---- Tipo byte[]
- Timestamp
---- Tipo long
---- Resolução de conflito (a última operação de
write vence)

32
SGBDs NoSQL Orientados a Coluna

Nome Fabricante Modelo de Dados Consultas


BigTable Google Conjunto de duplas (Key, Seleção (pela combinação de linhas,
Values) colunas e faixas de timestamps)
HBase Apache Grupos de colunas (um Baseado no shell JRUBY IRB (similar
clone do BigTable ao SQL)
Hypertable Hypertable Como BigTable HQL (Hypertext Query Language)

CASSANDRA Apache Colunas, grupos de Seleção simples sobre chave, queries


colunas correspondendo em faixas, colunas ou faixas de
a uma chave colunas
(supercolunas)
PNUTS Yahoo Tabelas Hash ou Seleção e projeção de uma única
Ordenadas, arrays tabela (recupera um registro qualquer
tipados, esquema flexível pela chave primária, consultas por
faixas, predicados complexos,
ordenação, top-k)

33
Sistemas Relacionais Escaláveis
Também chamado “NewSQL” (NovoSQL)
SQL
ACID
Desempenho e escalabilidade por meio de arquitetura de
software moderna e inovadora

34
Sistemas Relacionais Escaláveis

SGBDR propiciará escalabilidade:


Pelo uso de operações
e transações de pequeno escopo

35
MySQL Cluster
Cluster “shared-nothing”
Motor (engine) de armazenamento NDB (substitui
InnoDB)
Replicação (2PC – 2 Phases Commit)
Particionamento de Dados Horizontal

Arquitetura “Shared-nothing” é uma arquitetura computacional


distribuída em que cada nó é independente e auto-suficiente.
Nessa arquitetura, nenhum dos nós compartilham sua memória ou
disco.

36
MySQL Cluster

37
Sistemas Relacionais Escaláveis

38
Conclusão: Prós e Contras de NoSQL
Vantagens
Escalabilidade Massiva
Alta Disponibilidade
Baixo Custo (do que soluções competitivas nessa escala)
Elasticidade de predicados (comumente)
Flexibilidade de Esquema, Dados esparsos & semi-
estruturados
Desvantagens
Capacidade de consultas limitadas (até o momento..)
Eventual consistência não é fácil de se programar..
Torna aplicações clientes mais complicadas
Sem padronização
Portabilidade pode ser problema

39
Conclusão
O que podemos dizer para o momento..
Bancos de dados NoSQL ainda estão longe das tecnologias de
banco de dados avançadas
NoSQL não irá substituir o tradicional SGBD Relacional

Bancos de dados NoSQL são bons para aplicações


especializadas que envolvem grandes quantidades de
dados distribuídos e não-estruturados com altos requisitos
de escalabilidade

40
Referências
Essa apresentação foi traduzida/adaptada de:
Chyngyz Omurov e Osman Tursun da Middle East Technical University
Cattell, R. Scalable SQL and NoSQL data stores
http://dl.acm.org/citation.cfm?id=1978919
Pokorný J.: NoSQL Databases: a step to database scalability in Web environment
http://dl.acm.org/citation.cfm?id=2095583&dl=ACM&coll=DL&CFID=90098443&
CFTOKEN=64346810

Sites oficiais:
http://www.mongodb.org/
http://cassandra.apache.org/
http://hbase.apache.org/
http://couchdb.apache.org/
http://project-voldemort.com/

41
Obrigado!

mbati@lo.unisal.br
walmirduque@yahoo.com.br

42

Você também pode gostar