2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
-
Upload
meritt-cada-aluno-e-unico -
Category
Technology
-
view
508 -
download
3
description
Transcript of 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
![Page 1: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/1.jpg)
NoSQLE o futuro dos bancos de dados na web
![Page 2: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/2.jpg)
Visão Geral● Usado em empresas como Google, Facebook e Twitter.
● Criado pelo Google através de um documento sobre seu banco de dados interno, o BigTable.
● Inúmeras implementações.
● Altíssima Performance.
● Altamente escalável, especialmente entre vários computadores.
● Limita número de consultas possíveis.
![Page 3: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/3.jpg)
Principais vantagens● Uso de MapReduce
● Armazenamento de grandes quantidades de dados
● Respostas praticamente instantâneas.
● Grande adoção por grande parte das empresas.
● É fácil encontrar suporte para BD's NoSQL na internet.
● Grande ritmo de atualizações.
![Page 4: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/4.jpg)
Principais desvantagens● A complexidade que você evita no modelo
de banco de dados é repassada para o seu código, para o seu aplicativo.
● Necessário bom nível de conhecimento (e paciência) para se obter um bom uso.
![Page 5: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/5.jpg)
Diferenciais no schema● Modelar um banco de dados relacional é na
maioria das vezes...fácil. No NoSQL, entretanto, por existir várias implementações de bancos de dados, cada software costuma ter seu próprio esquema de dados.
![Page 6: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/6.jpg)
Modelo base● Nome do banco de dados: my_product
● Para o banco de dados: MariaDB/MySQL.
● Schema de dados:
![Page 7: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/7.jpg)
MySQL - Inserir● INSERT INTO users VALUES(1,
"Fernando", "123");
● INSERT INTO favorites VALUES(NULL, "Meritt", 1);
![Page 8: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/8.jpg)
MySQL - Editar● UPDATE usuarios SET nome="Fernando
Jorge Mota" WHERE id=1;
● UPDATE favorites SET obj="Meritt e Python" WHERE user=1;
![Page 9: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/9.jpg)
MySQL - Apagar● DELETE FROM favorites WHERE user=1;
![Page 10: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/10.jpg)
MySQL - Visualizar● SELECT * FROM favorites WHERE
user=1;● SELECT * FROM favorites;
![Page 11: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/11.jpg)
Implementações● Para esta apresentação, foram selecionados
três bancos de dados que merecem nossa atenção. São eles:
○ MongoDB
○ Apache Cassandra
○ Apache Hive
![Page 12: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/12.jpg)
MongoDB - Visão Geral● Criado e suportado pela 10gen.
● Cada registro pode ter no máximo 16 MB.
● Suporte à consultas MapReduce em JavaScript.
● Armazena documentos, sendo o banco de dados NoSQL mais semelhante à um banco de dados relacional.
● Aggregate Framework substitui consultas simples do MySQL.
● Suporte à sharded clusters e replica sets.
![Page 13: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/13.jpg)
MongoDB - Vantagens● Drivers para inúmeras linguagens.
● Simples de usar.
● Multiplataforma. (roda até em Windows!!1)
● Possui alta performance.
● Fácil criação de clusters de máquinas com os sharded clusters.
● Alta confiabilidade com os replica sets.
● Por ser feito em C++, possui fácil instalação e possui pacotes para inúmeras distribuições Linux, facilitando a atualização.
![Page 14: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/14.jpg)
MongoDB - Desvantagens● Conhecido por possuir grande consumo de
memória.
● Vem com modo confiável de escrita desativado por padrão. (é possível ativar manualmente)
● Demora até 100ms para gravar os dados efetivamente no disco.
● Não comprime eficientemente os dados.
![Page 15: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/15.jpg)
MongoDB - Schema● Por ser orientado a documentos, o schema
permanece o mesmo que o de um banco de dados relacional, pelo menos para este caso.
● Dependendo do caso, obviamente o schema muda. Por exemplo, uma relação num banco de dados relacional pode virar um sub-documento no MongoDB..Ou virar uma lista, apenas..Enfim.
![Page 16: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/16.jpg)
MongoDB - Inserir● db.my_product.users.insert
({"username":"Fernando", "password":"123","_id":1});
● db.my_product.favorites.insert({"obj":"Meritt", "user": 1});
![Page 17: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/17.jpg)
MongoDB - Editar● db.my_product.users.update({"_id":1},
{"$set":{"username":"Fernando Jorge Mota"}});
● db.my_product.favorites.update({"user":1}, {"$set":{"obj":"Meritt e Python"}});
![Page 18: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/18.jpg)
MongoDB - Apagar● db.my_product.favorites.remove({"user":
1});
![Page 19: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/19.jpg)
MongoDB - Consultar● db.my_product.favorites.find({"user":1})● db.my_product.favorites.find()
![Page 20: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/20.jpg)
Cassandra - Visão Geral● Altíssima velocidade.
● Desenvolvido internamente pelo Facebook e mantido atualmente no incubador do Apache Foundation.
● Alta confiabilidade.
● Uso de compressão eficiente de dados.
● Bela arquitetura de dados.
● Possui o melhor do DynamoDB (Amazon) e BigTable (Google)
![Page 21: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/21.jpg)
Cassandra - Vantagens● Armazenamento de enormes quantidades de dados
● Relativamente simples de usar.
● Alta velocidade de escrita. (maior do que de leitura)
● Possui suporte ao CQL, ou Cassandra Query Language, que lembra um pouco consultas SQL.
● Se integra (ainda experimentalmente) com MariaDB, para armazenamento de dados e consultas simples.
● Armazenamento chave-valor.
![Page 22: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/22.jpg)
Cassandra - Desvantagens● Dificuldade para fazer consultas SIMPLES sem
uso de ferramentas adicionais.
● Consultas MapReduce? Só com Hadoop e em Java (ou Hadoop+Hive e um tipo maluco de linguagem SQL)
● Possui poucos drivers. (que são suportados pela comunidade e são muito pouco atualizados)
![Page 23: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/23.jpg)
Cassandra - Schema● No Cassandra, o modelo relacional
persiste, mas em partes: O uso de indíces com grande variação de dados não é recomendado, e os itens são acessados diretamente através da sua chave primária.
![Page 24: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/24.jpg)
Cassandra - Inserir● set users[1][username] = Fernando;
● set users[1][password] = 123;
● set favorites[1][obj] = Meritt;
● set favorites[1][user] = 1;
![Page 25: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/25.jpg)
Cassandra - Editar● set favorites[1][obj] = 'Meritt e Python';
![Page 26: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/26.jpg)
Cassandra - Apagar● del favorites[1];
![Page 27: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/27.jpg)
Cassandra - Consultar● get favorites[1];● list favorites;
![Page 28: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/28.jpg)
Cassandra - Observação● Sim, jovem padawan. 100% do que é possível
fazer com o Apache Cassandra precisa do uso de uma chave primária conhecida.
● É até possível utilizar indices secundários, que permitiriam o uso de qualquer campo. Mas aí entra alguns fatores limitadores, como a não recomendação de usar como indíce campos que não se repetem frequentemente, por exemplo..
![Page 29: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/29.jpg)
HBase - Visão Geral● Alta velocidade.
● Alta confiabilidade.
● Suporta bilhões de linhas com milhões de colunas cada.
● É mantido na Apache Foundation, assim como o Apache Cassandra.
● Modelado de acordo com o Google BigTable
![Page 30: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/30.jpg)
HBase - Vantagens● Armazenamento de enormes (mas
ENORME mesmo) quantidades de dados
● Alta velocidade de escrita.
![Page 31: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/31.jpg)
HBase - Desvantagens● Dificuldade para fazer consultas SIMPLES sem
uso de ferramentas adicionais.
● Consultas MapReduce? Só com Hadoop e em Java (ou Hadoop+Hive e um tipo maluco de linguagem SQL)
● Possui poucos drivers. (que são suportados pela comunidade e são muito pouco atualizados)
![Page 32: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/32.jpg)
HBase - Schema● O schema no HBase é similar ao que é
possível encontrar no Cassandra. A maior diferença, entretanto, é que enquanto no Cassandra é possível separar por família de colunas (ID) ~> colunas, no HBase fica tudo misturado.
● Além disso..
![Page 33: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/33.jpg)
HBase - Ops..● Durante os testes com o HBase notou-se que a
configuração é díficil.
● É tão díficil e mal documentada que eu iria gastar mais tempo tentando resolver os problemas da plataforma do que fazendo este slide, por si só. Enfim, tudo o que sabemos é que, de fato, dizem que ele consegue armazenar grandes quantidades de dados..mas será que vale trocar pela dificuldade na configuração?
![Page 34: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/34.jpg)
ConclusãoDurante o uso dos três bancos de dados percebi que:● MongoDB é legal para aplicações que
precisam de alta velocidade, suporte à clusters mas ainda com estrutura similar ao que é possível encontrar relacionalmente.
● Cassandra é legal se você quer alta velocidade de escrita. E tem paciência.
![Page 35: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/35.jpg)
ConclusãoDurante o uso dos três bancos de dados percebi que:● HBase é legal......se você tiver tempo para
entender sua natureza obscura.● Sobre o NoSQL... Se você quer entender
definitivamente o por quê suas consultas no MySQL estão lentas, e se você quer que o seu banco de dados escale com facilidade entre vários computadores.
![Page 36: 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web](https://reader033.fdocumentos.com/reader033/viewer/2022052505/55625455d8b42a1b4b8b500a/html5/thumbnails/36.jpg)
Conclusão● É isso..Dúvidas? :D