Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Diferença entre otimização SQL e NoSQL

Estou com algumas dúvidas a respeito das estratégias de otimização em um banco NoSQL:

Em um banco SQL por exemplo, caso o index não melhore a performance da query, podemos tentar algumas outras estratégias como Partitioning, Paralelismo, visões materializadas...

Caso o index no banco NoSQL não melhore a performance, que outras estratégias podemos utilizar?

E a outra dúvida seria a respeito do index composto, em um banco SQL utilizamos essa abordagem quando podemos gastar um pouco mais de disco e temos bem menos escritas do que leituras, para que a demora nos UPDATE's e INSERT's valham a pena a melhoria no SELECT

Essa justificativa se aplica ao NoSQL também?

2 respostas

Ah, no curso foi recomendado uso de projeções para diminuir o volume de dados trafegados e retornar apenas campos necessários

E também verificar queries que tenham groupby, orderby, ou join, para ver se essas cláusuras são necessárias mesmo

mas além disso teria mais alguma coisa importante que poderíamos fazer? É possível utilizar os conceitos de Partitioning e Paralelismo em NoSQL?

solução!

Boa tarde, Arthur!

Ótimo ponto. A otimização em bancos de dados NoSQL, é um pouco diferente do que estamos acostumados a ver em bancos SQL. Caso o index no banco NoSQL não melhore a performance, podemos adotar estratégias como:

  • Desnormalização que serve para armazenar dados redundantes para evitar junções complexas. Por exemplo, em um sistema de e-commerce, poderíamos incluir informações do produto diretamente no documento de pedido, em vez de apenas uma referência.
  • Fragmentação para distribuir dados em vários servidores para melhorar a escalabilidade. Por exemplo, dividir os dados de usuários em diferentes servidores com base na inicial do sobrenome.
  • Caching para utilizar sistemas de cache como Redis para armazenar resultados frequentes para consultas futuras por um determinado período de tempo.

Quanto ao índice composto, no NoSQL, a abordagem é similar aos bancos SQL. Por exemplo, em MongoDB, você pode criar um índice composto assim:

db.collection.createIndex({ nome: 1, idade: 1 })

No geral, a justificativa para usar índices compostos em NoSQL é semelhante à dos bancos SQL: melhorar o desempenho das leituras, principalmente em consultas que envolvem múltiplos campos. Caso queira se aprofundar, deixo algumas referências:

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado