NoSQL, Base VS ACID e Teorema CAP

4,978 views

Published on

Introdução aos conceitos de NoSQL, BASE vs ACID e o Teorema CAP

Published in: Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,978
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
183
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

NoSQL, Base VS ACID e Teorema CAP

  1. 1. NoSQLBASE vs ACIDTeorema CAPNome: Aricelio de Souza FernandesCurso: TADSTurma: 3º Periodo
  2. 2. O que é ?Quando surgiu?Qual seu objetivo?
  3. 3. É uma denominação para bancos de dadosnão-relacionais.Isso não quer dizer que seus modelos nãopossuem relacionamentos.E sim, que não são orientados a tabelas.Not Only SQL. (Não Apenas SQL)
  4. 4. O termo foi usado pela primeira vez em 1998para um banco de dados relacional que omitiuo uso de SQL.O termo foi usado novamente em 2009 e usadopara conferências de defensores de bancos dedados não-relacionais
  5. 5. Atender as necessidades das aplicações, quenecessitam de alta disponibilidade dos seusdados e rápido desempenho doprocessamento dos mesmos.Exemplo: A google consegue processar até 20petabytes de dados por dia armazenadas emBigTable.
  6. 6. Escalabilidade Horizontal.Ausência de Esquema ou Esquema Flexível.Suporte a Replicação.API Simples.Nem Sempre é Consistente.
  7. 7.  A escalabilidade Horizontal consiste em aumentar onúmero de máquinas disponíveis. A escalabilidade Horizontal em modelos relacionaisseria inviável devido a concorrência. Como nos modelos NoSQL não existe bloqueios, essetipo de escalabilidade é a mais viável.
  8. 8. Apresentam ausência de Esquema ou esquemaflexível, isso permite uma fácil aplicação daescalabilidade e também um aumento nadisponibilidade dos dados.Mas também devido a essa ausência, não hágarantia da integridade dos dados.
  9. 9. Permitem a replicação de uma forma nativa oque provém uma escalabilidade maior etambém uma diminuição do tempo gasto paraa recuperação de informações.
  10. 10. Para que o acesso ás informações seja feito daforma mais rápida possível, APIs sãodesenvolvidos para que qualquer aplicaçãopossa ter acesso aos dados do banco dedados.
  11. 11. Os bancos de dados NoSQL nem sempreconseguem se manter consistentes
  12. 12. Map/Reduce.Consistent Hashing.Multiversion Concurrency Control.Vector Clocks.
  13. 13. Map: O nó principal recebe os dados, divideem partes menores e as envia aos outros nóspara serem processados. Ao final doprocessamento estes nós devolvem o resultadoao nó principal.Reduce: O nó principal combina as respostasobtidas pelos outros nós gerando o resultadofinal do processamento.
  14. 14. Essa funcionalidade tem a função de suportar omecanismos de armazenamento erecuperação em bancos de dados distribuídos.
  15. 15. O MVCC dá suporte a transações paralelas emum banco de dados. Por não utilizar bloqueiosele permite que operações de leitura e escritasejam efetuadas simultaneamente, diferente doesquema clássico de gerenciamento detransações.
  16. 16. Determina qual versão de um dado distribuídoé a mais atual. Devido há muitas operaçõesque possam ocorrer com esse dado.
  17. 17. Banco de dados chave-valor (key-value).Banco de dados Orientado a Colunas.Banco de dados Orientado a Documentos.Banco de dados Orientado a Grafos.
  18. 18. Modelo mais simples.Permite a visualização do bancocomo uma grande tabela.Todo o banco é composto porum conjunto de chaves que estãoassociadas a um único valor.
  19. 19. Um pouco mais complexos.Os dados são indexados por uma tripla (linha,coluna e timestramp).As linhas e as colunas são identificadas porchaves e o timestramp é o que permiteidentificar as diferentes versões de um mesmodado.
  20. 20. Características:• Permiti Particionamento.• Forte Consistência.• Não garante alta disponibilidade.
  21. 21. Armazena uma coleção de documentos.Um documento no geral, é um objeto com umcódigo único e um conjunto de campos, quepodem ser strings, listas ou documentosaninhados.Sua estrutura se assemelha com de chave-valor.
  22. 22. Não depende de um esquema rígido, ou seja,não há exigência de uma estrutura fixa.Dentre os bancos de dados que utilizam essemodelo podemos citar o CouchDB e o MongoDB.
  23. 23. Neste modelo, o banco pode ser comparadocom um multigrafo rotulado e direcionado, ondecada nó pode ser conectado por mais de umaaresta.Possui três componentes básicos: os nós (são osvértices do grafo), os relacionamentos (são asarestas) e as propriedades (ou atributos) dos nós erelacionamentos.
  24. 24. Propriedades ACID:Atomicidade: A transação será executada totalmenteou não será executada.Consistência: Garante que o banco de dados passaráde uma forma consistente para outra forma consistente.Isolamento: Garante que a transação não seráinterferida por nenhuma outra transação concorrente.Durabilidade: Garante que o que foi salvo, não será maisperdido.
  25. 25. Propriedades BASE:Basically Available – Basicamente Disponível.Soft-State – Estado LeveEventually Consistent – Eventualmente Consistente.Uma aplicação funciona basicamente todo o tempo(Basicamente Disponível), não tem de ser consistentetodo o tempo (Estado Leve) e o sistema torna-seconsistente no momento devido (EventualmenteConsistente).
  26. 26. ACID BASEConsistência forte Fraca consistênciaIsolamento Foco em DisponibilidadeConcentra-se em "commit" Melhor esforçoTransações aninhadas Respostas aproximadasDisponibilidade Mais simples e mais rápidoConservador (pessimista) Agressivo (otimista)Evolução difícil (por exemplo, esquema) Evolução mais fácil
  27. 27. Definição• Consistência – Consistency.• Disponibilidade – Availability.• Tolerância ao Particionamento - Partition tolerance.
  28. 28. Significa se um sistema esta consistente, após aexecução de uma operação. Por exemplo umsistema é considerado consistente se depois daatualização de um dado, todos os usuários quetem acesso a esse dado, possam acessá-lo emtempo real.
  29. 29. Refere-se á concepção e implementação deum sistema de modo que seja assegurado queesse permanece ativo durante um determinadoperíodo de tempo.
  30. 30. Refere-se a capacidade de um sistemacontinuar operando mesmo depois uma falhana rede.
  31. 31. ConsistênciaTolerância aoParticionamentoDisponibilidade
  32. 32. • Os sistemas com consistênciaforte e alta disponibilidade nãosabem lidar com a possível falhade uma partição.• Caso ocorra, sistema inteiropode ficar indisponível até omembro do cluster voltar.
  33. 33. ConsistênciaTolerância aoParticionamentoDisponibilidade
  34. 34. • Para sistemas que precisam daconsistência forte e tolerância aparticionamento é necessárioabrir a mão da disponibilidade(um pouco).• Exemplos são BigTable, HBase ouMongoDB entre vários outros.
  35. 35. ConsistênciaTolerância aoParticionamentoDisponibilidade
  36. 36. Há sistemas que jamais podem ficaroffline, portanto não desejamsacrificar a disponibilidade. Para teralta disponibilidade mesmo com umtolerância a particionamento épreciso prejudicar a consistência.Exemplos de Bancos são: Cassandra,MongoB, Voldemort.
  37. 37. ConsistênciaTolerância aoParticionamentoDisponibilidade
  38. 38. Indicado para aplicações que irão trabalharcom enormes quantidades de dados, que temexigências de velocidade em suas consultas eescritas em grande volumes de dados.
  39. 39. MongoDBCouchDBCassandraProject Valdemort (by Linkedin)Redis (by Google)HBase (by Apache)Dynamo (by Amazon)dentre muitos outros…
  40. 40.  Google - Bigtable. Amazon - Dynamo. Yahoo - Hadoop. Facebook - Cassandra. Digg - Cassandra. Twitter - Cassandra. IBM - Cassandra. Netflix - Cassandra. LinkedIn - Voldemort. Engine Yard - MongoDB.
  41. 41. MySQL Cluster é um gravador-escalável, emtempo real, projetado para oferecer 99,999% dedisponibilidade. Com uma arquitetura multi-master distribuída e nenhum ponto de falha, oMySQL Cluster escala horizontalmente emhardware com auto-particionamento paraservir a ler e escrever cargas de trabalhointensivas, acessado via SQL e interface NoSQL.Prove alta disponibilidade e alto desempenho,com escalabilidade horizontal.
  42. 42.  1. Downloadlink: http://dev.mysql.com/downloads/cluster/ 2. Instalação.Localizar o arquivo, extrai-lo e criar um link para o mesmo. 3. Configuração.Criar a pasta que irá armazenar os arquivos de configuração.My.cnf e Config.ini 4. Execução.Iniciar o processo do nó de gerenciamento, nó de dados e por último o mysql. 5. Teste.Criar uma tabela no nó de gerenciamento e inserir dados no mesmo.
  43. 43.  Principais focos do NoSQL: Desempenho das aplicações mediante a uma enorme quantidade dedados. Escalabilidade horizontal. Fácil implantação e uso dos bancos de dados NoSQL. O NoSQL não veio para substituir o modelo relacional, mas sim tentar supriras novas necessidades das aplicações tem hoje. Fazendo então assim que possa gerenciar os seus dados de uma formamais eficiente.

×