02 NoSQL Flashcards
CAP Teorem: só consegue 2 dos 3 ao mesmo tempo
Consistency (atualizado)
Availability (Disponibilidade a escrita e leitura o tempo todo)
Partition-Tolerance (tolerância a particionamento dos dados na rede, servidores devem suportar falha de comunicação)
CP: Forte Consistência e Tolerância a Particionamento
Fator de Replicação (N) em que N é o número mínimo de servidores em que o dado deve ser copiado para existir
R = número mínimo de nodos (nós)para contatados para verificar leitura (read)
W = número mínimo de nodos (nós) para contatados para verificar escrita (write) = quórum
Para leitura altamente consistente: R + W > N
Exemplos:
MongoDB
Google Big Table
AP: Alta disponibilidade e tolerância a particionamento
Consistência-eventual:
(cria janela de consistência, pois podemos ler dados desatualizados)
Sempre disponível pra escrita e depois replica
Exemplos?
Cassandra
Riak
DynamoDB
CA: Forte consistência e alta disponibilidade
Máquina não particionada
SQL, não funciona bem pro NoSQL, portanto na prática, os bancos NoSQL tem que optar por alta disponibilidade ou alta consistência, pois são inversamente proporcionais
SQL -> ACID
NoSQL -> BASE
Atomicity, Consistency, Isolation, Durability
Basically Available = Basicamente Disponível
Soft-State = Estado Leve
Eventually Consistent = Eventualmente Consistente
Banco de Dados Chave-Valor - os registros pertenciem a mesma coleção de elementos, e todos possuem uma única chave (como se fosse uma única tabela SQL, 2 valores)
Família de Colunas (colunares) - todos os registros fazem parte da mesma tabela, mas podem conter diferentes colunas; número de colunas não é fixo
Documento - registros em coleções específicas, mas não há esquema fixo de registros (estrutura é flexível, não é rígida)
Grafo: registros são nós de um grafo e são interligados por relacionamentos / tem nós (vértices) e arestas (ligações entre dois vértices) / como se fossem fluxogramas etc
Exemplos:
Banco de Dados Chave-Valor: Redis, Riak
Família de Colunas (Colunares): Cassandra
Documentos: MongoDB
Grafo: Neo4j
4 tipos de banco de dados NoSQL:
5 Vs:
Volume Velocidade Variedade Veracidade Valor
a) armazenamento
b) processamento
c) densos x esparsos: muito ou pouco atributo por chave
d) 100% corretos ?
e) Gerar valor para o negócio
Modelo de dados agregados = MongoDB
Formato json, dentro de { }, semi-estruturado
Linguagem do MongoDB é Javascript
.
O grafo é uma estrutura de dados composta por um conjunto de vértices e um conjunto de arestas
Arestas podem ou não ser direcionadas (mão dupla ?)
Mão única -> Twitter
Mão dupla -> Facebook