Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Luiz Cláudio Pinheiro

NoSQL: Qual a real vantagem na aplicabilidade em projetos?

Recommended Posts

Olá pessoal, tudo bem?

 

A muito me deparo com artigos falando sobre NoSQL, onde o principal ponto destacado é o desempenho frente aos SGBD's relacionais. Mas o que a maioria dos artigos NÃO falam (perdão se não li aquele artigo que você leu e que explica exatamente isso), é a real aplicabilidade disso. Ou seja, colocar em pauta de forma organizada e explicativa quais os pontos fortes do NoSQL frente ao MySQL.

 

Como sei que a maioria dos presentes no fórum de NoSQL também tem ou já teve contato com os SGBD's relacionais, proponho uma discussão em torno dos seguintes caso:

 

 

CASO 1:

 

- Um sistema de CHAT simples, onde todos conversam com todos através de uma única janela.

 

Qual dos modelos (NoSQL / Banco de Dados Relacionais) se sairia melhor nesse tipo de sistema? Vamos considerar um altíssimo fluxo de acesso nesse chat e, consequentemente, muitas informações sendo inseridas e lidas em uma dada tabela.

 

Tenho a experiência desse tipo de sistema com o MySQL e não é das melhores: o uso de CPU do SGBD fica em cerca de 600% (se somado à toda demanda dos servidor).

 

Seria o NoSQL a solução para esse caso? Ele apresentaria um desempenho realmente maior que o mysql?

 

CASO 2:

 

- Um  sistema de mensagens semelhante ao de qualquer rede social, onde eu (remetente) envio mensagens para um dado destinatário.

 

Consideremos novamente um alto fluxo, porém dessa vez não de dados simultâneos como no chat, mas uma altíssima quantidade de dados sendo armazenados e posteriormente resgatados.

 

Qual dos modelos se comporta melhor e guardar e depois resgatar essas mensagens?

 

 

OBS: Desconsiderei a necessidade de chave estrangeira para ambos os casos, então não precisamos colocar isso em questão.

 

 

Desde já agradeço sua atenção pela leitura e, se possível, deixe sua opinião.

O tópico pode não está bem explanado mas acredito que é o suficiente para tirar essa dúvida.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Na minha visão as pessoas tem que compreender que muitas vezes usam "lógica relacional" em "bancos de dados relacionais" para resolver todos os problemas.


A lógica relacional NÃO É UMA BALA DE PRATA, que resolve todos os problemas. Resolve uns 95% dos problemas ou mais, mas não resolve todos.


Na palestra do Jean Carlo Nascimento (conhecido como “Suissa”), ele expos motivos para utilizar o MongoDB:

- Desenvolvimento rápido (Esqueça o Alter table)

- Fácil armazenamento dos dados do cliente

- Ótima performance (até 10x, dependendo a operação)

- Encoraja a escalabilidade

- Ótima performance



Quanto aos seus exemplos:


Caso 1: Um sistema de CHAT simples, onde todos conversam com todos através de uma única janela.


Certamente o MySql pode ser utilizado para um sistema de chat. Se quiser otimizar os dados do banco, modele ele para que isto ocorra. Exemplos de solução:

- Use o recurso de tabelas temporárias se tiver escrita/leitura intensiva de uma tabela "limitada"

- Use um banco "100% em memória" e vá salvando aos poucos os dados dos usuários;

- Não deixe as mensagens numa tabela com 100.000 registros. Se for preciso, vá gravando em duplicidade os registros.



Caso 2: Um sistema de mensagens semelhante ao de qualquer rede social, onde eu (remetente) envio mensagens para um dado destinatário.

Da mesma forma


O MySql é muito flexível e muita gente sabe usar ele como o pessoal da FriendFeed que dá uma receitinha no link abaixo. Na época optaram por ficar com o MySql pois não tinham confiança em outras tecnologias.


Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.