Introdução ao Nosql

308 visualizações

Publicada em

Publicada em: Educação
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
308
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
9
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Introdução ao Nosql

  1. 1. NoSQLJoãoClineuJoséSilvaReginaldodeOliveiraThiagoPerroneVaniltonPinheiro
  2. 2. Introdução• Modelo Relacional – 1970• SGBDs• Relações• Tuplas• Colunas• Restrições de Integridade• Normalização• SQL(Structured Query Language)- IBM• Algebra Relacional
  3. 3. Limitações• Evolução de Sistemas -> Volume de Dados• Google – Petabytes – 10 bytes• Upgrade• Servidores15
  4. 4. NoSQL - Not Only SQL• Propósito• Solução – Gerenciamento de Arquivos em grande massa.• Performance• Surgimento 1998• Sem Interface SQL• Livre – Flexível• MRNN – Modelo Relacional não Normalizado• Histórico de Implementações• 2004 – Google – BigTable• 2007 – Amazon – sistema Dynamo• 2008 – Facebook – Cassandra• 2009 CouchDB / Mongo DB• 2010 - Twitter - MySQL to Cassandra
  5. 5. Tipos• Chave-valorVantagem - o modelo chave-valor “favorece alta escalabilidade ao invés daconsistênciaDesvantagem - omite recursos ricos para consultas (especialmente operações dejoins e agregação são postas de lado)
  6. 6. Tipos• Orientado a documento• Vantagem - permite que novos campos sejam adicionados a umdocumento sem que isso cause algum problema na base de dados.• Consulta direta• Desvantagem - não possuem esquema, ou seja, os documentosarmazenados não precisam possuir estrutura em comum”.• Duplicidade dos dados.• Exemplo: tendo como contexto uma estrutura que mantenha arelação de Pessoa com Cargo e fosse criada uma consulta pararecuperar o cargo da pessoa “A”, no modelo orientado a documentosbastaria recuperar o documento da “A”. Por que? Conteria odocumento de seu cargo, já no modelo relacional seria necessáriorealizar um join entre a tabela Pessoa e Cargo, o que tem um custode desempenho para execução, melhor percebido em consultasmais complexas.
  7. 7. Tipos• Orientado a grafo• Vantagem – O fato de “não existir tanta replicação de dadoscomo nos outros modelos, fato que acontece por seaproveitar do relacionamento entre os registros”• Exemplo: Se houver dois documentos, um representando apessoa “A” e outra representando a pessoa “B” e ambosconhecem a pessoa “C”, tanto o documento “A” quanto “B”teriam que guardar uma instância da pessoa “C”. No caso dosgrafos, isso é resolvido apenas utilizando ligações com arestasque armazenam um valor que indica que a pessoa• conhece “C”;
  8. 8. Tipos• Orientado a colunas• O exemplo da Figura abaixo que modela o conceito deamigos, onde primeiroNome e sobrenome são colunaspertencentes à família de colunas denominada nome. Demaneira semelhante, as colunas endereço, cidade e estadopertencem à família local. Observe que para a linha 001, oamigo Hélio tem diferentes endereços, onde para cada umdeles tem um timestamp correspondente. Como já foi dito, oacesso à linha é atômico, ou seja, mesmo 7 coluna sobrenomeda linha 001, todas as colunas são retornadas quando estalinha for consultada.
  9. 9. SGBDs X NoSQL• Escalonamento• Vertical – Upgrade• Horizontal - Servidores (Máquinas ou Nuvem)• Sharing – Utilização e Armazenamento em conjunto• Desnormalização
  10. 10. SGBDs X NoSQL• Vantagens NoSQL• Disponibilidade• Otimizado• Em 2008, enquanto ainda utilizava o PostgreSQL, o site que funcionacomo rede social ficou 84 horas for do ar. Em 2009, após a utilizaçãodo Cassandra, esse tempo foi sensivelmente reduzido para 23 horase 45 minutos.http://www.computerworld.com/s/article/9161078/Twitter_growth_prompts_switch_from_MySQL_to_NoSQL_database• Menor tempo de resposta para consultas, paralelismo deatualização de dados e maior grau de concorrência.• Locks - Controle de Concorrência de Multi-versões (MVCC)
  11. 11. SGBDs X NoSQL• Controle de Concorrência: Bloqueios x MVCC
  12. 12. SGBDs X NoSQL• Modelo NoSQL• Tal idéia se baseia no Teorema de Eric Brewer conhecido comoTeorema CAP (Consistency, Availability e Partition Tolerance), oqual afirma que é impossível para um sistema computacionaldistribuído garantir, de formasimultânea, consistência, disponibilidade e tolerância aoparticionamento. Segundo esse teorema, um sistema distribuídopode garantir apenas duas dessas três característicassimultaneamente.E. Brewer. “Towards Robust Distributed Systems”. (Invited Talk). Principles of DistributedComputing (PODC), Portland, Oregon, Julho 200
  13. 13. SGBDs X NoSQL• Modelo NoSQL• Esse conceito é estendido para o paradigma chamado BASE(Basically Available, Soft state, Eventual consistency) que secaracteriza por ser basicamente disponível, ou seja, o sistemaparece estar funcionando o tempo todo; em estado leve, osistema não precisa ser consistente o tempo todo; eeventualmente consistente, o sistema torna-se consistente nomomento devido.D. Pritchett, “BASE: An Acid Alternative”, ACM Queue vol. 6, no. 3, Julho 2008.
  14. 14. SGBD X NoSQL• Modelo Relacional• Esse modelo entra em contraste com o paradigma ACID(Atomicity, Consistency, Isolation, Durability) comumenteassociado aos SGBDs relacionais. Enquanto o modelo ACID força aconsistência ao final de cada operação, o modelo BASE permiteque o banco de dados esteja eventualmente em um estadoconsistente. A disponibilidade do modelo BASE está relacionadaao fato de que a queda de uma máquina do sistema não leva osistema como um todo a ser interrompido, representando apenasuma máquina a menos disponívelD. Pritchett, “BASE: An Acid Alternative”, ACM Queue vol. 6, no. 3, Julho 2008
  15. 15. ExemplosSQL MongoDBCREATE TABLE USERS (a Number, bNumber)db.createCollection("mycoll")INSERT INTO USERS VALUES(3,5) db.users.insert({a:3,b:5})SELECT a,b FROM users db.users.find({}, {a:1,b:1})SELECT a,b FROM users WHERE age=33 db.users.find({age:33}, {a:1,b:1})SELECT * FROM users WHERE age=33ORDER BY namedb.users.find({age:33}).sort({name:1})SELECT * FROM users WHERE age>33 db.users.find({age:{$gt:33}})SELECT * FROM users WHERE age!=33 db.users.find({age:{$ne:33}})SELECT * FROM users WHERE name LIKE"%Joe%"db.users.find({name:/Joe/})SELECT * FROM users WHERE a=1 andb=qdb.users.find({a:1,b:q})
  16. 16. Exemplos• $lt – menor que• $gt – maior que• $lte – menor ou igual a• $gte – maior ou igual a• $ne – diferente de• $in – está em (recebe uma lista)• $nin – não está em• $mod – resto igual a (recebe uma lista onde o primeiro valor é odivisor e o segundo o resto)• $exists – contém ou não o atributo• $not – negação de uma condição
  17. 17. NoSQL V Relacional ?
  18. 18. Concluindo
  19. 19. Referências• http://ulbra-to.br/encoinfo/artigos/2012/Utilizacao_da_Classe_de_Banco_de_%20Dados_NOSQL_como_Solucao_para_Manipulacao_de_Diversas_Estruturas_de_Dados.pdf• http://www.infobrasil.inf.br/userfiles/27-05-S4-1-68840-Bancos%20de%20Dados%20NoSQL.pdf• http://www.addlabs.uff.br/sbsc_site/SBSC2011_NoSQL.pdf

×