Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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:
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:
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.
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.
Rapaz, fresquinho saindo do forno para você pelo Suissa. :thumbsup: