Re: [pgbr-geral] Update ou select
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
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 !
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
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
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