nosql, base vs acid e teorema cap

Post on 14-Jun-2015

2.565 Views

Category:

Education

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

NoSQLBASE vs ACIDTeorema CAP

Nome: Aricelio de Souza Fernandes

Curso: TADS

Turma: 3º Periodo

NoSQL

O que é ? Quando surgiu? Qual seu objetivo?

O que é ?

É uma denominação para bancos de dados não-relacionais.

Isso não quer dizer que seus modelos não possuem relacionamentos.

E sim, que não são orientados a tabelas. Not Only SQL. (Não Apenas SQL)

Quando surgiu ?

O termo foi usado pela primeira vez em 1998 para um banco de dados relacional que omitiu o uso de SQL.

O termo foi usado novamente em 2009 e usado para conferências de defensores de bancos de dados não-relacionais

Qual seu Objetivo?

Atender as necessidades das aplicações, que necessitam de alta disponibilidade dos seus dados e rápido desempenho do processamento dos mesmos.

Exemplo: A google consegue processar até 20 petabytes de dados por dia armazenadas em BigTable.

Principais Características

Escalabilidade Horizontal. Ausência de Esquema ou Esquema Flexível. Suporte a Replicação. API Simples. Nem Sempre é Consistente.

Escalabilidade Horizontal

A escalabilidade Horizontal consiste em aumentar o número de máquinas disponíveis.

A escalabilidade Horizontal em modelos relacionais seria inviável devido a concorrência.

Como nos modelos NoSQL não existe bloqueios, esse tipo de escalabilidade é a mais viável.

Ausência de Esquema ou Esquema Flexível

Apresentam ausência de Esquema ou esquema flexível, isso permite uma fácil aplicação da escalabilidade e também um aumento na disponibilidade dos dados.

Mas também devido a essa ausência, não há garantia da integridade dos dados.

Suporte a Replicação

Permitem a replicação de uma forma nativa o que provém uma escalabilidade maior e também uma diminuição do tempo gasto para a recuperação de informações.

API Simples

Para que o acesso ás informações seja feito da forma mais rápida possível, APIs são desenvolvidos para que qualquer aplicação possa ter acesso aos dados do banco de dados.

Nem sempre Consistente

Os bancos de dados NoSQL nem sempre conseguem se manter consistentes

Técnicas para Implementação

Map/Reduce. Consistent Hashing. Multiversion Concurrency Control. Vector Clocks.

Map Reduce

Map: O nó principal recebe os dados, divide em partes menores e as envia aos outros nós para serem processados. Ao final do processamento estes nós devolvem o resultado ao nó principal.

Reduce: O nó principal combina as respostas obtidas pelos outros nós gerando o resultado final do processamento.

Consistent Hashing

Essa funcionalidade tem a função de suportar o mecanismos de armazenamento e recuperação em bancos de dados distribuídos.

Multiversion Concurrency Control

O MVCC dá suporte a transações paralelas em um banco de dados. Por não utilizar bloqueios ele permite que operações de leitura e escrita sejam efetuadas simultaneamente, diferente do esquema clássico de gerenciamento de transações.

Vector Clocks

Determina qual versão de um dado distribuído é a mais atual. Devido há muitas operações que possam ocorrer com esse dado.

Principais Modelos de NoSQL

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.

Banco de dados chave-valor (key-value) Modelo mais simples. Permite a visualização do banco

como uma grande tabela. Todo o banco é composto por um

conjunto de chaves que estão associadas a um único valor.

Exemplo:

Banco de dados Orientado a Colunas. Um pouco mais complexos. Os dados são indexados por uma tripla (linha,

coluna e timestramp). As linhas e as colunas são identificadas por

chaves e o timestramp é o que permite identificar as diferentes versões de um mesmo dado.

Exemplo:

Características:• Permiti Particionamento.• Forte Consistência.• Não garante alta disponibilidade.

Banco de dados Orientado a Documentos

Armazena uma coleção de documentos. Um documento no geral, é um objeto com um

código único e um conjunto de campos, que podem ser strings, listas ou documentos aninhados.

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 esse modelo podemos citar o CouchDB e o MongoDB.

Banco de dados Orientado a Grafos

Neste modelo, o banco pode ser comparado com um multigrafo rotulado e direcionado, onde cada nó pode ser conectado por mais de uma aresta.

Possui três componentes básicos: os nós (são os vértices do grafo), os relacionamentos (são as arestas) e as propriedades (ou atributos) dos nós e relacionamentos.

BASE vs ACID

Propriedades ACID: Atomicidade: A transação será executada

totalmente ou 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á mais perdido.

BASE vs ACID

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 consistente todo o tempo (Estado Leve) e o sistema torna-se consistente no momento devido (Eventualmente Consistente).

Tabela de ComparaçãoACID BASE

Consistência forte Fraca consistência

Isolamento Foco em Disponibilidade

Concentra-se em "commit" Melhor esforço

Transações aninhadas Respostas aproximadas

Disponibilidade Mais simples e mais rápido

Conservador (pessimista) Agressivo (otimista)

Evolução difícil (por exemplo, esquema) Evolução mais fácil

Teorema CAP Definição

• Consistência – Consistency.

• Disponibilidade – Availability.

• Tolerância ao Particionamento - Partition tolerance.

Consistency - Consistência

Significa se um sistema esta consistente, após a execução de uma operação. Por exemplo um sistema é considerado consistente se depois da atualização de um dado, todos os usuários que tem acesso a esse dado, possam acessá-lo em tempo real.

Availability - Disponibilidade

Refere-se á concepção e implementação de um sistema de modo que seja assegurado que esse permanece ativo durante um determinado período de tempo.

Partition tolerance – Tolerância ao Particionamento

Refere-se a capacidade de um sistema continuar operando mesmo depois uma falha na rede.

Consistência

Tolerância ao Particionamento

Disponibilidade

Sistemas CA

• Os sistemas com consistência forte e alta disponibilidade não sabem lidar com a possível falha de uma partição.

• Caso ocorra, sistema inteiro pode ficar indisponível até o membro do cluster voltar.

Consistência

Tolerância ao Particionamento

Disponibilidade

Sistemas CP

• Para sistemas que precisam da consistência forte e tolerância a particionamento é necessário abrir a mão da disponibilidade (um pouco).

• Exemplos são BigTable, HBase ou MongoDB entre vários outros.

Consistência

Tolerância ao Particionamento

Disponibilidade

Sistemas APHá sistemas que jamais podem ficar offline, portanto não desejam sacrificar a disponibilidade. Para ter alta disponibilidade mesmo com um tolerância a particionamento é preciso prejudicar a consistência. Exemplos de Bancos são: Cassandra, MongoB, Voldemort.

Consistência

Tolerância ao Particionamento

Disponibilidade

Para que é indicado o NoSQL ?

Indicado para aplicações que irão trabalhar com enormes quantidades de dados, que tem exigências de velocidade em suas consultas e escritas em grande volumes de dados.

Principais sistemas no mercado

MongoDB CouchDB Cassandra Project Valdemort (by Linkedin) Redis (by Google) HBase (by Apache) Dynamo (by Amazon) dentre muitos outros…

Principais utilizadores do NoSQL

Google - Bigtable. Amazon - Dynamo. Yahoo - Hadoop. Facebook - Cassandra. Digg - Cassandra. Twitter - Cassandra. IBM - Cassandra. Netflix - Cassandra. LinkedIn - Voldemort. Engine Yard - MongoDB.

MySQL ndb Cluster MySQL Cluster é um gravador-escalável, em

tempo real, projetado para oferecer 99,999% de disponibilidade. Com uma arquitetura multi-master distribuída e nenhum ponto de falha, o MySQL Cluster escala horizontalmente em hardware com auto-particionamento para servir a ler e escrever cargas de trabalho intensivas, acessado via SQL e interface NoSQL.

Prove alta disponibilidade e alto desempenho, com escalabilidade horizontal.

Passos para a Instalação 1. Download

link: 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.

Conclusão

Principais focos do NoSQL:

Desempenho das aplicações mediante a uma enorme quantidade de dados.

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 suprir as novas necessidades das aplicações tem hoje.

Fazendo então assim que possa gerenciar os seus dados de uma forma mais eficiente.

Dúvidas ?

Obrigado!

top related