Escolar Documentos
Profissional Documentos
Cultura Documentos
Pós-graduaçã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
3
NoSQL:Origem do nome (2)
Nem todo problema de análise e armazenamento de dados
é melhor resolvido exclusivamente usando Banco de
Dados Relacional
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:
7
Sistema NoSQL
• Esquema flexível
• Configuração mais barata ou mais rápida
• Escalabilidade massiva
• Consistência relaxada – maior desempenho e
disponibilidade
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.
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:
14
NoSQL – Características (2)
15
NoSQL – Características (3)
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)
• 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
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..
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
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
35
MySQL Cluster
Cluster “shared-nothing”
Motor (engine) de armazenamento NDB (substitui
InnoDB)
Replicação (2PC – 2 Phases Commit)
Particionamento de Dados Horizontal
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
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