36
No-SQL Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE Julho de 2015

No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

Embed Size (px)

Citation preview

Page 1: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 2: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

Agenda

• História

• Evolução

• NoSQL

• Conceitos básicos

• Desafios e dúvidas

• MongoDB

2

Page 3: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

História

• Álgebra Relacional(Década 70)• Fácil manuseio

• Bem fundamentada

• Dados primitivos e bem estruturados

• Desacoplamento do armazenamento físico

3

Page 4: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 5: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 6: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

Evolução

6

Page 7: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 8: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

Evolução

• Duas principais razões para novas abordagens:• Flexibilidade

• Desempenho

8

Page 9: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

NoSQL

• Possíveis significados:• No to SQL

• Not only SQL

• Outros nomes:• NoACID

• Post-relational

9

Page 10: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

Conceitos Básicos

• Teorema CAP• Proposto por Eric Brewer em 1998

10

Page 11: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 12: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 13: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

Modelo de Dados

• Modelo orientado a chave-valor• Simples

• Alto desempenho

• Duas operações básicas: get e set

• Dados facilmente distribuídos

13

Page 14: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 15: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 16: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 17: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 18: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 19: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 20: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

MongoDB

• JSON• JavaScript Object Notation

• Fácil leitura em relação ao XML

20

Page 21: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

MongoDB

• BSON• Binary JavaScript Object Notation

• Usado para serializar os dados internamente (tamanho máximo: 16 MB)

• Permite buscar documentos eficientemente

21

Page 22: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 23: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 24: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 25: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 26: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 27: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 28: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 29: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 30: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 31: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

MongoDB

• Operações de segurança• db.auth()

• db.grantRolesToUser()

• db.createRole()

• db.grantPrivilagesToRole()

31

Page 32: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 33: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

MongoDB

• Mapeamento complexo entre SQL e MongoDB

33

Page 34: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

Dúvidas, sugestões ou discussões?

34

Page 35: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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

Page 36: No-SQL - cin.ufpe.brcin.ufpe.br/~in940/BDPresentation-NOSQL-rbf2.pdf · Seminário da disciplina de Banco de Dados 2015.1 Aluno: Rodrigo Barbosa Folha NoSQL CIn.ufpe.br IN940 Recife-PE

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