Conheça o problema do N+1

Você se preocupa com o desempenho das suas aplicações? Então é imprescindível que você saiba o que é o problema do N + 1 e também conheça como identificá-lo e corrigi-lo. Essa é uma grave falha que diversos programadores iniciantes (e até intermediários, por incrível que pareça) não conhecem, causando grande perda de performance em suas aplicações.

O que é o problema do N + 1

Vamos considerar uma base de dados com duas tabelas: uma de usuários e outra de posts, como ilustrado na imagem a seguir.

A tabela Usuários armazena as informações dos usuários, como nome, email, senha etc. A tabela de posts, além dos dados dos posts, como título e conteúdo, …

[Leia mais]
Usando logs de acesso do servidor web como um sistema de armazenamento de banco de dados

Eu usei esse truque há alguns dias, quando lancei o Drupal EngineHack de detecção de sites, e ele está servindo ao seu propósito muito bem.

Meu caso de uso

O EngineHack verifica um site e informa ao usuário se ele foi hackeado ou não. Assim, para cada ferramenta em particular, quero registrar os resultados dessas verificações. Mais importante, eu queria fazer o registro de itens específicos:

  • O timestamp de cada verificação que foi realizada
  • A URL do site que foi verificado
  • Se o servidor Drupal foi comprometido ou não
  • Opcionalmente, o IP do site que efetuou a verificação, para o caso de abuso ou ataque DoS

Tradicionalmente, eu iria criar uma tabela em um banco de dados como MySQL ou um sistema de …

[Leia mais]
[Linux] - Remover arquivos depois de X dias

Remover arquivo depois de 30 dias: # find /path_to_file/ * -mtime +30 -exec rm {} \; 

Remover arquivo depois de 7 dias: # find /path_to_file/ * -mtime +7 -exec rm {} \; 

Remover arquivo especifico depois de 7 dias:

# find *.xml -mtime +7 -exec rm {} \;

Remover milhões de arquivos no Linux:# perl -e 'for(<*>){((stat)[9]<(unlink))}' Segunda Opção:# find . -maxdepth 1 -type f -delete

[ORACLE] - Verificação os parâmetros de processos, sessões e transações

Verificamos aqui os parâmetros que estão em vigência no nosso ambiente Oracle:

processes=x

session=(1.5 * PROCESSES) + 22

transactions=sessions*1.1

select name, value

from v$spparameter

where name in ('sessions','processes','transactions');

Name

Value

Processes

3000

Sessions

3022

Transactions

select name, value

from v$parameter

where name in ('sessions','

Aumente o open-files-limit do MariaDB no CentOS com systemd

Lá se vão os dias em que simplesmente mudar as configurações no arquivo /etc/my.cnf seria suficiente. Entre para o novo mundo do systemd.

O systemd em si tem um limite que controla quantos arquivos de um determinado serviço podem ser abertos, independentemente do que você configurar no arquivo /etc/my.cnf ou no arquivo /etc/security/limits.conf.

Para aumentar os arquivos abertos do MariaDB sendo executados em um sistema RHEL ou CentOS 7 com systemd, faça o seguinte.

Primeiro, crie um novo diretório que irá realizar as mudanças no serviço MariaDB para ele. Ao fazer as alterações aqui, tenha certeza de que as atualizações de pacotes que iriam/poderiam sobrescrever o mariadb.service não sobrescreva suas próprias mudanças.

$ mkdir -p /etc/systemd/system/mariadb.service.d/

Em seguida, configure o systemd para que o serviço do MariaDB possa abrir mais …

[Leia mais]
Os 12 fatores: uma metodologia para criação de projetos SaaS

Todo desenvolvedor já deve ter ouvido falar do Heroku, plataforma de cloud computing que revolucionou o desenvolvimento, ajudou a criar o movimento “devops” e que foi vendida por diversos milhares de dólares para a Salesforce. Se tem algo que eles têm muita experiência é na criação e suporte de aplicativos SaaS (software-as-a-service), principalmente aplicativos web.

Eles usaram toda essa experiência para criar o 12factor, que é uma espécie de “manifesto” com os 12 pontos que uma aplicação deveria seguir para ter sucesso nesse formato.

Vou citá-los abaixo e fazer alguns comentários, principalmente usando analogias e exemplos do mundo PHP, mas os conceitos se aplicam a qualquer plataforma.

1. Codebase

Todos os seus códigos devem ser gerenciados por um sistema de controle de …

[Leia mais]
Comentário sobre Trabalhando com views no MySQL por Rogério

Wagner, obrigado por este rico conteúdo. Tenho uma view de outra empresa diretamente para meus sistemas, qual seria a melhor política, acessar a view diretamente ou gravar em meu banco e criar as views para que meus sistemas acessem? Obrigado

[MS SQL Server] - Otimizando tempo de backup no SQL Server dividindo em diversos arquivos

Utilizando a distribuição para diversas mídias/arquivos de backup é possível melhorar (e muito, dependendo do caso!) a performance de backup de uma base de dados SQL Server.

Geralmente fazemos o backup de uma base para um único arquivo:

-- Selecionamos a MASTER para nao manter a sessao presa em nossa base USE master GO -- Comando de backup comum BACKUP DATABASE [AdventureWorks2008] TO

Identificadores artificiais ou naturais no banco de dados?

Faça essa pergunta em uma mesa de DBA’s ou de arquitetos de software no bar, se afaste, pegue um chopp e assista a um episódio live de Spartacus!

Alguns dizem que se uma chave natural está disponível, ela deve ser utilizada. Eu prefiro pensar que não, não tenho o hábito de usar CPF, RG, dog-tag-id e outros como identificador de uma pessoa num banco de dados.

Meu argumento é que esses campos podem ser únicos mas não são controlados por mim, o freak dev/dba/designer/barista e, se não está sob meu controle eu não sei o que pode acontecer com ele.

Pode ser que o Bolsonado acorde um dia com desejo de colocar uma letra no início de cada RG e aí já viu… Nem disco da Xuxa sendo tocado ao contrario junto a um coral de apitos aztecas pode impedi-lo.

Já a chave artificial é minha, e sob essa ótica artificial, deixa de ser quase pejorativo para ser carinhoso.

“Essa chave aí? Eu que criei. …

[Leia mais]
MySQL 5.7 – TableSpace Genéricas v2.0 – A nova Onda

O conceito de tablespace não tem nada de novo. Só não é mais velho que eu. Vários outros RDBMS (bancos de dados) o implementam faz algum tempo. No MySQL foi implementado pelos primórdios do innoDB. Em linhas gerais o que […] ↓ Leia o restante deste post...