nosql, base vs acid e teorema cap
DESCRIPTION
Introdução aos conceitos de NoSQL, BASE vs ACID e o Teorema CAPTRANSCRIPT
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!