[PostgreSQL] - Listando as 10 maiores tabelas no PostgreSQL

Para listar as maiores tabelas do seu banco de dados, utilize a consulta abaixo:

WITH table_stats AS ( SELECT schemaname, tablename, pg_relation_size(schemaname || '.'|| tablename) as table_size, (pg_total_relation_size(schemaname || '.'|| tablename) - pg_relation_size(schemaname || '.'|| tablename)) as index_size, pg_total_relation_size(schemaname || '.'|| tablename) as

[PostgreSQL] - Tamanho das tabelas no PostgreSQL

Em muitos casos é preciso saber o espaço em que as tabelas do banco de dados estão utilizando em disco, para fins de monitoramento e decisão de estruturação de banco. Para tal tarefa no PostgreSQL o comando abaixo resolve o problema. SELECT esquema, tabela, pg_size_pretty(pg_relation_size(esq_tab)) AS tamanho, pg_size_pretty(pg_total_relation_size(esq_tab)) AS tamanho_total

Seqüência de Fibonacci Procedimento

Original post: http://anothermysqldba.blogspot.com/2015/06/fibonacci-sequence-procedure.html

 Bem, tem sido um tempo desde que eu postei, desculpe por isso. Hoje eu estava assistindo a reprises do programa de TV Fringe e quando Walter referenciado a seqüência de Fibonacci eu tenho lado seguido com opções do MySQL para isso. 

Agora este post já existia: 


Então eu peguei esse …

[Leia mais]
Abrir o código: um relato pessoal

Um dia fui desenvolvedor. Profissional, com diploma e carteira assinada. A vida tem seus mistérios e com o tempo acabei migrando para a administração de sistemas, depois para a administração propriamente dita, e o resultado disso é que poucas vezes contribuí diretamente com código para algum projeto open source, apesar de estar envolvido nessa cena desde 1996.

Houve algumas exceções, incluindo o código de extensões para outros programas e um sistema de configuração para conexões PPP discadas, ainda nos tempos heróicos em que conectar um PC com Linux à Internet era uma tarefa muito complicada.

Minha contribuição ao longo desses anos sempre foi mais como cronista e disseminador de informações, eventualmente como palestrante, às vezes como colaborador financeiro com um ou outro projeto especialmente meritório e necessitado.

A maior parte da minha contribuição ocorre por meio do site BR-Linux, onde já …

[Leia mais]
[Jasper] - Declaração de Lista e Variáveis dinâmicas e condicionais

É algo simples, mais facilita no dia-a-dia no desenvolvimento de relatórios no Jasper Report:

Lista dinâmica: $X{IN, CO.GRUPOCALCID , grupocalculo} -- declarar a variável como lista

Variável dinâmica: $P!{grupocalculo} -- variável dinâmica no jasper

Utilizando Variável condicional no Jasper: (($P{ordenacao}.toString() == "A") ? "ALFABÉTICA"  : "NUMÉRICA" )

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]