Fabrízio de Royes Mello

Blog sobre Tecnologia da Informação

Vídeo Com Atividade Do Repositório GIT Do PostgreSQL Nos últimos Meses


Pessoal,

Montei um pequeno vídeo [1] que mostra a atividade do repositório GIT do PostgreSQL nos últimos meses.

Para gerar o vídeo usei o Gource [2].





Fabrízio Mello
fabriziomello [at] gmail.com

Comments

Anonymous
preciso de sua ajuda, meu banco SQL caiu e não volta, depois d euma queda de energia.

alan_andreani@windowslive.com MsN

obrigado

PGDay/RS 2011 - Targettrust Irá Sortear 1 (Um) Curso De PostgreSQL (20h)

Durante o PGDay/RS 2011 a T@rgetTrust, empresa especializada em treinamentos, irá sortear 1 (um) curso, a escolha do sorteado, da sua Formação PostgreSQL:

Mais informações acesse o site do evento em:


Cordialmente,

Fabrízio de Royes Mello
fabriziomello [at] gmail.com

PGDay/RS 2011 Em Porto Alegre/RS



O que é?

Postgres ou PostgreSQL é um projeto de Sistema Gerenciador de Banco de Dados open-source que foi iniciado em 1986, na Universidade de Berkeley, na Califórnia.

PGDay, ou Dia do Postgres, é um evento não tão formal quanto ao PGBR (Conferência sobre PostgreSQL no Brasil) e de caráter regional, podendo ser realizado com poucas pessoas em qualquer/vários estados do País.



Quais são os objetivos?

É uma chance para que acadêmicos, DBAs e desenvolvedores Brasileiros de PostgreSQL aprendam, troquem experiências, exponham casos de sucessos, desafios e fortifiquem sua rede de relacionamento profissional.


Qual o público alvo?

Dentre o público esperado estão:

  • Administradores de Bancos de Dados;
  • Acadêmicos de Cursos Técnicos ou Universidades;
  • Desenvolvedores de Softwares;
  • Organizações governamentais;
  • Entusiastas de Software Livre;


Data e Local

O evento será dia 19 de Agosto de 2011, no Auditório do Bloco D da Uniritter localizado na Rua Orfanotrófio, 555, bairro Alto Teresópolis CEP: 90840-440 em Porto Alegre, RS.


Inscrições, Palestras, Atividades e mais informações veja em:
http://www.postgresql.org.br/eventos/2011/pgday/rs


Cordialmente,

Fabrízio de Royes Mello
fabriziomello [at] gmail.com

PGBR2011 - Conferência Nacional PostgreSQL (3-4 Novembro, São Paulo)

O PGBR (antes conhecido como PGCon Brasil) é o maior evento sobre PostgreSQL das Américas: em 2009 e 2008, o evento trouxe mais de 300 profissionais de TI e, em 2007, mais de 200. Em 2011, serão 3 salas simultâneas com tutoriais, palestras e mesas de alto nível, contando com desenvolvedores nacionais e internacionais do PostgreSQL além de profissionais renomados no mercado brasileiro.


Venha conhecer de perto uma das comunidades de Software Livre que mais cresce no Brasil e no mundo que conta com o suporte de empresas de grande porte como CAIXA, Skype, BASF e Cisco. Conheça alguns dos maiores casos de sucesso brasileiros em órgãos públicos e privados, as novidades da versão 9.1 e o que está previsto para a versão 9.2 do PostgreSQL. Você terá a oportunidade também de conhecer técnicas avançadas de montitoramento, ajustes de performance, técnicas de replicação, migração, alta disponibilidade e muito mais.


Mais informações no sítio do evento: http://pgbr.postgresql.org.br


Aproveite também e preencha a nossa pesquisa sobre uso do PostgreSQL no Brasil:
https://spreadsheets.google.com/viewform?formkey=dFNOS0pjUFp3MFM0Y0xWT1RIWUZfRGc6MA


Cordialmente,

Fabrízio de Royes Mello
fabriziomello [at] gmail.com

Vaga DBA PostgreSQL Em Porto Alegre/RS

Pessoal,

Estamos com uma vaga para DBA PostgreSQL em Porto Alegre/RS, com as seguintes requisitos:

ATRIBUIÇÕES:
  1. instalar/configurar Linux para posterior instalação do PostgreSQL
  2. instalar/configurar o PostgreSQL na empresa (produção, desenvolvimento e testes) e nos clientes (produção e testes)
  3. implantação e manutenção de políticas e rotinas de backup das bases de dados da empresa e dos clientes (scripts de backup padronizados)
  4. implantação e manutenção de polĩticas e rotinas de segurança de dados
  5. monitorar servidores PostgreSQL da empresa e dos clientes (coletar informações e estatísticas para geração de base de conhecimento dos clientes)
  6. atender chamados dos clientes por eventuais problemas relacionados ao servidor de Banco de Dados PostgreSQL
  7. apoio aos programadores na criação de SQLs complexos, bem como na construção de procedimentos armazenados e funções (stored procedures e functions)
  8. apoio aos programadores na modelagem física de banco de dados
  9. realizar migrações de versão do PostgreSQL
  10. sugerir boas práticas de uso de SQL e Modelos de Dados a equipe de desenvolvimento
  11. capacitação da equipe de desenvolvimento da empresa no uso de novos recursos oferecidos pelo PostgreSQL
  12. otimização de performance (tunnig) do PostgreSQL e sistema operacional (Linux)

CONHECIMENTOS:
  1. PostgreSQL
  2. Linux
  3. Shell Script
  4. Programação PHP (desejável)


Interessados enviar Curriculum por e-mail para curriculos [at] dbseller.com.br que após análise inicial dos mesmos entraremos em contato para agendar entrevista.

Cordialmente,

Fabrízio de Royes Mello
fabriziomello [at] gmail.com

Função “Array_diff” Em PostgreSQL

Estava realizando algumas queries aqui no meu trabalho e tive a necessidade de uma função que retornasse um array contendo os elementos de um determinado array e não estão presentes em outro, igual ao array_diff do PHP [1].

Para resolver esse pequeno problema bastou um SELECT, vejam a implementação da função “array_diff” para PostgreSQL abaixo:

CREATE OR REPLACE FUNCTION array_diff (anyarray, anyarray) RETURNS anyarray
AS $$
  SELECT array(
    SELECT $1[s.i]
      FROM generate_series(array_lower($1,1), array_upper($1,1)) AS s(i)
     WHERE NOT $1[s.i] = ANY($2)
  );
$$
LANGUAGE sql;

postgres@bdteste=# SELECT array_diff(array[1, 2, 3], array[1, 4, 3]);
 array_diff
————
 {2}
(1 row)

postgres@bdteste=# SELECT array_diff(array[1, 4, 3], array[1, 2, 3]);
 array_diff
————
 {4}
(1 row)


Espero ter ajudado de alguma forma.



Cordialmente,

Fabrízio de Royes Mello
fabriziomello [at] gmail.com

Comments

Fabrízio de Royes Mello
Sua refatoração é muito válida, porém sacrificamos a portabilidade da função… a versão que implementei funciona com as versões 8.1, 8.2, 8.3, 8.4, 9.0 e 9.1 (q ainda esta em beta).

A utilização da função "unnest" limita vc a utilizar a função somente em versões iguais ou superiores a 8.4.

De qualquer forma ficou muito enxuta a versão que vc implemento… gostei bastante.


Fabrízio de Royes Mello
fabriziomello [at] gmail.com
Anonymous
Opa amigo, Eu estava procurando uma forma de fazer o diff e depois que vi como vc fez eu resolvi usar a funcao unnest e fiz desta forma, nao sei se ficou melhor ou pior…
Grande abraço e obrigado pela luz ;)

CREATE OR REPLACE FUNCTION arrayDiff(anyarray, anyarray) RETURNS anyarray
AS $$
SELECT array(
SELECT x
FROM unnest($1) AS x WHERE x not in (SELECT unnest($2))
);
$$
LANGUAGE sql;

CONSEGI 2010

Nos dias 18, 19 e 20 de agosto/2010 ocorreu o evento denominado CONSEGI2010, onde tive oportunidade de participar como palestrante/instrutor em algumas atividades relacionadas ao PostgreSQL.

Abaixo seguem os links para download dos arquivos da palestra de das oficinas que ministrei:


Obrigado a todos que estiveram presentes prestigiando o evento e as atividades que exerci.

Cordialmente,

Fabrízio de Royes Mello
fabriziomello [at] gmail.com

PostgreSQL Na Memória RAM (In-Memory Database)

Recentemente (dia 24/06/2010) em seu blog, replicado no planet-postgresql, o Sr. Robert Haas postou o artigo denominado ”PostgreSQL as an In-Memory Only Database”.

Baseado em seu relato e no abordado na lista pgsql-performance montei este pequeno tutorial para exemplificar na prática o que foi discutido, ou seja, uma forma fácil e rápida de criar o seu próprio “PostgreSQL as an In-Memory Database”.

Estou utilizando o Ubuntu 9.04 e PostgreSQL 8.3 para executar as atividades:

1) Montando partição em memória com tmpfs:

$ sudo -s

$ mkdir /mnt/in_memory


$ mount -t tmpfs -o size=2G,nr_inodes=8k,mode=0700 tmpfs /mnt/in_memory/



2) Criando cluster na partição criada:

$ chown -R postgres. /mnt/in_memory/


$ su - postgres -c “/usr/lib/postgresql/8.3/bin/initdb -D /mnt/in_memory”



3) Ajustando configurações do cluster (conforme recomendações do artigo citado):

$ vim /mnt/in_memory/postgresql.conf


fsync=off

synchronous_commit=off

full_page_writes=off

bgwriter_lru_maxpages=0


Obs: caso vc já tenha algum processo do PostgreSQL executando na mesma máquina desse teste então vc deve verificar se não será necessário modificar também a variável “port” do postgresql.conf, pois o padrão é 5432.


4) Iniciando processo servidor:

$ su - postgres -c “/usr/lib/postgresql/8.3/bin/pg_ctl -D /mnt/in_memory -l /mnt/in_memory/postgres.log start”



5) Verificando se o cluster está funcionando:

$ ps ax | grep post

19614 pts/3 S 0:00 /usr/lib/postgresql/8.3/bin/postgres -D /mnt/in_memory

19653 ? Ss 0:00 postgres: writer process

19654 ? Ss 0:00 postgres: wal writer process
19655 ? Ss 0:00 postgres: autovacuum launcher process
19656 ? Ss 0:00 postgres: stats collector process

$ /usr/lib/postgresql/8.3/bin/psql -U postgres -p 5437 -l
Lista dos bancos de dados

Nome | Dono | Codificação

———–+———-+————-

postgres | postgres | UTF8

template0 | postgres | UTF8

template1 | postgres | UTF8

(3 registros)


Acredito que neste ponto você já esteja com o seu PostgreSQL na memória pronto e funcional.

Lembre-se que o mesmo está “literalmente” na memória RAM, portanto ao desligar o micro o seu cluster inteiro será perdido, por isso o seu uso fica limitado como um Cache ao invés do uso do memcached ou alternativas NoSQL, porém com todos recursos disponíveis no PostgreSQL.


Por favor reportem problemas com esse mini-tutorial e/ou críticas e sugestões.


Cordialmente,

Fabrízio de Royes Mello
fabriziomello [at] gmail.com

Comments

Fabrízio de Royes Mello
Tem sim, mas se a sua necessidade é de manter os dados então creio que essa técnica não atenda a sua necessidade. Até mesmo porque um desligamento indevido do equipamento irá ocasionar a perda da partição.

Cordialmente,

Fabrízio de Royes Mello
fabriziomello [at] gmail.com
Moisés P. Sena
Achei interessante a idéia!
Não tem um recurso para quando der o halt na máquina, antes de desligar tudo copiar os arquivos para o HD?

PostgreSQL 8.2.x Em Ubuntu > 8.04

Como é de conhecimento de todos as versões do Ubuntu superiores a 8.04 (hardy) não possuem em seus repositórios padrões o PostgreSQL 8.2.x, então o caminho natural para que seja feita a instalação é download dos fontes, compilar e instalar… para quem tem bastante intimidade com Linux + PostgreSQL essa é uma atividade corriqueira e que normalmente é realizada em ambientes de produção.

Porém tenho recebido de clientes e amigos questionamentos de como instalar, de maneira mais simples, o PostgreSQL 8.2.x em Ubuntu > 8.04, pois bem então ai vai a dica.

No console, como usuário root, execute:

$ apt-get update

$ echo “deb http://archive.ubuntu.com/ubuntu/ hardy main universe” > /etc/apt/sources.list.d/ubuntu-8.04.list


$ apt-get update


$ apt-get install postgresql-8.2


$ rm -f /etc/apt/sources.list.d/ubuntu-8.04.list


$ apt-get update



Com isso basta executar um pg_lsclusters ou um dpkg –list ‘postgresql*’ no console que poderão verificar que a versão 8.2.7 estará instalada.

Um pequeno contratempo em relação a essa abordagem é que teremos a versão 8.2.7 instalada e atualmente já temos disponível a 8.2.16, mas é possível sim atualizar a versão através da compilação pelos fontes mantendo toda a infra-estrutura do Ubuntu com o postgresql-common, mas isso fica para um próximo post.

Por favor reportem possíveis problemas com esse mini-tutorial.


Cordialmente,

Fabrízio de Royes Mello
fabriziomello [at] gmail.com

Comments

Alvaro Borges
Deu muito certo aqui a instalação OBRIGADO!