A3 - Introdução noSQL
A3 - Introdução noSQL
A3 - Introdução noSQL
NÃO RELACIONAIS
◻ Persistência consistente
◻ Integração de dados
◻ Controle de transações
◻ Controle de concorrência
◻ Segurança e alta confiabilidade
◻ Linguagem de consulta eficaz e eficiente
SQL
Aplicações de software modernas
6
◻ Trilhões de transações
◻ Trilhões de transações
Wu, Caesar & Buyya, Rajkumar & Ramamohanarao, Kotagiri. (2016). Big Data Analytics
= Machine Learning + Cloud Computing.
BIG DATA: Sistemas Inteligentes
12
Wu, Caesar & Buyya, Rajkumar & Ramamohanarao, Kotagiri. (2016). Big Data Analytics
= Machine Learning + Cloud Computing.
Aprendizado Supervisionado
13
Wu, Caesar & Buyya, Rajkumar & Ramamohanarao, Kotagiri. (2016). Big Data Analytics
= Machine Learning + Cloud Computing.
Aprendizado Não-Supervisionado
14
Wu, Caesar & Buyya, Rajkumar & Ramamohanarao, Kotagiri. (2016). Big Data Analytics
= Machine Learning + Cloud Computing.
Limitações dos bancos relacionais
15
◻ Problema de escalabilidade
◻ Persistência “poliglota”
Benefícios: Schema flexível
22
◻ “Schemaless”
Esquema implícito ou flexível
Relacional NoSQL
Escalabilidade Vertical usualmente com Horizontalmente,
base em único servidor administrador de BD pode
adicionar mais servidores
ou instâncias de nuvem
Modelo de Mistura de código aberto e Código aberto
desenvolvimento fechado
Manipulação dados Linguagem específica API orientada a objetos
usando as instruções
Selecionar, Inserir e
Atualizar
Consistência Pode ser configurado com Alguns SGBDs oferecem
alta consistência outros não
(Meta)modelos
35
◻ Chave-Valor
◻ Documentos
◻ Família de Colunas
◻ Grafos
Modelos agregados???
36
1 *
Brands Models
Schema relacional de exemplo
39
Visão geral dos modelos
40
◻ Chave-Valor
◻ Documentos
◻ Família de Colunas
◻ Grafos
Lembrando tabelas de espalhamento
41
Modelo chave-valor
42
Chave 1 valor
Chave 2 valor
Chave 3 valor
Chave 4 valor
Modelo chave-valor
44
Lista de
Chave 2 valor itens
Tabela de
Chave 3 valor espalhamento
(campo, valor)
Chave 4 valor
Exemplo (do carro)
45
(identificador)
chave
valor
Casos apropriados para uso
46
◻ Exclusão de chave
DEL chave
■ DEL 044488
◻ Exclusão de um campo
HDEL chave campo
■ HDEL 044488 nome
Operação de consulta
50
HGETALL 044488
■ Recupera todos os campos da tabela associada à chave
044488
SGBDs chave-valor
51
◻ Amazon DynamoDB
◻ Redis
Visão geral dos modelos
52
◻ Chave-Valor
◻ Documentos
◻ Família de Colunas
◻ Grafos
Modelo de documentos
53
documento
Coleção de
documentos
atributos
Características do modelo
55
◻ Desnormalização
Armazenando de dados redundantes para otimizar o
armazenamento e consulta
documento
Exemplo de implementação
58
◻ Atualização
db.Employee.update( {"Employeeid" : 1}, {$set: {
"EmployeeName" : "NewMartin"}});
Algumas operações
66
◻ SimpleDB
◻ CouchDB
Visão geral dos modelos
68
◻ Documentos
◻ Chave-Valor
◻ Família de Colunas
◻ Grafos
Modelo orientado a colunas
69
chave
Modelo orientado a colunas
70
Estrutura tabular
Colunas esparsas
Agregado em dois níveis
Família de colunas
71
◻ Coluna
{
name: "fullName",
value: "Martin Fowler",
timestamp: 09062018
}
Implementando família de colunas
74
◻ Família de colunas
//row
"pramod-sadalage" : {
firstName: "Pramod",
lastName: "Sadalage",
lastVisit: "2012/12/12"
}
Implementando família de colunas
75
◻ Famílias de colunas
{
//row 1
"pramod-sadalage" : { Chave da linha
firstName: "Pramod",
coluna
lastName: "Sadalage",
lastVisit: "2012/12/12"
}
//row 2
"martin-fowler" : {
firstName: "Martin",
lastName: "Fowler",
location: "Boston"
}
}
Super família de colunas
76
Container de colunas
Super família de colunas
77
{ //row 1
Chave da linha
name: "billing:martin-fowler",
value: {
address: { Super coluna
name: "address:default",
value: {
coluna
fullName: "Martin Fowler",
street:"100 N. Main Street",
zip: "20145"
}
},
billing: { Super coluna
name: "billing:default",
value: { coluna
creditcard: "8888-8888-8888-8888",
expDate: "12/2016"
}
}
} //finaliza row 1
Características
78
INSERT INTO
clientes (id, idade, status, telefones)
VALUES("Joao", 45, "A" ,
{ 'Comercial':'3973512” , 'Celular':'9951231'})
Operação de atualização
83
UPDATE familia_de_colunas
SET coluna = valor
WHERE condição
UPDATE clientes
SET status = "C"
WHERE id=1
Operação de recuperação
84
SELECT colunas
FROM familia_de_coluna
WHERE condição
◻ Google BigTable
◻ Hadoop / HBase
◻ Cassandra
Visão geral dos modelos
87
◻ Documentos
◻ Chave-Valor
◻ Família de Colunas
◻ Grafos
Conceito de grafo
88
vértice
Conceito de grafo
89
aresta
Modelo de BD orientado a grafos
90
◻ Vértices e arestas
possuem propriedades
relacionamento
Schema relacional de exemplo
98
Exemplo (do carro)
99
2_corcel
tem_marca
Nome=Corcel
prod_begin=1968 1_ford
prod_end=1986
Nome=Ford
Country=USA
Founded=1903
Casos possíveis de uso
100
◻ Consultas complexas
Explora uma sequência de relacionamentos que é
resolvida com o percurso de múltiplos níveis do grafo
SGBDs orientada a grafos
101
◻ Giraph
◻ ArangoDB (multimodelo)
◻ Infinite Graph
Síntese da aula
102
Exercícios
Exercício 1
105
Parte dos slides são baseados em trabalho de Keith W. Hare (“A Comparison of
SQL and NoSQL Databases”)
■ Metadata Open Forum
■ Leituras Adicionais: http://martinfowler.com/articles/nosqlKeyPoints.html
“NoSQL -- Your Ultimate Guide to the Non - Relational Universe!”
■ http://nosql-database.org/links.html
“NoSQL (RDBMS)”
■ http://en.wikipedia.org/wiki/NoSQL
PODC Keynote, July 19, 2000. Towards Robust. Distributed Systems.
Dr. Eric A. Brewer. Professor, UC Berkeley. Co-Founder & Chief
Scientist, Inktomi .
■ www.eecs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf
■ “Brewer's CAP Theorem” posted by Julian Browne, January 11, 2009.
http://www.julianbrowne.com/article/viewer/brewers-cap-theorem
“How to write a CV” Geek & Poke Cartoon
http://geekandpoke.typepad.com/geekandpoke/2011/01/nosql.html
Referências
112
Tarefa de Casa
Descrição
115