• Like
  • Save
NoSQL, Base VS ACID e Teorema CAP
Upcoming SlideShare
Loading in...5
×
 

NoSQL, Base VS ACID e Teorema CAP

on

  • 1,767 views

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

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

Statistics

Views

Total Views
1,767
Views on SlideShare
1,767
Embed Views
0

Actions

Likes
0
Downloads
35
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    NoSQL, Base VS ACID e Teorema CAP NoSQL, Base VS ACID e Teorema CAP Presentation Transcript

    • NoSQLBASE vs ACIDTeorema CAPNome: Aricelio de Souza FernandesCurso: TADSTurma: 3º Periodo
    • O que é ?Quando surgiu?Qual seu objetivo?
    • É 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)
    • 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
    • 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.
    • Escalabilidade Horizontal.Ausência de Esquema ou Esquema Flexível.Suporte a Replicação.API Simples.Nem Sempre é Consistente.
    •  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.
    • 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.
    • 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.
    • 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.
    • Os bancos de dados NoSQL nem sempreconseguem se manter consistentes
    • Map/Reduce.Consistent Hashing.Multiversion Concurrency Control.Vector Clocks.
    • 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.
    • Essa funcionalidade tem a função de suportar omecanismos de armazenamento erecuperação em bancos de dados distribuídos.
    • 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.
    • Determina qual versão de um dado distribuídoé a mais atual. Devido há muitas operaçõesque possam ocorrer com esse dado.
    • 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.
    • 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.
    • 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.
    • Características:• Permiti Particionamento.• Forte Consistência.• Não garante alta disponibilidade.
    • 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.
    • 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.
    • 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.
    • 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.
    • 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).
    • 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
    • Definição• Consistência – Consistency.• Disponibilidade – Availability.• Tolerância ao Particionamento - Partition tolerance.
    • 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.
    • Refere-se á concepção e implementação deum sistema de modo que seja assegurado queesse permanece ativo durante um determinadoperíodo de tempo.
    • Refere-se a capacidade de um sistemacontinuar operando mesmo depois uma falhana rede.
    • ConsistênciaTolerância aoParticionamentoDisponibilidade
    • • 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.
    • ConsistênciaTolerância aoParticionamentoDisponibilidade
    • • 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.
    • ConsistênciaTolerância aoParticionamentoDisponibilidade
    • 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.
    • ConsistênciaTolerância aoParticionamentoDisponibilidade
    • 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.
    • MongoDBCouchDBCassandraProject Valdemort (by Linkedin)Redis (by Google)HBase (by Apache)Dynamo (by Amazon)dentre muitos outros…
    •  Google - Bigtable. Amazon - Dynamo. Yahoo - Hadoop. Facebook - Cassandra. Digg - Cassandra. Twitter - Cassandra. IBM - Cassandra. Netflix - Cassandra. LinkedIn - Voldemort. Engine Yard - MongoDB.
    • 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.
    •  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.
    •  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.