Buscar

20210414 - NoSql - Revisão AV1

Prévia do material em texto

Prof. Giuliano Nascimento Ribeiro
1
NoSql
NOSQL
NoSQL é um termo guarda-chuva, que engloba uma série de tecnologias diferentes que não são necessariamente semelhantes, mas que possuem uma característica de não ser tabular.
Dados são armazenados de forma diferente da relação linha/coluna
Tecnologias de natureza NÃO relacional.
Prof. Giuliano Nascimento Ribeiro
2
NOSQL
As bases de dados SQL respeitam o modelo relacional, pois baseiam-se no fato de todos os dados serem guardados em tabelas.
Temos como principais exemplos de bases de dados SQL:
SQL Server, MySQL, Firebird, Sybase, Oracle ou IBM DB2.
Prof. Giuliano Nascimento Ribeiro
3
NOSQL
Pelo SQL ser uma base de dados relacional temos sempre as propriedades ACID (Atomicidade, Consistência, Isolamento e Durabilidade).
Estas quatro propriedades descrevem as principais características de uma transação em SQL.
Prof. Giuliano Nascimento Ribeiro
4
NOSQL
Atomicidade
Uma transação deve ter todas as suas operações executadas com sucesso. 
Em caso de falha de alguma operação, é necessário proceder ao rollback.
Prof. Giuliano Nascimento Ribeiro
5
NOSQL
Consistência
Uma transação deve respeitar a integridade dos dados.
Prof. Giuliano Nascimento Ribeiro
6
NOSQL
Isolamento
Uma transação em andamento mas ainda não validada deve permanecer isolada de qualquer outra operação, ou seja, garantimos que a transação não será interferida por nenhuma outra transação concorrente.
Prof. Giuliano Nascimento Ribeiro
7
NOSQL
Durabilidade
Garante que o que foi salva não será perdido.
As transações com sucesso devem persistir na base de dados mesmo que haja alguma anomalia externa à mesma, ou seja, devemos sempre registar as mesmas em memória não-volátil.
Dados validados são registados pelo sistema de tal forma que mesmo no caso de uma falha e/ou reinício do sistema, os dados deve estar disponíveis em seu correto estado.
Prof. Giuliano Nascimento Ribeiro
8
NOSQL
NoSQL (Not Only SQL) é um termo genérico que representa os bancos de dados não relacionais.
Prof. Giuliano Nascimento Ribeiro
9
NOSQL
Os bancos NoSQL, diferente dos bancos tradicionais, como: Oracle, MySQL, SQL Server e outros, não são necessariamente do mesmo tipo.
Cada um adota um ou mais modelos de dados. 
Documento.
Chave e valor.
Coluna.
Grafo.
Prof. Giuliano Nascimento Ribeiro
10
NOSQL
Prof. Giuliano Nascimento Ribeiro
11
Tipos de NOSQL
Prof. Giuliano Nascimento Ribeiro
12
NOSQL – Tipos de Dados
Prof. Giuliano Nascimento Ribeiro
13
Tipos de Banco de Dados
Coluna: Accumulo, Cassandra, Druid, HBase, Vertica
Documento: Apache CouchDB, Elasticsearch, ArangoDB, BaseX, Clusterpoint, Couchbase, Cosmos DB, IBM Dominio, MarkLogic, MongoDB, OrientDB, Qizx, RethinkDB
Prof. Giuliano Nascimento Ribeiro
14
Tipos de Banco de Dados
Chave-valor: Aerospike, Apache Ignite, ArangoDB, Couchbase, Dynamo, FairCom c-treeACE, FoundationDB, InfinityDB, MemcacheDB, MUMPS, Oracle NoSQL Database, OrientDB, Redis, Riak, Berkeley DB, SDBM/Flat File dbm, ZooKeeper
Prof. Giuliano Nascimento Ribeiro
15
Tipos de Banco de Dados
Grafo: AllegroGraph, ArangoDB, InfiniteGraph, Apache Giraph, MarkLogic, Neo4J, OrientDB, Virtuoso
Multi-modelo: Apache Ignite, ArangoDB, Couchbase, FoundationDB, InfinityDB, MarkLogic, OrientDB
Prof. Giuliano Nascimento Ribeiro
16
Diferenças
Prof. Giuliano Nascimento Ribeiro
17
Diferenças
SQL
São estruturadas em linguagem de consulta(SQL) para definição e manipulação de dados.
Representado o meio mais utilizado, sendo uma escolha segura e especialmente ótima para consultas complexas.
Prof. Giuliano Nascimento Ribeiro
18
Diferenças
SQL – Outro Lado
Exige que você use esquemas pré-definidos para determinara estrutura de dados antes de trabalhar com eles.
Todos os seus dados devem seguir a mesma estrutura.
Prof. Giuliano Nascimento Ribeiro
19
SQL – Modelo Relacional
Prof. Giuliano Nascimento Ribeiro
20
SQL – Modelo de Classes
Prof. Giuliano Nascimento Ribeiro
21
Diferenças
Prof. Giuliano Nascimento Ribeiro
22
Diferenças
NoSQL
Uma base de dados NoSQL tem um esquema dinâmico para dados não estruturados, e o dado é armazenado em várias formas:
Orientado a coluna;
Orientado a documento;
Baseado em grafos;
Organizado como chave-valor;
Prof. Giuliano Nascimento Ribeiro
23
Diferenças
NoSQL
A flexibilidade permite que:
Seja criado documentos sem ter que definir sua estrutura primeiro;
Cada documentos tenha sua própria estrutura única;
A sintaxe varie de base de dados para base de dados;
Seja adicionado campos sempre que precisar.
Prof. Giuliano Nascimento Ribeiro
24
Diferenças
NoSQL - Particionamento horizontal é um princípio de projeto de banco de dados pelo qual as linhas de um banco de dados são armazenadas separadamente, em vez de serem quebradas em colunas (que é o que a normalização e o particionamento vertical fazem, para diferenciar extensões). 
Cada partição forma parte de um shard, que pode, por sua vez, ser instalada em um servidor de banco de dados ou localização física separados. 
Prof. Giuliano Nascimento Ribeiro
25
Diferenças
Um shard de banco de dados (Fragmento de banco de dados)
Representa uma partição horizontal de dados em um banco de dados ou mecanismo de busca. 
Cada partição individual é referenciada como um shard ou shard de banco de dados. 
Cada shard é armazenado em uma instância de servidor de banco de dados separada, para distribuir a carga.
Prof. Giuliano Nascimento Ribeiro
26
Exemplo Shard
Prof. Giuliano Nascimento Ribeiro
27
Teorema CAP
Prof. Giuliano Nascimento Ribeiro
28
Após a atualização de um dado, todos os usuários que
tem acesso a esse dado, devem acessá-lo em
tempo real.
Refere-se a capacidade de um sistema continuar operando mesmo depois uma falha na rede.
Refere-se a concepção e implementação de um sistema de modo que seja assegurado que esse permanece ativo durante um determinado período de tempo.
Empresas que utilizam
Google - Bigtable.
Amazon - Dynamo.
Yahoo - Hadoop.
Facebook - Cassandra.
Digg - Cassandra.
Twitter - Cassandra.
IBM - Cassandra.
Netflix - Cassandra.
LinkedIn - Voldemort.
BNE (Banco Nacional de Empregos)- MongoDB
Prof. Giuliano Nascimento Ribeiro
29
Escalabilidade
SQL – são verticalmente escaláveis, podemos aumentar o carregamento em um servidor melhorando coisas como CPU, RAM OU SSD.
NoSQL – são horizontalmente escaláveis, oferecem suporte a sharding (particionamento de dados).
Prof. Giuliano Nascimento Ribeiro
30
Escala
Vertical – Seria como adicionar mais andares no mesmo prédio.
Horizontal – Seria adicionar mais prédios a vizinhança.
Prof. Giuliano Nascimento Ribeiro
31
Escalonamento
Banco de dados NoSQL tem facilidade em realizar o escalonamento horizontal, isso quer dizer, adiciona novos servidores em Cluster.
Banco de dados relacionais tem facilidade em realizar o escalonamento vertical, isso quer dizer, adiciona recursos a uma máquina como memória e CPU.
Prof. Giuliano Nascimento Ribeiro
32
Documento
Os dados são armazenados como documentos.
Os documentos podem ser descritos como dados no formato de chave-valor, como por exemplo, o padrão JSON (JavaScriptObjectNotation). 
Prof. Giuliano Nascimento Ribeiro
33
Documento
Exemplo (MongoDB)
Prof. Giuliano Nascimento Ribeiro
34
Documento
Trabalhando com NoSQL
Prof. Giuliano Nascimento Ribeiro
35
Documento
Prof. Giuliano Nascimento Ribeiro
36
Documento
Prof. Giuliano Nascimento Ribeiro
37
Exemplos
Prof. Giuliano Nascimento Ribeiro
38
Formato JSON de um documento a ser gravado no MongoDB
{
 "_id" : 8,
 "nome" : “Douglas Rocha Mendes",
 “idade" : 44,
 "info" : {
 “Cidade" : “Curitiba",
 “cargo" : “Desenvolvedor"
 },
 "preferences" : [
 “Cerveja Artesanal",
 “Futebol",
 “Trilhas 4x4"
 ]
 }
Onde:
_id – Chave (PK)
No mongoDB a chave é precedida por _
BD Relacional 		MongoDB
Banco de Dados		Banco de dados
Tabela 			Coleção
LinhaDocumento
Exemplos
Prof. Giuliano Nascimento Ribeiro
39
"info" : {
 “Cidade" : “Curitiba",
 “cargo" : “Desenvolvedor"
},
Onde:
info – documento interno/embedded document.
Composto por novas chaves.
Utiliza o caracter {
Exemplos
Prof. Giuliano Nascimento Ribeiro
40
"preferences" : [
 “Cerveja Artesanal",
 “Futebol",
 “Trilhas 4x4"
 ]
 
Onde:
Preferences - Arrays
Armazena valores sobre as preferências do usuário.
Utiliza o caractere [
Exemplos
Prof. Giuliano Nascimento Ribeiro
41
Neste novo documento a chave preferences não foi necessária. Em BD relacional teríamos as colunas sem conteúdo. Em milhares de registros apesar de pouco espaço necessário a soma representa um grande espaço desperdiçado.
Mongo
Abrir o Mongo no Shell
Prof. Giuliano Nascimento Ribeiro
42
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
43
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
44
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
45
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
46
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
47
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
48
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
49
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
50
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
51
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
52
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
53
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
54
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
55
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
56
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
57
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
58
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
59
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
60
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
61
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
62
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
63
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
64
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
65
Mongo
Comandos
Prof. Giuliano Nascimento Ribeiro
66

Continue navegando