NSQL Flashcards
O que é NoSQL?
- NoSQL significa Not Only SQL (Não Somente SQL)
- NoSQL pode ser utilizado para fazer consultas em SQL
- Bancos de dados distribuídos não relacionais
- Trabalham com Big Data
- Não possuem modelo de dados fixo
- Não são orientados a objeto
NoSQL – Características
- Aceitam SQL
- Trabalham com dados não estruturados e semiestruturados
- Aceitam diversos tipos de modelo de dados, incluindo schema-less
- Dados distribuídos globalmente
- Escalabilidade horizontal
NoSQL – Vantagens
- Rapidez de acesso
- Disponibilidade dos dados
- Escalabilidade
- Replicação de dados
- Flexibilidade
NoSQL – Quando usar?
- Dados mudando constantemente
- Armazenar dados semi e não estruturados
- Desenvolvimento ágil
- Big Data e análise de dados
- Sem requisitos rígidos de consistência e integridade
- Arquiteturas escaláveis
- Micro-serviços e real-time streaming
- Internet das coisas
NoSQL – o que não tem
- Esquemas/modelos de dados pré-definidos e estáveis
- Operações ACID (atomicity, consistency, isolation, durability)
- Normalização
- Imunidade a SQL Injection
- Menor variedade de possibilidades de consultas
- Padronização (dados, modelos, esquemas, modelos)
NoSQL – Teorema CAP
Teorema de Brewer: é impossível que o armazenamento de dados distribuído forneça simultaneamente mais de duas das três garantias seguintes:
* Consistência:
– Os clientes veem os mesmos dados em um instante de tempo
– Os dados gravados em um nó devem ser distribuídos para outro nó para que a transação seja finalizada
* Disponibilidade (availability):
– Cada pedido recebe uma resposta (sem erro)
* Partição tolerante a falhas:
– O cluster deve continuar a funcionar mesmo de ocorrer uma ou mais falhas de comunicação entre os nós no sistema
NoSQL – BASE
BASE é a sigla para Basically Available, Soft State with Eventual Consistency
* Valoriza a disponibilidade sobre a consistência
* Basically Available: operações de escrita e leitura estão disponíveis, mas sem consistência automática (a atualização dos nós pode levar algum tempo)
* Soft State: o estado dos dados não é garantido sem consistência
* Eventual Consistency: alterações em um banco de dados não são propagadas de forma imediata.
NoSQL – Tipos
- Chave-Valor: Redis (o mais famoso), DynamoDB, Riak, Tokyo Cabinet/Tyrant, Voldemort, Memcached, Scalaris, Amazon SimpleDB e Oracle BDB;
- Documentos: MongoDB (o mais famoso), Elasticsearch, DocumentDB, CouchDB, CouchBase, RavenDB, OrientDB, IBM Cloudant, CrateDB, BaseX e Lotus Notes;
- Graph: nós ligados por arestas (exemplo: João é amigo de Maria, que é amiga de José);
– Neo4j (o mais famoso), Neptune, HyperGraphDB, Infinite Graph, JanusGraph, InfoGrid, Titan e FlockDB - Colunar: tabelas com colunas independentes entre si
– Cassandra (o mais famoso), HBASE, Bigtable e Hypertable