Meus amigos que saudade de vocês!
Eu ando pensando muito sobre os caminhos do blog, e por isso acabei demorando um pouco para disponibilizar este post.
Tenho diversas novidades, uma delas é que fui contemplada com o reconhecimento de associada notável da I2AI… Que honra! Não podia deixar de compartilhar com vocês.
Voltando ao blog, hoje eu quero conversar com vocês sobre um requisito muito importante e que se observado, pode te ajudar a oferecer soluções ainda melhores.
Você já parou para pensar em qual o objetivo do seu banco de dados? Será que ele foi criado para receber muitos dados, ou para fornecer muitos dados? Em outras palavras, será que a operação mais importante são as leituras ou as escritas?
Essa perguntinha mágica vale para o seu banco de dados, tabela, ou conjunto de tabelas? Vamos continuar a conversa e eu te explico os motivos…
Amigos, passou o tempo onde criávamos o modelo de dados só pensando em normalização. Agora precisamos pensar naquilo que trará mais valor para o negócio.
Essa conversa vale sempre que vamos fazer qualquer tarefa no banco de dados, da construção até a manutenção precisamos ter de forma muito clara qual é a operação mais importante.
Porque é importante saber se o mais importante são as leituras ou escritas?
Quando a sua aplicação tem como operação mais importante a escrita, ou seja, seu banco de dados precisa receber de forma eficaz e eficiente um grande volume de dados. Aconselho que você observe os seguintes aspectos:
- Evite redundâncias. Se você estiver criando o modelo de dados, opte por um modelo mais normalizado, porque assim você diminui as redundâncias e as inclusões ocorrem de forma mais rápida.
- Evite a criação de índices desnecessários. Índices são maravilhosos para a leitura de dados, mas podem ser bem prejudiciais nas escritas. Então avalie se eles realmente serão necessários, converse com o DBA e crie somente os indispensáveis.
Quando a sua aplicação tem como operação mais importante a leitura, então é preciso estar atendo ao seguintes aspectos:
- A redundância controlada dos dados não deve ser um problema, uma vez que nesta situação queremos minimizar a quantidade de acessos ao BD para buscar as informações necessárias. Em outras palavras, não precisamos brigar com as desnormalizações.
- Os índices vão te ajudar! O que não significa que devam ser criados sem nenhum critério. Mas tenha em mente que os índices tem como objetivo acelerar as leituras, e por isso são maravilhosos quando a leitura é a operação mais importante.
- Conheça os tipos de índices do SGBD que você está usando. Cada SGBD tem suas particularidades, e quase sempre oferecem tipos de índices bem diferentes… Vale muito a pena conhecer os tipos de índices, e entender quando eles são recomendados. Pode ser que um desses faça toda diferença na execução da sua query.
- O plano de execução é seu amigo! Análise o plano de execução da sua query, e parta para as melhorias, acredite sempre que é possível melhorar!
- Tenha atenção aos filtros permitidos. Porque eles influenciam muito na quantidade de dados retornada pela sua query, e sendo assim afetam a percepção de desempenho também.
E quando a leitura e a escrita são importantes?
Esta situação vai acontecer! Mas acreditem em mim, não será a maioria dos casos.
Se após uma análise detalhada dos requisitos, você identificar essa situação, tenha os seguintes cuidados:
- Se for possível replicar os dados, separe a leitura da escrita. Tenha um servidor para receber todas as escritas, e outro para receber as leituras.
Neste caso, vale a atenção para diferenças que podem acontecer nos dados, devido a uma leitura que ocorreu antes do dado ser replicado. - Muita atenção aos índices, eles devem ser usados com mais cuidado nessa situação.
- As consultas terão JOINS… Porque os dados provavelmente estarão normalizados, isso não é ruim! Só um ponto de atenção na hora de escrever as queries.
- O plano de execução segue sendo seu amigo (ele sempre é!)
Para finalizar
Amigo, não conheço fórmulas mágicas, mas as dicas compartilhadas aqui me ajudam muito.
Vale sempre ter atenção ao volume de dados, às configurações do seu servidor, ao tipo de SGBD e às configurações da sua rede. Estes itens impactam muito no desempenho das leituras e das escritas (existem alguns outros, mas vamos conversar sobre eles em posts futuros).
Se você é um desenvolvedor, sempre tente fazer a melhor query possível, e lembre-se de testá-la muito bem… Produção é outra vida!
Falando nisso, testes em produção nunca são uma boa ideia, não caia nesta tentação.
Finalizando
Amigos espero que este post seja útil, que você e sua família estejam bem e com saúde.
Lembre-se que trabalhar com banco de dados, significa trabalhar com o maior bem da empresa, e sendo assim requer cuidado e atenção.
Outra coisa importante, é que você sempre precisará analisar e entender o que está fazendo… Essa é a melhor maneira de evitar problemas, e entregar uma tarefa com a qualidade e zelo esperadas de um excelente profissional… Como você!
Bjsss e até a próxima conversa!
Para terminar (eu juro)…
Amigos, estamos em um momento complicado, então se você treina, faz exercícios ou vai fazer… Conheçam a SPEsportes… Um loja pequena, mas com produtos de grandes marcas, atendimento personalizado e entrega rápida… e que precisa sobreviver a crise.
Entre, conheça, compre, e recomende aos amigos, e não perca a chance de te 20% de desconto com o cupom DB4BEGINNERS.
Humano Dado
Eu sei que deveria passar mais tempo quieta… Mas eu não consigo! Comecei fazem alguns meses a compartilhar algumas reflexões no LinkedIn.
Convido a todos para conhecer a newsletter Humano Dados.
Em breve quero compartilhar com vocês o meu novo site… Desta vez o assunto não será TI, o assunto será Dani Monteiro. Aguardem!