No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de...
Transcript of No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de...
No-SQLSeminário da disciplina de Banco de Dados 2015.1
Aluno: Rodrigo Barbosa Folha
NoSQL CIn.ufpe.br IN940 Recife-PE Julho de 2015
Agenda
• História
• Evolução
• NoSQL
• Conceitos básicos
• Desafios e dúvidas
• MongoDB
2
História
• Álgebra Relacional(Década 70)• Fácil manuseio
• Bem fundamentada
• Dados primitivos e bem estruturados
• Desacoplamento do armazenamento físico
3
Evolução
• Ao longo de 30 anos:• OO
• EER
• OR
• Alto poder de processamento
• Paralelismo (Mainframes)
• Cluster
• Big Data• Dados complexos
• Estruturados, não estruturados, polimórficos
4
Evolução
Michael Stonebraker, em “The End of an Architectural Era”, disse “that the current RDBMS code lines, while attempting to be a “one size fits all” solution, in fact, excel at nothing”
5
Evolução
6
Evolução
• Processamento de dados / OLTP e Data warehouses especialistas(bases científicias, texto, etc)
• Por fim, ele conclui: SGBDR “ are 25 year old legacy code lines that should be retired in favor of a collection of “from scratch” specialized engines. The DBMS vendors (and the research community) should start with a clean sheet of paper and design systems for tomorrow’s requirements, not continue to push code lines and architectures designed for yesterday’s needs”
7
Evolução
• Duas principais razões para novas abordagens:• Flexibilidade
• Desempenho
8
NoSQL
• Possíveis significados:• No to SQL
• Not only SQL
• Outros nomes:• NoACID
• Post-relational
9
Conceitos Básicos
• Teorema CAP• Proposto por Eric Brewer em 1998
10
Conceitos Básicos
• BASE• Estar disponível (Basically available)
• Funcionar normalmente apesar de falhas (Soft-state)
• Manter os dados consistentes mesmo impondo restrições (Eventual Consistency)
• ACID versus BASE
11
Modelo de Dados
• Taxonomia de modelo de dados• Proposto por Ben Scofield e Alex Popescu:
Modelo orientado a chave-valor
Modelo orientado a colunas
Modelo orientado a documentos
Modelo orientado a grafos
12
Modelo de Dados
• Modelo orientado a chave-valor• Simples
• Alto desempenho
• Duas operações básicas: get e set
• Dados facilmente distribuídos
13
Modelo de Dados
• Modelo orientado a colunas• Colunas são serializadas ao invés de linhas
• Mais eficiente quando for trabalhar com um subconjunto de colunas
• Atualizações
• Compressão de dados
• Família de colunas
• OLAP
14
Modelo de Dados
• Modelo orientado a documentos• Documentos estruturados (JSON, BSON, XML)
• A estrutura pode variar para cada documento
• Maior funcionalidade em relação aos anteriores
15
Modelo de Dados
• Modelo orientado a grafos• Nós, arestas e propriedades
• Permite relacionamentos complexos entre os dados
• Flexível
• Para representar atributosusa a técnica chave-valor
16
Desafios e dúvidas
• Baseado no artigo de 2010 da revista da IEEE:• Overhead e complexidade
• Confiabilidade
• Consistência
• Desconhecimento da tecnologia
• Ecoestrutura limitada
17
Desafios e dúvidas
• Baseado no artigo de 2010 da revista da IEEE:• Overhead e complexidade
• Confiabilidade
• Consistência
• Desconhecimento da tecnologia
• Ecoestrutura limitada
• Talvez esses desafios já estejam sendo superados
18
MongoDB
• Características• Orientado a documentos
• Usa JSON como representação de documento
• API nas linguagens mais usadas (C, C++, C#, Java, Python, Ruby, JavaScript,...)
• Shell de comando compatível com JavaScript
• Pode ser usado com banco de dados orientados a grafo
• Ótima documentação e cursos online
• Auto sharding e gerenciador de réplica
• Tem o CP da propriedade CAP
• E todas as vantagens gerais de NoSQL
19
MongoDB
• JSON• JavaScript Object Notation
• Fácil leitura em relação ao XML
20
MongoDB
• BSON• Binary JavaScript Object Notation
• Usado para serializar os dados internamente (tamanho máximo: 16 MB)
• Permite buscar documentos eficientemente
21
MongoDB
• Coleções• Todo documento é armazenado em coleções
• Coleção é um grupo de documentos que possuem o mesmo conjunto de índices
• Os documentos não precisam ter a mesma estrutura
22
MongoDB
• Índices• Acessar mais rapidamente os dados
• Ordenar os dados
• Fundamental ao lidar com grande volume de dados
• O atributo _id é indexado por padrão
• Exemplo:• db.products.ensureIndex({“item”: 1})
23
MongoDB
• Operações de CRUD• Inserção
• Exemplo:
• “Equivalente” em SQL:
INSERT INTO products (_id, item, qty, type) VALUES (21, “lamp”, 50, “desk”), (21, “lamp”, 20, “floor”),(22, “bulk”, 100, NULL);
db.<coleção>.insert( <documentos ou lista de documentos>,
{ writeConcern: <documento>, ordered: <boolean> }
)
db.products.insert( [ { _id: 20, item: "lamp", qty: 50, type: "desk" },
{ _id: 21, item: "lamp", qty: 20, type: "floor" },
{ _id: 22, item: "bulk", qty: 100 } ],
{ ordered: false } )
24
MongoDB
• Operações de CRUD• Busca
• Exemplo:
• “Equivalente” em SQL:
SELECT id, item, type FROM products;
db.<coleção>.find( <documento da query>,
<documento das colunas a serem projetadas>
)
db.products.find( { }, { item: 1, type: 1 } )
25
MongoDB
• Operações de CRUD• Operadores de projeção e busca
http://docs.mongodb.org/manual/reference/operator/query/
• Exemplo:
• “Equivalente” em SQL:
SELECT id, item, type FROM products WHERE qty > 40;
db.products.find( { qty: {$gt: 40} }, { item: 1, type: 1 } )
26
MongoDB
• Operações de CRUD• Modificadores de busca
• Sort (<documento>)
• Limit(inteiro)
• Skip(inteiro)
• Exemplo:
• “Equivalente” em SQL:
SELECT id, item, type FROM products WHERE qty > 40 ORDER BY qty ASC LIMIT 2,1;
db.products.find({ }, { item: 1, type: 1 } ).sort({qty: 1}).skip(1).limit(2)
27
MongoDB
• Operações de CRUD• Atualização
db.collection.update(< query>,< update>, { upsert:<boolean>, multi: <boolean>,
writeConcern: <documento>} )
• Exemplo:
• “Equivalente” em SQL:
DELETE FROM products WHERE _id=22;
INSERT INTO products (_id, item, type) VALUES (22, “lamp”, “garden”);
db.products.update({“_id”: 22}, {“item”: "lamp", “type”: “garden“}, { upsert: true} )
28
MongoDB
• Operações de CRUD• Operadores de atualização
http://docs.mongodb.org/manual/reference/operator/update-field/
• Exemplo:
• “Equivalente” em SQL:
UPDATE products SET qty = 50 WHERE _id=21;
db.products.update( {_id: 21}, {$set: {qty: 50}})
29
MongoDB
• Operações de CRUD• Remoção
db.collection.remove(< query>, { justOne:<boolean>, writeConcern: <documento>} )
• Exemplo:
• “Equivalente” em SQL:
DELETE FROM products WHERE qty > 90 limit 1;
db.products.remove({“qty”: { $gt: 90} }, { justOne: true} )
30
MongoDB
• Operações de segurança• db.auth()
• db.grantRolesToUser()
• db.createRole()
• db.grantPrivilagesToRole()
31
MongoDB
• Operações de mapeamento e redução
• Map: Mapeia todos os elementos de uma coleção
• Reduce: Reduz esse elemento a uma única saída
• Comando Map-reduce• db.runCommand( { mapReduce: <collection>, map: <function>, reduce:
<function>, finalize: <function>, out: <output>, query: <document>, sort: <document>, limit: <number>, scope: <document>, jsMode: <boolean>, verbose: <boolean>}
)
32
MongoDB
• Mapeamento complexo entre SQL e MongoDB
33
Dúvidas, sugestões ou discussões?
34
Referências
• Strauch, Christof, Ultra-Large Scale Sites, and Walter Kriha. "NoSQLdatabases." Lecture Notes, Stuttgart Media University (2011).
• Han, Jing, et al. "Survey on NoSQL database." Pervasive computing and applications (ICPCA), 2011 6th international conference on. IEEE, 2011.
• Leavitt, Neal. "Will NoSQL databases live up to their promise?." Computer 43.2 (2010): 12-14.
• Padhy, Rabi Prasad, Manas Ranjan Patra, and Suresh Chandra Satapathy. "RDBMS to NoSQL: Reviewing some next-generation non-relationaldatabases." International Journal of Advanced Engineering Science andTechnologies 11.1 (2011): 15-30.
• Stonebraker, Michael, et al. "The end of an architectural era:(it's time for a complete rewrite)." Proceedings of the 33rd international conference on Very large data bases. VLDB Endowment, 2007.
35
Referências
• Stonebraker, Michael, et al. "One size fits all? Part 2: Benchmarking results."Proc. CIDR. 2007.
• "Neo4j, the World's Leading Graph Database." Neo4j Graph Database. Web. 1 July 2015.
• "Become a MongoDB Certified Professional." MongoDB University. Web. 1 July 2015.
• El Taller Web. "TCO Comparison MongoDB & Oracle." TCO Comparison MongoDB & Oracle. El Taller Web. Web. 1 July 2015.
36