Re: [pgbr-geral] Update ou select

2015-08-19 Por tôpico Dickson S. Guedes
Em 19 de agosto de 2015 00:28, Danilo Silva
danilo.dsg.go...@gmail.com escreveu:
 Pessoal,

 Considerando:
 pedido | item
  1|  ABC
  1|  XYZ
  2|  XPTO

 Tenho uma rotina de integração onde, para cada item do pedido, eu preciso
 indicar o recebimento do pedido, sendo efetuado um update na tabela de
 pedidos dizendo que aquele pedido foi recebido.

 Terei que utilizar uma trigger para isso e a minha dúvida é:
 Para cada insert na tabela de itens efetuar o update da tabela de pedidos
 OU
 Para cada insert na tabela de itens, fazer um select na tabela de pedidos
 para saber se o pedido já foi recebido, e caso não tenha sido recebido,
 efetuar o update.

 Creio que efetuar o select antes será melhor para evitar os buracos que o
 update causa e assim diminuir as ações do autovacuum na tabela de pedidos.

Não respondendo diretamente sua pergunta mas apenas salientando que você
pode testar no próprio UPDATE, antes de fazer o SELECT, algo como:

UPDATE pedidos SET recebido = true WHERE codigo_pedido = XYZ AND
NOT recebido;

Senão você teria que fazer um SELECT FOR UPDATE para tentar evitar
race-condition em
ambientes com concorrẽncia.

[]s
-- 
Dickson S. Guedes
mail/xmpp: gue...@guedesoft.net - skype: guediz
http://github.com/guedes - http://guedesoft.net
http://www.postgresql.org.br
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Update ou select

2015-08-19 Por tôpico Danilo Silva
Em 19 de agosto de 2015 09:13, Dickson S. Guedes lis...@guedesoft.net
escreveu:

 Em 19 de agosto de 2015 00:28, Danilo Silva
 danilo.dsg.go...@gmail.com escreveu:
  Pessoal,
 
  Considerando:
  pedido | item
   1|  ABC
   1|  XYZ
   2|  XPTO
 
  Tenho uma rotina de integração onde, para cada item do pedido, eu preciso
  indicar o recebimento do pedido, sendo efetuado um update na tabela de
  pedidos dizendo que aquele pedido foi recebido.
 
  Terei que utilizar uma trigger para isso e a minha dúvida é:
  Para cada insert na tabela de itens efetuar o update da tabela de pedidos
  OU
  Para cada insert na tabela de itens, fazer um select na tabela de pedidos
  para saber se o pedido já foi recebido, e caso não tenha sido recebido,
  efetuar o update.
 
  Creio que efetuar o select antes será melhor para evitar os buracos
 que o
  update causa e assim diminuir as ações do autovacuum na tabela de
 pedidos.

 Não respondendo diretamente sua pergunta mas apenas salientando que você
 pode testar no próprio UPDATE, antes de fazer o SELECT, algo como:

 UPDATE pedidos SET recebido = true WHERE codigo_pedido = XYZ AND
 NOT recebido;

 ​Putz, é verdade, caraca esqueci que posso fazer desta forma, deve ter
sido o horário :)
​Valeu...

[]s
Danilo​
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Forma correta de criar backup de três bancos !

2015-08-19 Por tôpico Fabrízio de Royes Mello
On 14-08-2015 17:54, Sebastian Webber wrote:
 2015-08-14 17:27 GMT-03:00 Luiz Carlos L. Nogueira Jr.
 lcnogueir...@gmail.com mailto:lcnogueir...@gmail.com:
 
 Se for o PJe sugiro colocar no modo archive e fazer backup (begin
 backup-- end-backup) e não via dump.
 
 
 Independente da aplicação, ter estratégia que conta apenas com o pg_dump
 não é uma boa pratica.
  

Aproveitando o gancho iremos ministrar um treinamento apenas de técnicas
de backup e restore [1] com PostgreSQL.

Att,

[1] http://www.eventick.com.br/pgsql-bkp-201510

-- 
   Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento



signature.asc
Description: OpenPGP digital signature
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] GIN e GIST

2015-08-19 Por tôpico Dickson S. Guedes
Em 19 de agosto de 2015 12:28, Gerdan Rezende dos Santos
ger...@gmail.com escreveu:
 Pessoal, não entendo muito claramente como funcionam os índices GIN e GIST
 alguém tem uma referencia boa???
 Li o o manual mas não ficou muito claro...

Não sei exatamente o quê você deseja saber sobre eles, então sendo
um pouco genérico, poderiamos resumir que:

Basicamente temos indices B-tree que permitem que você busque
registros comparando se A é igual ou não a B, ou se A é menor/maior ou
não a B.

Vocẽ também tem indices do tipo hash, que só te permitem buscar
registros comparando se A é igual a B.

O GiST, por sua vez, generalizou mais a busca na árvore, permitindo
que você implemente indices que não sejam só um B-tree mas que possa
indexar outros tipos complexos como B+-tree, R-tree, etc também de
forma balanceada, mas de um modo que a chave não possua as restrições
do B-tree. Com o GIST voce pode usar algum operador especifico ja
implementado ou implementar um indice (codificando na unha em C) com
um tipo específico seu. Divagando um pouco, pense num jogo de
asteroides, imagine que de alguma forma você está armazenando no banco
poligonos que represente o contorno deles e deseja saber quais
asteroides estão colidindo com a sua nave, isso vai te remeter a uma
inevitável comparação entre as bordas destes poligonos, que estão ali,
armazenados em seu banco, mas não são simples inteiros, são eles dados
complexos que precisam ser comparados entre si de uma forma diferente
do que voce compara  WHERE 1  2. O GIST te ajuda nisto e suas
chaves internas que apontam para as estruturas são baseadas em uma
tabela hash o que faz com que ele possa ser mais lento em condições
que uma mesma chave contenha vários possíveis resultados, caso este em
que os registros selecionados pré-selecionados são re-testados.

O GIN, por sua vez não se baseia em hash, se baseia em B-tree e
permite voce implementar metodos de acesso para buscar dados dentro de
uma estrutura composta. Pense num JSON, algo como '{ nome: Joao
}', considere-o uma estrutura complexa e imagina como selecionar todas
as linhas de uma tabela cujo um determinado campo do tipo JSON contem
uma chave chamada 'nome' cujo conteudo é Joao. Isto é muito
diferente do que procurar por Joao com um LIKE, do tipo campo_json
LIKE '%Joao%' e é importante que, se voce tem uma estrutura definida
em um tipo composto, e tem operadores bem definidos que permitem voce
fazer comparações nestes tipos, use-os para o bem da humanidade.

Enfim, paro por aqui porque posso estar mentindo demais e afinal era
para ser apenas um resumo.

[]s
-- 
Dickson S. Guedes
mail/xmpp: gue...@guedesoft.net - skype: guediz
http://github.com/guedes - http://guedesoft.net
http://www.postgresql.org.br
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

[pgbr-geral] PGBR2015 - Palestrante Internacional Sr. Álvaro Herrera Confirmado

2015-08-19 Por tôpico Fabrízio de Royes Mello
Pessoal,

É com grande prazer que informamos a confirmação do Sr. Álvaro Herrera
como palestrante do PGBR2015. Mais informações a respeito do palestrante
acessem o nosso site [1].

Por favor peço que espalhem a notícia em seus Blogs, Twitter, Facebook,
etc...

Att,

[1] http://pgbr.postgresql.org.br/2015/#speakers

-- 
   Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento



signature.asc
Description: OpenPGP digital signature
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral