SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
NoSQL
E o futuro dos bancos de dados na web
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.
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.
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.
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.
Modelo base
● Nome do banco de dados: my_product
● Para o banco de dados: MariaDB/MySQL.
● Schema de dados:
MySQL - Inserir
● INSERT INTO users VALUES(1,
"Fernando", "123");
● INSERT INTO favorites VALUES(NULL,
"Meritt", 1);
MySQL - Editar
● UPDATE usuarios SET nome="Fernando
Jorge Mota" WHERE id=1;
● UPDATE favorites SET obj="Meritt e
Python" WHERE user=1;
MySQL - Apagar
● DELETE FROM favorites WHERE user=1;
MySQL - Visualizar
● SELECT * FROM favorites WHERE
user=1;
● SELECT * FROM favorites;
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
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.
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.
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.
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.
MongoDB - Inserir
● db.my_product.users.insert
({"username":"Fernando", "password":"
123","_id":1});
● db.my_product.favorites.insert({"obj":"
Meritt", "user": 1});
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"}});
MongoDB - Apagar
● db.my_product.favorites.remove({"user":
1});
MongoDB - Consultar
● db.my_product.favorites.find({"user":1})
● db.my_product.favorites.find()
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)
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.
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)
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.
Cassandra - Inserir
● set users[1][username] = Fernando;
● set users[1][password] = 123;
● set favorites[1][obj] = Meritt;
● set favorites[1][user] = 1;
Cassandra - Editar
● set favorites[1][obj] = 'Meritt e Python';
Cassandra - Apagar
● del favorites[1];
Cassandra - Consultar
● get favorites[1];
● list favorites;
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..
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
HBase - Vantagens
● Armazenamento de enormes (mas
ENORME mesmo) quantidades de dados
● Alta velocidade de escrita.
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)
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..
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?
Conclusão
Durante 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.
Conclusão
Durante 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.
Conclusão
● É isso..Dúvidas? :D

Mais conteúdo relacionado

Mais procurados

Conhecendo Apache Cassandra @Movile
Conhecendo Apache Cassandra  @MovileConhecendo Apache Cassandra  @Movile
Conhecendo Apache Cassandra @MovileEiti Kimura
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Marcelo Dieder
 
Apresentacao Cassandra
Apresentacao CassandraApresentacao Cassandra
Apresentacao CassandraPeslPinguim
 
Apresentação MongoDB
Apresentação MongoDBApresentação MongoDB
Apresentação MongoDBDavid de Lucca
 
NoSQL - Soluções alternativas para bancos de dados
NoSQL - Soluções alternativas para bancos de dadosNoSQL - Soluções alternativas para bancos de dados
NoSQL - Soluções alternativas para bancos de dadosNicolas Ibanheiz
 
Ad server cassandra
Ad server cassandraAd server cassandra
Ad server cassandradist_bp
 
Hadoop - Primeiros passos
Hadoop - Primeiros passosHadoop - Primeiros passos
Hadoop - Primeiros passosSensedia
 
Apresentação - MongoDB
Apresentação - MongoDBApresentação - MongoDB
Apresentação - MongoDBJDSBD
 
NoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDBNoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDBRodrigo Hjort
 
PGAnalytics - Facilitando sua vida do DBA
PGAnalytics - Facilitando sua vida do DBAPGAnalytics - Facilitando sua vida do DBA
PGAnalytics - Facilitando sua vida do DBADextra
 
MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014Fernando Boaglio
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveiselliando dias
 
Tuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresTuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresDouglas V. Pasqua
 
Desenvolvendo aplicativos web escaláveis
Desenvolvendo aplicativos web escaláveisDesenvolvendo aplicativos web escaláveis
Desenvolvendo aplicativos web escaláveisManuel Lemos
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPAricelio Souza
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
 

Mais procurados (20)

Hadoop
HadoopHadoop
Hadoop
 
Mongo db slides
Mongo db slidesMongo db slides
Mongo db slides
 
Conhecendo Apache Cassandra @Movile
Conhecendo Apache Cassandra  @MovileConhecendo Apache Cassandra  @Movile
Conhecendo Apache Cassandra @Movile
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?
 
Apresentacao Cassandra
Apresentacao CassandraApresentacao Cassandra
Apresentacao Cassandra
 
Apresentação MongoDB
Apresentação MongoDBApresentação MongoDB
Apresentação MongoDB
 
NoSQL - Soluções alternativas para bancos de dados
NoSQL - Soluções alternativas para bancos de dadosNoSQL - Soluções alternativas para bancos de dados
NoSQL - Soluções alternativas para bancos de dados
 
Ad server cassandra
Ad server cassandraAd server cassandra
Ad server cassandra
 
Hadoop
HadoopHadoop
Hadoop
 
Hadoop - Primeiros passos
Hadoop - Primeiros passosHadoop - Primeiros passos
Hadoop - Primeiros passos
 
Apresentação - MongoDB
Apresentação - MongoDBApresentação - MongoDB
Apresentação - MongoDB
 
NoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDBNoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDB
 
PGAnalytics - Facilitando sua vida do DBA
PGAnalytics - Facilitando sua vida do DBAPGAnalytics - Facilitando sua vida do DBA
PGAnalytics - Facilitando sua vida do DBA
 
MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveis
 
Tuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresTuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedores
 
Desenvolvendo aplicativos web escaláveis
Desenvolvendo aplicativos web escaláveisDesenvolvendo aplicativos web escaláveis
Desenvolvendo aplicativos web escaláveis
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAP
 
Proposta de arquitetura Hadoop
Proposta de arquitetura HadoopProposta de arquitetura Hadoop
Proposta de arquitetura Hadoop
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 

Semelhante a 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web

L'esprit de l'escalier
L'esprit de l'escalierL'esprit de l'escalier
L'esprit de l'escalierGleicon Moraes
 
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Ambiente Livre
 
Fisl banco de dados no sql de código aberto
Fisl   banco de dados no sql de código abertoFisl   banco de dados no sql de código aberto
Fisl banco de dados no sql de código abertoSuissa
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2Flávio Lisboa
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadospichiliani
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadospichiliani
 
Desenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDesenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDenis Vieira
 
NoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens ComputacionaisNoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens ComputacionaisCarlo Pires
 
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...iMasters
 
DocumentDB - Azure Fridays São Paulo
DocumentDB - Azure Fridays São PauloDocumentDB - Azure Fridays São Paulo
DocumentDB - Azure Fridays São PauloRenato Groff
 

Semelhante a 2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web (20)

L'esprit de l'escalier
L'esprit de l'escalierL'esprit de l'escalier
L'esprit de l'escalier
 
LT - Redis
LT - RedisLT - Redis
LT - Redis
 
NoSql e NewSql
NoSql e NewSqlNoSql e NewSql
NoSql e NewSql
 
No sql std
No sql stdNo sql std
No sql std
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 
Treinamento hadoop - dia3
Treinamento hadoop - dia3Treinamento hadoop - dia3
Treinamento hadoop - dia3
 
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
 
Fisl banco de dados no sql de código aberto
Fisl   banco de dados no sql de código abertoFisl   banco de dados no sql de código aberto
Fisl banco de dados no sql de código aberto
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
Artigo Nosql
Artigo NosqlArtigo Nosql
Artigo Nosql
 
Desenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDesenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full Javascript
 
NoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens ComputacionaisNoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens Computacionais
 
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
 
DocumentDB - Azure Fridays São Paulo
DocumentDB - Azure Fridays São PauloDocumentDB - Azure Fridays São Paulo
DocumentDB - Azure Fridays São Paulo
 
NoSQL & SQL
NoSQL & SQLNoSQL & SQL
NoSQL & SQL
 
BIG DATA na UFSM
BIG DATA na UFSMBIG DATA na UFSM
BIG DATA na UFSM
 

2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web

  • 1. NoSQL E o futuro dos bancos de dados na web
  • 2. 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.
  • 3. 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.
  • 4. 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.
  • 5. 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.
  • 6. Modelo base ● Nome do banco de dados: my_product ● Para o banco de dados: MariaDB/MySQL. ● Schema de dados:
  • 7. MySQL - Inserir ● INSERT INTO users VALUES(1, "Fernando", "123"); ● INSERT INTO favorites VALUES(NULL, "Meritt", 1);
  • 8. MySQL - Editar ● UPDATE usuarios SET nome="Fernando Jorge Mota" WHERE id=1; ● UPDATE favorites SET obj="Meritt e Python" WHERE user=1;
  • 9. MySQL - Apagar ● DELETE FROM favorites WHERE user=1;
  • 10. MySQL - Visualizar ● SELECT * FROM favorites WHERE user=1; ● SELECT * FROM favorites;
  • 11. 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
  • 12. 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.
  • 13. 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.
  • 14. 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.
  • 15. 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.
  • 16. MongoDB - Inserir ● db.my_product.users.insert ({"username":"Fernando", "password":" 123","_id":1}); ● db.my_product.favorites.insert({"obj":" Meritt", "user": 1});
  • 17. 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"}});
  • 18. MongoDB - Apagar ● db.my_product.favorites.remove({"user": 1});
  • 19. MongoDB - Consultar ● db.my_product.favorites.find({"user":1}) ● db.my_product.favorites.find()
  • 20. 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)
  • 21. 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.
  • 22. 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)
  • 23. 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.
  • 24. Cassandra - Inserir ● set users[1][username] = Fernando; ● set users[1][password] = 123; ● set favorites[1][obj] = Meritt; ● set favorites[1][user] = 1;
  • 25. Cassandra - Editar ● set favorites[1][obj] = 'Meritt e Python';
  • 26. Cassandra - Apagar ● del favorites[1];
  • 27. Cassandra - Consultar ● get favorites[1]; ● list favorites;
  • 28. 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..
  • 29. 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
  • 30. HBase - Vantagens ● Armazenamento de enormes (mas ENORME mesmo) quantidades de dados ● Alta velocidade de escrita.
  • 31. 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)
  • 32. 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..
  • 33. 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?
  • 34. Conclusão Durante 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.
  • 35. Conclusão Durante 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.