Você sabe como listar as dependências de uma tabela?

Uma tarefa um tanto quanto chata de ser realizada é fazer um delete em uma tabela em um registro que possui filhos(ou dependência, como preferir) e que na criação da Foreign Key não é definido a opção ON DELETE CASCADE. Então você irá tentar apagar e irá aparecer essa mensagem de erro:

ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails...

Isso significa que para que seja possível apagar o registro desejado, antes será necessário apagar os filhos desse registro.

Nesse momento que bate aquela tristeza enorme, pois você não tem o MER e terá que olhar várias até achar os filhos.

Para ajudar nesse processo eu desenvolvi essa procedure que lista as tabelas que possuem filhos(apenas as tabelas que possuem filhos, pode ser que exista um FK mas a tabela não possui nenhum filho, nesse caso não irá apresentar como resultado) de um registro.

[Leia mais]
Top 5 das ferramentas JavaScript que você não deveria ficar sem

O JavaScript surgiu nos últimos anos como a expressão de facto das tecnologias web da próxima geração, e um componente crítico de tecnologias HTML5 – juntamente com CSS e JQuery. O JavaScript é realmente onipresente – ele está aparecendo em toda parte! Há muitas outras razões pelas quais o JavaScript e as ferramentas baseadas nele estão se tornando a onda do futuro. O JavaScript é a linguagem mais usada no GitHub, e essa tendência só vai aumentar. Como um artigo colocou, “JavaScript é a linguagem número um no mundo; é a linguagem da web e um ponto de partida para tantos novos desenvolvedores…”.

Para entender melhor o domínio do …

[Leia mais]
Seu site tão rápido quanto o Google usando ElasticSearch

Muitos sites são referências na área em que atuam devido à relevância do conteúdo. Mas não basta oferecer informação/produto/serviço de qualidade, é preciso fazer com que o usuário encontre o que ele tanto procura. Sabe por quê? Porque quando ele não acha o que precisa, desiste e abandona o site.

E agora, o que devemos fazer? Uma solução é utilizar um mecanismo de FullTextSearch do MySQL que, aparentemente, irá resolver o problema por um tempo. Mas digamos que o CEO de sua loja virtual resolva fazer uma megaliquidação, no Black Friday (por exemplo) e, para turbinar os acessos e vender ainda mais, promove uma megacampanha no Google e no Facebook. De repente, o fluxo de pessoas procurando desesperadamente por promoções no site aumenta 10 vezes. É aí que começa a complicar para você que resolveu utilizar o FullTextSearch.

Será que você estava de fato preparado para enfrentar essa situação? Acho que você …

[Leia mais]
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