Re: [pgbr-geral] [off-topic] Only NoSQL

2015-11-08 Por tôpico Charly
O grande problema na area de TI eh a falta de conceitos. Muitas decisoes
sao tomadas baseadas em achismos ou casos isolados de sucesso. Os
profissionais da nossa area nao tem o costume de ler artigos tecnicos,
cientificos, pesquisas... Ai podemos perceber porque mais de 60% dos
projetos de TI fracassam. Com relacao ao topico vou deixar aqui meus 2
cents.

Em 6 de novembro de 2015 18:15, Rogério F.Santo <rogeriofsan...@gmail.com>
escreveu:

> So para deixar claro os termos usados como todo termo é usado diante de
> contexto e uma literatura e bom saber isso antes de apontar falhas. No caso
> dados não estrurados a que me refiro e o que consenso entre os grandes
> players de mercado e no caso são documentos, vídeos,  fotos e etc coisas
> que se você quiser quardar em 8m banco diretamente você teria um campo blob
> e não acho que alguém queira fazer um Where em um blob. Os nosql em geral
> funcionam melhor com estes dados e tem implementação mais fácil.
>

Existe uma grande confusao aqui. Estamos misturando os conceitos de
armazenamento, extracao, pesquisa, indexacao... Para armazenar arquivos a
melhor alternativa ainda eh o sistema de arquivos. Arquivos binarios ou
nao, seja qual for o formato, deixe a responsabilidade para o sistema de
arquivos.

Sobre indexar midias existem varios desafios e podemos perceber que de fato
o termo "nao estruturado" nao cabe aqui pois todos possuem uma estrutura
muito bem definida. Os desafios aqui remetem exatamente em decodificar tal
estrutura. Eu vou considerar os documentos como "documentos texto", nao
confundir com formato texto puro, tais como PDF's, arquivos M$ Word e
formatos livre como ODT. Neste caso eh muito simples decodifica tais
documentos, extrair os dados relevantes e indexa-los. O problema maior eh
quando precisamos indexar imagens e videos. Nesse caso temos que utilizar
tecnicas mais sofisticadas como visao artificial e existem muitas pesquisas
nessa area e ate "concursos" que envolvem grandes empresas e universidades.
Mas tudo isso nao tem absolutamente nada a ver com o banco de dados. Os
dados sao extraidos utilizando-se tais
tecnicas/algoritmos/bibliotecas/magica/vodoo.


> Os relacionais para suprir este problema implementam o full text sach mas
> nem todos ainda possuem está características. E por favor toda estrutura de
> dados tem um algoritmo mas eficaz para realizar buscas sobre elas. Acho que
> deixei bem claro estar falando do algoritmo e não dá forma como eles são
> organizados no banco.
>
Novamente uma confusao sobre os conceitos. Para simplificar o conceito
sobre full text search podemos pensar nele como uma pesquisa linguistica
onde pode operar em palavras e frases com base em uma determinada regra a
qual geralmente eh baseada em padroes linguisticos de idiomas especificos
como ingles, chines, portugues, etc...

Para finalizar, muito se fala em como os noSQL sao adotados "la fora". Bem,
aqui fora os dados importantes ainda sao tratados com muito criterio e
ainda precisa-se provar muita coisa. Existe muita publicidade sobre os
noSQL e muitas empresas de fato estao ganhando muito dinheiro com isso. Eu
ja conversei com no minimo uns 7 "consultores" noSQL apenas este ano os
quais falavam das vantagens e de tudo o que poderiamos ganhar se
adotassemos as solucoes deles. Eu acho muito interessante para armazenar
sessao de usuario, cache, e em alguns casos como auxilio para DW e geracao
de relatorios, graficos, etc... Eles tem sim seu uso mas nao sao tudo isso
que falam e propagam por ai.


PS. Desculpem-me pela falta de acentos mas ainda estou brigando com o meu
teclado :-\

Abc,


Charly Batista
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] armazenamento de imagens no Banco x File System

2016-11-02 Por tôpico Charly
Um pouco atrasado no tópico mas vamos lá...

Em 24 de outubro de 2016 20:15, Flavio Henrique Araque Gurgel <
fha...@gmail.com> escreveu:

>
>
> Em seg, 24 de out de 2016 às 13:50, Luiz Henrique <
> luiz.henriqu...@gmail.com> escreveu:
>
>> Pessoal,
>>
>> Temos uma aplicação jboss que recebemos como "herança", ela armazena
>> diversos arquivos de imagens (jpeg,bmp,etc). Essa tabela com os binários
>> representa mais que 90% do tamanho total do banco, hoje com 210GB.
>>
>> Aí vem a pergunta. O que os participantes do grupo acham dessa prática ?
>> O que é mais indicado, gravar arquivos em file system ou no próprio banco ?
>> Sendo file system vocês tem sugestão de ferramentas ?
>>
>
> Não vejo boa prática nem em A nem em B.
> Colocar arquivos em banco de dados tem suas vantagens, como por exemplo,
> ter um backup unificado. Você também pode lidar com replicação dos dados e
> dos arquivos simultaneamente. Sem contar que tudo se torna transacional,
> portanto, você pode criar, modificar ou remover um arquivo ao mesmo tempo
> que outra transação e o banco cuida do isolamento e atomicidade da coisa
> toda.
> Ter um sistema de arquivos separado pode ser interessante quando você tem
> muitos acessos aos arquivos, isso é mais fácil de escalar que o banco de
> dados. Por outro lado, ao contrário do controle transacional que falei
> acima, é muuuito comum arquivos ficarem perdidos no sistema de arquivos
> sendo que o "caminho" já foi removido do banco de dados.
>
> Enfim, cada caso é um caso, acho que simplesmente o "tamanho do banco" e
> "uma grande tabela" não é fator de decisão ou exclusão.
>

Como bem colocado pelo Gurgel o simples fato do "tamanho do banco" não é um
bom indicativo para qualquer mudança e cada caso é um caso. Todavia, como
regra geral, sistemas de arquivos lidam melhores com arquivos do que
SGBD's. Toda vez que você adiciona uma nova camada de abstração, neste caso
o banco de dados, você não apenas pode perder em performance mas adiciona
um nível maior de complexidade que pode causar problemas indesejados, como
por exemplo corrupção dos arquivos armazenados no banco.

Com relação as vantagens do SGBD sobre o FS eu não vejo tanto ganho assim.
Por exemplo, não é preciso perder as vantagens transacionais ao colocar
toda a operação, incluindo as chamadas ao FS, na mesma transação. Pode-se
colocar as alterações no FS pro final da transação e em último caso pode-se
utilizar ferramentas de versionamento para garantir que o estado do sistema
de arquivos esteja consistente e em um caso onde o FS retorne um erro basta
executar um rollback. Com relação ao backup não vejo como vantagem tão
grande uma vez que de qualquer forma devemos ter uma boa estratégia para
ambos, SGBD e FS. Por outro lado concentrar os arquivos no BD irá aumenta o
tempo de backup e principalmente o tempo de recuperação pois fica mais
complexo a aplicação de paralelismo.

Outro ganho que se pode ter com arquivos no FS é a utilização de servidores
para mídias e arquivos estáticas. Muito mais eficientes e pode-se utilizar
CDN para distribuir a carga através da rede o que descentraliza o tráfego e
melhora performance.

Mas como foi falado acima pelo Gurgel, se não existe um problema real não
vejo porque mudar pelo simples fato de as tabelas estarem crescendo.

Att,

Charly Batista
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Criar ou não Indices para Contraints

2016-10-13 Por tôpico Charly
Pessoal, sempre lembrando, vamos evitar "top posting" com este meu
comentário aqui, isto atrapalha muito!!!

Em 14 de outubro de 2016 01:55, Fernando Franquini 'capin' <
fernando.franqu...@gmail.com> escreveu:

> Euler,
>
> Eu trabalhei bastante com Oracle e SQL Server, posso afirmar que faziam
> diferença e concordo com os pontos (i) e (ii).
>
> Porém em relação a junção fiquei em dúvida no item (iii):
>
> Se a PK da tabela A é FK na tabela B, ao realizar a junção de A com B e
> usar a coluna FK vai usar o indice da PK na A e na B nada??
>
> Obrigado pelas colocações.
> Abraços.
>
> 2016-10-13 11:16 GMT-03:00 Euler Taveira <eu...@timbira.com.br>:
>
>> On 13-10-2016 08:37, Fernando Franquini 'capin' wrote:
>> > Mas em princípio ele deve fazer mais bem que mal, porque? Porque toda
>> > junção com as chaves (FKs) que forem realizadas irão utilizar esse
>> índice.
>> >
>> Isso pode ser verdade em outros bancos (que criam índice para cada FK);
>> no postgres isso não é. É uma prática comum (criar esses índices) mas eu
>> particularmente não recomendo porque (i) ocupa espaço, (ii) torna
>> operações de INSERT, UPDATE e DELETE lentas (porque é necessário manter
>> os índices atualizados) e (iii) junções vão usar o índice da chave
>> primária e não o índice da FK. Quando esses índices são úteis? Em
>> consultas que não fazem a junção com a tabela da chave primária e a
>> cláusula WHERE inclui o campo da FK (e os valores utilizados são
>> seletivos).
>>
>> Nos diversos modelos que trabalhei atrevo a dizer que menos de 2% das
>> consultas vão se beneficiar de um índice em um campo que é FK. Portanto,
>> eu prefiro ir criando esses índices em FK sob demanda. Em modelos
>> consolidados, faz-se uma análise de todas as consultas e os planos de
>> execução vão dizer se o índice na FK é benéfico ou não.
>>
>> Em modelos migrados de outros SGBDs, após uma análise de uso, observa-se
>> que a maioria dos índices candidatos a remoção são em FK.
>
>

Com relação a questão de se criar indices para restrições de chave
estrangeira, como o Eula já colocou isso é desnecessário na maioria dos
casos. Onde seria interessante se criar? Cito aqui 3 situações que ajudam:

- Quando você tem operações em cascata. Isso vai ajudar na melhoria de
performance e de fato pode ser dramática a diferença de performance.
- Quando a junção é no sentido da tabela pai para a tabela filha. Como já
dito também, nem toda junção vai fazer uso do índice na tabela filha. Por
exemplo quando a junção é no sentido da tabela filha para a tabela pai vai
fazer uso do índice de chave na tabela pai pois os registros da tabela
filha já foram pré-selecionados. No caso de uma junção onde se busca no
sentido da tabela pai para a filha o otimizador pode fazer a escolha por
utilizar o índice em casos onde haja um bom nível de seletividade o que
melhora a performance.

Como as operações acima não são frequentes, por exemplo é muito mais comum
pesquisar um produto e fazer a junção dele com a categoria do que pesquisar
a categoria e trazer todos os produtos vinculados. Aqui mesmo com índice
dependendo da seletividade o otimizador pode escolher não fazer uso do
índice.

Portanto, se você altera com frequência a chave primária, remove os
registros da tabela pai com frequência ou seleciona os registros partindo
da tabela pai pra tabela filha com frequência e o índice possui índice de
seletividade suficiente então um índice faria sentido. Lembro que operações
em cascata são perigosas e, EU (opinião pessoal aqui) particularmente não
recomendo. Sem contar que são raros os casos onde realmente são
necessárias.


Charly Batista
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] LOCALE Portuguese_Brazil.1252 NO LINUX CentOS 7

2016-12-01 Por tôpico Charly
Eduardo, vamos por partes,

/LC_COLLATE = 'pt_BR-ISO-8859-1' LC_CTYPE = 'pt_BR-ISO-8859-1'/
>>>
>> /Olá Eduardo,
>>   reparei que estais usando um hífen separando pt_BR de ISO-8859-1, onde
>> me parece que deveria haver um ponto.
>>
>> Experimente assim:
>>
>> /
>>
>> /LC_COLLATE = 'pt_BR.ISO-8859-1' LC_CTYPE = 'pt_BR.ISO-8859-1' Att. Alex /
>>
>>
>>
> corrigi, porem, deu erro tb.
>
> ERROR:  encoding "UTF8" does not match locale "pt_BR.ISO-8859-1"
> DETAIL:  The chosen LC_CTYPE setting requires encoding "LATIN1".
> ** Error **
>
> ERROR: encoding "UTF8" does not match locale "pt_BR.ISO-8859-1"
> SQL state: 22023
> Detail: The chosen LC_CTYPE setting requires encoding "LATIN1".
>

No teu primeiro email você cita "Portuguese_Brazil.1252". Faz muito tempo
que eu não uso windows e esse encoding está com um nome um pouco diferente
do que eu costumava ver mas reconheço o "1252". Infelizmente "Windows-1252"
é quase um ISO-8859-1 mas não é. Existem algumas sequencias de caracteres
que são diferentes o que provoca erros.

Outro problema é que no windows UTF8 pode ser utilizado com qualquer locale
enquanto que no linux não, isso é um pouco mais organizado. Ao invés de
utilizar o locate pt_BR.ISO-8859-1 tenta utilizar pt_BR.UTF8.

Att,

Charly Batista
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] PostgreSQL com Docker

2017-07-12 Por tôpico Charly
Opa, vou deixar aqui meus 2 cents.

Em 5 de julho de 2017 07:18, Lucas Viecelli <lviecelli...@gmail.com>
escreveu:

> Boa noite.
>
> Nessas ultimas semanas andei realizando alguns testes do PostgreSQL com
> Docker afim de ter um ambiente de desenvolvimento mais dinâmico, e também
> para facilitar testes com diversas versões do PostgreSQL. Esses testes se
> mostraram bastantes estáveis e quero saber:
>
> Alguém utiliza o PostgreSQL com Docker em um ambiente de produção?
>
Eu conheço uns 2 ou 3 casos que estão dando certo mas são aplicações
específicas e pequenas e utilizam conteiners para o que eles, na minha
visão, foram criados para fazer, prover um nível aceitável de isolamento.


>
> Eu sei que escalar o PostgreSQL não é tão simples como escalar um servidor
> de aplicação. Mas quero saber as experiencias que vocês tem com essa dupla
> num ambiente real.
>

Conteiners não foram criados para prover escalabilidade. Existem poucas
aplicações que se beneficiariam de conteiners pra prover escalabilidade, e
essas são aplicações desprovidas de multi-processamento. Conteiners vão
apenas te propiciar um certo nível de isolamento dentro do teu box onde
você pode ter aplicações que poderiam competir por recursos trabalharem
armoniozamente. Com relação a escalabilidade existem dois tipos, vertical -
quando você adiciona mais poder computacional ao teu servidor-  e
horizontal - quando você adiciona mais servidores ao teu parque
computacional. Com docker você não adiciona nada, você divide, portanto
perde-se o conceito. Todavia, como eu falei anteriormente, você pode se
beneficiar em ter mais de uma instancia da mesma aplicação rodando no mesmo
box, por exemplo Redis. É uma ferramenta extraordinária mas não faz uso de
muiti processos, utiliza apenas um processo. Se você tiver um box com
multiplos núcleos e memoria suficiente pode ser mais benéfico ter várias
instancias executando no mesmo box do que ter diversos boxes distribuidos
pela rede. Mas aplicações multiprocesso como PG não tem ganho algum com
docker, excetuando-se raros casos onde se compartilha o box entre o banco e
outras aplicações, mas como outro colega colocou, pode ser complexo e
dispendioso.

Ressalvadas essas observações, quando bem utilizado o docker é uma
ferramenta interessante. Não é muito explorado no mundo corporativo mas vem
sendo bastante explorado por provedores de hospedagem e times de
desenvolvimento.

Att,

Charly Batista
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Erro ao tentar inserir um array de bytes

2009-07-23 Por tôpico Charly Frankl
Daniel,

Campos binários em geral são um problema dentro do hibernate (vou ser
sincero, não gosto muito de ORM's ... rsss) Segue um exemplo simples
utilizando JDBC direto, que acho bem mais simples...

File file = new File(myimage.gif);
FileInputStream fis = new FileInputStream(file);
PreparedStatement ps = conn.prepareStatement(INSERT INTO images VALUES (?,
?));
ps.setString(1, file.getName());
ps.setBinaryStream(2, fis, (int)file.length());
ps.executeUpdate();
ps.close();
fis.close();

Para maiores detalhes, dá uma olhada em
http://jdbc.postgresql.org/documentation/80/binary-data.html

Att,


-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083



2009/7/23 Daniel Henrique Joppi daniel.jo...@gmail.com

 adicionei a propriedade property name=defaultAutoCommit value=false /
 como sugerido em outros tópicos na internet ...

 alguém conhece uma outra maneira?

 On Wed, Jul 22, 2009 at 9:46 AM, Daniel Henrique Joppi 
 daniel.jo...@gmail.com wrote:

 Bom dia,

 Estou com problemas ao tentar inserir um array de bytes em um campo do
 tipo oid.

 org.springframework.jdbc.UncategorizedSQLException: Hibernate operation:
 could not insert: [com.norxs.mama.MyMessage]; uncategorized SQLException for
 SQL [insert into public.MyMessage (isProtocol, domain, sourceID, service,
 flow, priority, status, createdOn, message, props, uniqueid, messageType,
 nrDoc, fromPartner, toPartner, messageSize, billingTo, processedOn, billing,
 groupType, messageIdKey) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
 ?, ?, ?, ?, ?, ?, ?)]; SQL state [25P01]; error code [0]; Objetos Grandes
 não podem ser usados no modo de efetivação automática (auto-commit).; nested
 exception is org.postgresql.util.PSQLException: Objetos Grandes não podem
 ser usados no modo de efetivação automática (auto-commit).
 at
 org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.translate(SQLStateSQLExceptionTranslator.java:121)
 at
 org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:322)
 at
 org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424)
 at
 org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:410)
 at
 org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:378)
 at
 org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:639)
 at com.norxs.mama.DBPersistence.messageArrived(DBPersistence.java:411)
 at
 com.norxs.mama.jbi.ReceiverLegacyMonoComponent.poll(ReceiverLegacyMonoComponent.java:98)
 at
 org.apache.servicemix.components.util.PollingComponentSupport.run(PollingComponentSupport.java:65)
 at
 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 at
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
 at java.lang.Thread.run(Thread.java:619)
 Caused by: org.postgresql.util.PSQLException: Objetos Grandes não podem
 ser usados no modo de efetivação automática (auto-commit).
 at
 org.postgresql.largeobject.LargeObjectManager.createLO(LargeObjectManager.java:241)
 at
 org.postgresql.largeobject.LargeObjectManager.createLO(LargeObjectManager.java:228)
 at
 org.postgresql.jdbc2.AbstractJdbc2Statement.setBlob(AbstractJdbc2Statement.java:2851)
 at
 org.apache.commons.dbcp.DelegatingPreparedStatement.setBlob(DelegatingPreparedStatement.java:181)
 at org.hibernate.type.BlobType.set(BlobType.java:49)
 at org.hibernate.type.BlobType.nullSafeSet(BlobType.java:117)
 at
 org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2002)
 at
 org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2248)
 at
 org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2665)
 at
 org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:60)
 at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
 at
 org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
 at
 org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
 at
 org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
 at
 org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
 at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
 at
 org.springframework.orm.hibernate3.HibernateAccessor.flushIfNecessary(HibernateAccessor.java:390)
 at
 org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:374)
 ... 7 more

 --
 [ ]'s
 Daniel Henrique Joppi

 msn: no...@hotmail.com
 gtalk: daniel.jo...@gmail.com
 skype: daniel.joppi




 --
 [ ]'s
 Daniel Henrique Joppi

 msn

Re: [pgbr-geral] Erro ao tentar inserir um array de bytes

2009-07-23 Por tôpico Charly Frankl
Daniel, não é nem problema com o driver, mas sim como o DB trata os dados
binários... Diferentemente dos dados planos, dados binários você tem que
trabalhar com fluxo de dados... De uma maneira bem grosseira, vai escrever
como se estivesse escrevendo em um fluxo de arquivo convencional... Logo, só
deve realizar o commit quando o fluxo terminar com sucesso. Neste caso, não
é exclusividade do PostgreSQL.

Att,


2009/7/23 Daniel Henrique Joppi daniel.jo...@gmail.com

 Charly,

 Obrigado pelo retorno. Vou dar uma analisada melhor no hibernate, talvez
 tenhamos que fazer algumas modificações nele.
 Não temos como remove-lo pois é o utilizamos a muito tempo, e agora quando
 fomos atualizar a versão de outro banco notamos o mesmo problema com campos
 binários.

 Mas voltando ao Postgres notei que na própria API de conexão não me deixa
 enviar meu dados se tiver com o AutoComit:

 na classe *org.postgresql.largeobject.LargeObjectManager*

 *public *LargeObject open(long oid, int mode) *throws *SQLException
 {
 *if* (conn.getAutoCommit())
 *throw new* PSQLException(GT.tr(Large Objects may not be used
 in auto-commit mode.),
 PSQLState.*NO_ACTIVE_SQL_TRANSACTION*
 );
 *return new *LargeObject(fp, oid, mode);
 }

 então não seria só problema do hibernate, mas sim do driver de conexão
 também? Alguém tem idéia o porque disso?


 On Thu, Jul 23, 2009 at 4:14 PM, Charly Frankl carl...@gmail.com wrote:

 Daniel,

 Campos binários em geral são um problema dentro do hibernate (vou ser
 sincero, não gosto muito de ORM's ... rsss) Segue um exemplo simples
 utilizando JDBC direto, que acho bem mais simples...

 File file = new File(myimage.gif);
 FileInputStream fis = new FileInputStream(file);
 PreparedStatement ps = conn.prepareStatement(INSERT INTO images VALUES
 (?, ?));
 ps.setString(1, file.getName());
 ps.setBinaryStream(2, fis, (int)file.length());
 ps.executeUpdate();
 ps.close();
 fis.close();

 Para maiores detalhes, dá uma olhada em
 http://jdbc.postgresql.org/documentation/80/binary-data.html

 Att,


 --
 Charly Frankl
 http://javadevilopers.blogspot.com/
 charlyfra...@gmail.com
 Linux user #391083



 2009/7/23 Daniel Henrique Joppi daniel.jo...@gmail.com

  adicionei a propriedade property name=defaultAutoCommit value=false
 / como sugerido em outros tópicos na internet ...

 alguém conhece uma outra maneira?

 On Wed, Jul 22, 2009 at 9:46 AM, Daniel Henrique Joppi 
 daniel.jo...@gmail.com wrote:

 Bom dia,

 Estou com problemas ao tentar inserir um array de bytes em um campo do
 tipo oid.

 org.springframework.jdbc.UncategorizedSQLException: Hibernate operation:
 could not insert: [com.norxs.mama.MyMessage]; uncategorized SQLException 
 for
 SQL [insert into public.MyMessage (isProtocol, domain, sourceID, service,
 flow, priority, status, createdOn, message, props, uniqueid, messageType,
 nrDoc, fromPartner, toPartner, messageSize, billingTo, processedOn, 
 billing,
 groupType, messageIdKey) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
 ?, ?, ?, ?, ?, ?, ?)]; SQL state [25P01]; error code [0]; Objetos Grandes
 não podem ser usados no modo de efetivação automática (auto-commit).; 
 nested
 exception is org.postgresql.util.PSQLException: Objetos Grandes não podem
 ser usados no modo de efetivação automática (auto-commit).
 at
 org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.translate(SQLStateSQLExceptionTranslator.java:121)
 at
 org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:322)
 at
 org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424)
 at
 org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:410)
 at
 org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:378)
 at
 org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:639)
 at
 com.norxs.mama.DBPersistence.messageArrived(DBPersistence.java:411)
 at
 com.norxs.mama.jbi.ReceiverLegacyMonoComponent.poll(ReceiverLegacyMonoComponent.java:98)
 at
 org.apache.servicemix.components.util.PollingComponentSupport.run(PollingComponentSupport.java:65)
 at
 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 at
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
 at java.lang.Thread.run(Thread.java:619)
 Caused by: org.postgresql.util.PSQLException: Objetos Grandes não podem
 ser usados no modo de efetivação automática (auto-commit).
 at
 org.postgresql.largeobject.LargeObjectManager.createLO(LargeObjectManager.java:241)
 at
 org.postgresql.largeobject.LargeObjectManager.createLO(LargeObjectManager.java:228)
 at
 org.postgresql.jdbc2.AbstractJdbc2Statement.setBlob(AbstractJdbc2Statement.java:2851

Re: [pgbr-geral] Parse

2009-07-30 Por tôpico Charly Frankl
Kaui, bom dia...

Pelo que você escreveu:
preparete query - execute query - dealocate preparetequery

Bem, isso ao meu ver não faz sentido... você está indicando ao banco que
realize o parse toda vez que a consulta seja realizada com o dealocate. Se a
consulta é utilizada repetidas vezes dentro da seção aberta, não precisa
remove-la do plano de consultas (dealocate), pois vai perder todo o
benefício que o prepare te dá.

Espero ter ajudado.

Att,


-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083




2009/7/30 Kauí Aires Oliveira kauiai...@gmail.com

 Bom Dia Osvaldo...

 Exatamente é o que estamos conjurando ser a aplicação, pois tem outra
 aplicação que não utiliza a Zend como frame work e faz todo esse
 procedimento e não está acontecendo isso... Suspeito que seja algum
 parâmetro ativo algo do gênero... Mas é exatamente isso é uma consulta que é
 executada N vezes...

 Mas até agora o problema persiste :(

 2009/7/29 Osvaldo Kussama osvaldo.kuss...@gmail.com

 2009/7/29 Kauí Aires Oliveira kauiai...@gmail.com:
  Olá Dickson
 
  Não usamos ORM vem da zend direto a aplicação... o erro é porque
 qualquer
  query que seja executada faz o seguinte
  preparete query - execute query - dealocate preparetequery
  E quando o sistema tenta passar alguma coisa ele faz o parse e o
 dealocate
  da assinatura do preparete...
 


 Se eu entendi corretamente o problema está em sua aplicação.
 A vantagem de usar o PREPARE é que o PostgreSQL analisa, reescreve e
 planeja uma única vez e cada EXECUTE apenas executa com os parâmetros
 recebidos. Só tem sentido se um determinado modelo de query vai ser
 executado múltiplas vezes, não faz sentido usar este procedimento *a
 cada query*.

 Osvaldo
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] NOT NULL

2009-07-30 Por tôpico Charly Frankl
Sergio, bom dia...

Basta utilizar uma trigger.

Att,



-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083



2009/7/30 sergio santos sergio.serginhos...@gmail.com

 Pessoal,

 eu consigo colocar uma restrição em um campo de uma tabela para ser NOT
 NULL.
 No entanto eu não consigo, por exemplo, colocar uma restrição para um campo
 do tipo character varying(30) não receber vazio.

 O que tô querendo dizer é que NULL e vazio é diferente. E o que estou
 querendo saber é como colocar uma restrição no banco de dados para ele não
 receber valor vazio.

 abraços

 --
 Sérgio Antônio dos Santos
 Bacharel em Sistemas de Informação
 (31) 8573-7004
 http://serginhosant.wordpress.com/
 http://www.rccvicosa.com

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Res: Res: Res: Analise de uso de index entre 8.2 ou 8.3

2009-07-31 Por tôpico Charly Frankl
Paulo, boa tarde...

No teu email inicial, você disse que criou o indice xix1_cliente em desenv e
resolveu, mas não resolveu em produção. Olhando o teu explain, podemos ver
que um dos pontos de impacto, como falado anteriormente é a entidade
logradouro_bairro:

Desenv:
  -  Index Scan using logradouro_bairro_pkey on
logradouro_bairro logradouro3_  (cost=0.00..6.07 rows=1 width=8) (actual
time=9.047..9.048 rows=1 loops=284) Index Cond: (logradouro3_.lgbr_id =
clienteend2_.lgbr_id)

Produção:
-  Seq Scan on logradouro_bairro
logradouro3_  (cost=0.00..2033.86 rows=117186 width=8) (actual
time=0.011..359.858 rows=117186 loops=1)

Temos um acesso sequencial ai... E nesse ponto, o custo da consulta comeca a
ficar muito elevada.

Dá uma olhada nessa entidade em produção... Se para o atributo em questão
você tem um indice...

Outra coisa, para melhorar um pouco o banco na hora do parse, inverta a
ordem dos atributos no teu relacionamento (o analisador de consultas
provavelmente vai fazer isso pra vc, mas não custa nada dar uma
maozinha... rsss), algo como:

select count(distinct cliente0_.clie_id) as col_0_0_
from cadastro.cliente cliente0_
left outer join cadastro.cliente_tipo clientetip1_ on
clientetip1_.cltp_id = cliente0_.cltp_id
left outer join cadastro.cliente_endereco clienteend2_ on
clienteend2_.clie_id = cliente0_.clie_id
left outer join cadastro.logradouro_bairro logradouro3_ on
logradouro3_.lgbr_id = clienteend2_.lgbr_id
left outer join cadastro.bairro bairro4_ on bairro4_.bair_id =
logradouro3_.bair_id
left outer join cadastro.municipio municipio5_ on municipio5_.muni_id =
bairro4_.muni_id
where (upper(cliente0_.clie_nmcliente) like 'EDNALDO F%') and
municipio5_.muni_id=960


Considere também a possibilidade de substituir os left outer join por
inner join (como falado tb), claro se a lógica do sistema permitir... Pois
o custo de outer joins pro banco é alto...

Espero ter ajudado.


Att,


-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083


2009/7/31 paulo matadr saddon...@yahoo.com.br

 Boa tarde euler,
 nao houve mudanca no plano..fui ate 64 de work e nada

 --
 *De:* Euler Taveira de Oliveira eu...@timbira.com
 *Para:* Comunidade PostgreSQL Brasileira 
 pgbr-geral@listas.postgresql.org.br
 *Enviadas:* Quarta-feira, 29 de Julho de 2009 18:14:19
 *Assunto:* Re: [pgbr-geral] Res: Res: Analise de uso de index entre 8.2 ou
 8.3

 paulo matadr escreveu:
  Os parametros do servidor aparentemente importantes sao:
 
 Qual é o valor de work_mem? Você tentou fazer:

 SET work_mem to 16MB;
 EXPLAIN ANALYZE SELECT ...;
 SET work_mem to 8MB;
 EXPLAIN ANALYZE SELECT ...;
 SET work_mem to 32MB;
 EXPLAIN ANALYZE SELECT ...;

 O plano mudou?

 Outra coisa é que você está utilizando LEFT JOIN em todas as junções. Eles
 são
 realmente necessários ou tem algum deles que pode ser um INNER JOIN
 (aqueles
 cuja chave estrangeira não pode ser nula)? Junções externas *não*
 restringem
 tanto o conjunto de dados quanto junções internas e, tendem a ser mais
 custosas.


 --
   Euler Taveira de Oliveira
   http://www.timbira.com/
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

 --
 Veja quais são os assuntos do momento no Yahoo! + Buscados: Top 
 10http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/-
 Celebridadeshttp://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/celebridades/-
 Músicahttp://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/m%C3%BAsica/-
 Esporteshttp://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/esportes/

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Proposta de estudo sobre definiçã o de índices de BD

2009-08-04 Por tôpico Charly Frankl
 utilizados mas em casos raros e não trariam maiores
 problemas caso ele fosse removido. No caso da estratégia (iv), podemos ter
 que
 decompor um índice para que mais consultas possam se beneficiar deles ou

 Assim, os SGBDs possuem ferramentas de análise (a posteriori) para definir
 se
 índices são úteis ou não e sugerir a criação caso sejam benéficos. Vide a
 ferramenta [3] ou os trabalhos do Prof. Sergio [4].


 [1]
 http://wiki.postgresql.org/wiki/Database_Administration_and_Maintenance
 [2] http://wiki.postgresql.org/wiki/Portugu%C3%AAs
 [3] http://pgfoundry.org/projects/pgadviser/
 [4] 
 http://www.inf.puc-rio.br/~postgresql/index.php?acao=grupopesquisahttp://www.inf.puc-rio.br/%7Epostgresql/index.php?acao=grupopesquisa


 --
  Euler Taveira de Oliveira
  http://www.timbira.com/
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Otimizacao delete

2009-08-04 Por tôpico Charly Frankl
Paulo, boa tarde...

Consultas com clausulas in em geral sao um problema, pois vc acaba tendo
duas matrizes... No teu caso, o banco escolheu por fazer um acesso
sequencial na tabela, foi menos custoso para ele.

Com relacao ao indice ai, nao sei se adiantaria, pois ele teria que fazer um
nested loop... Para cada registro selecionado na entidade A localizar o
correspondente na entidade B... Existe a possibilidade de ser bem mais
custoso... Talvez por isso as outras consultas nao surtiram muito efeito...

Bem, com relacao a sugestoes, desculpe-me por nao ajudar por enqto, mas nao
deu pra analisar com mais cuidado uma solucao alternativa... Creio que
amanha consiga ter um pouco mais de tempo, e se tiver alguma ideia, posto
aki.


Att,

2009/8/4 paulo matadr saddon...@yahoo.com.br

 Olha pessoal,
 Eu to com esse delete na maior tabela do meu banco:
 delete from cobranca_documento_item where cnta_id in  (select cnta_id from
 conta_geral where cntg_ichistorico=3)
 que ta  sendo muito custoso para nosso ambiente,no analyze
 Hash IN Join  (cost=444791.95..11042547.76 rows=1390453 width=6)
   Hash Cond: (cobranca_documento_item.cnta_id = conta_geral.cnta_id)
   -  Seq Scan on cobranca_documento_item  (cost=0.00..5242127.64
 rows=245865664 width=10)
   -  Hash  (cost=438290.02..438290.02 rows=373994 width=4)
 -  Bitmap Heap Scan on conta_geral  (cost=7278.42..438290.02
 rows=373994 width=4)
   Recheck Cond: (cntg_ichistorico = 3)
   -  Bitmap Index Scan on xix1_conta_geral
 (cost=0.00..7184.92 rows=373994 width=0)
 Index Cond: (cntg_ichistorico = 3)

 Estrutura:
 -Fk de cobranca_documento_item pra conta_geral ligando os campos cnta_id
 -Index para  cnta_id em  cobranca_documento_item(nao usando neste explain)
 -cnta_id em conta_geral é uma pk
 -Index para cntg_ichistorico em  conta_geral( xix1_conta_geral)

 Existe uma maneira de fazer um delete mais otimizado n qual nao haja
 seqscan em cobranca_documento_item ?






 --
 Veja quais são os assuntos do momento no Yahoo! + Buscados: Top 
 10http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/-
 Celebridadeshttp://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/celebridades/-
 Músicahttp://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/m%C3%BAsica/-
 Esporteshttp://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/esportes/

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Replicação

2009-08-06 Por tôpico Charly Frankl
Walter, bom dia...

Para replicação você dispõe de algumas opções no universo PostgreSQL. Para
escolher a ideal no teu caso, tem-se que ver o quanto está disposto a correr
risco de perda de dados (quanto de perda é aceitável), impactos na
performance do sistema, disponibilidade do sistema (por quanto tempo eu
posso ficar com o sistema indisponível), custo operacional de implantação,
tempo gasto para recuperar os dados, dentre outras coisas.

Tendo ponderado sobre isso, pode-se optar por um modelo síncrono ou
assíncrono.

Dentre as soluções assíncronas posso destacar:
Slony
Warm Standby
Bucardo
SkyTools
Mammoth


Dentre as soluções síncronas:
PgPool-II
Log Shipping
Sequoia
*ParGRES (desenvolvido pelo pessoal do UFRJ... bem interessante)
*GridSQL (desenvolvido pelo pessoal da EnterpriseDB. Tb vale a pena dar uma
olhada)


Existem outras soluções também, como o PGCluster... Algumas destas soluções
não se propõem apenas a replicação, mas também a balanço de carga, pool de
conexões...


Espero ter ajudado.


Att,


-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083




2009/8/5 Walter Maier Neto wmaie...@yahoo.com.br


  Atualmente temos 4 servidores, todos de trabalho, replicando entre si
 (multi-master) com uma aplicação proprietária (de terceiros) que utiliza
 dblink e trigger. Mas este modelo está apresentando alguns
 problemas/restrições em relação ao ERP que é não é da mesma empresa da
 replica.

  Estamos pensando em utilizar replicação para contingência (alta
 disponibilidade) e não mais para balanceamento de carga, ou seja, utilizar o
 servidor principal para trabalho e o segundário como espelho do primeiro,
 sendo somente utilizado em caso de crash no principal;

  Busco mais informações práticas e consultoria especializada sobre o
 assunto;

  Grato;

  Walter Maier Neto






  
 
 Veja quais são os assuntos do momento no Yahoo! +Buscados
 http://br.maisbuscados.yahoo.com
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Replicação

2009-08-06 Por tôpico Charly Frankl
Blz... Sorte nos teus testes, e podendo ajudar, basta perguntar.

Att,



-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083




2009/8/6 Walter Maier Neto wmaie...@yahoo.com.br


  O risco de perda de dados deve ser minimizado ao máximo, mas além disso, o
 custo da indisponibilidade é muito alto. Tolerada por períodos curtos, de 1
 a 2 horas na pior hipótese, mas nunca superior a isso. Mas o objetivo é que,
 tanto a perda de dados como a indisponibilidade sejam eliminadas
 (estatisticamente);

  Atualmente a solução é assincrona, e esse não é nosso problemas. A
 preocupação com replicação sincrona é uma possível perda de performance,
 pois o servidor slave está em outro site (por segurança), e mesmo
 interligado através de um link profissional, tem performace muito inferior
 que uma rede local. Nosso volume de dados é considerável.

  Grato pela referência abaixo, vou dar uma pesquisada e começar os pilotos;

  Att;

  Walter Maier Neto
  Guarapuava/PR

 - Mensagem original -
 De: Charly Frankl carl...@gmail.com
 Para: Walter Maier Neto wmaie...@yahoo.com.br, Comunidade PostgreSQL
 Brasileira pgbr-geral@listas.postgresql.org.br
 Enviadas: Quinta-feira, 6 de Agosto de 2009 9:36:43 (GMT-0300)
 Auto-Detected
 Assunto: Re: [pgbr-geral] Replicação

 Walter, bom dia...

 Para replicação você dispõe de algumas opções no universo PostgreSQL. Para
 escolher a ideal no teu caso, tem-se que ver o quanto está disposto a correr
 risco de perda de dados (quanto de perda é aceitável), impactos na
 performance do sistema, disponibilidade do sistema (por quanto tempo eu
 posso ficar com o sistema indisponível), custo operacional de implantação,
 tempo gasto para recuperar os dados, dentre outras coisas.

 Tendo ponderado sobre isso, pode-se optar por um modelo síncrono ou
 assíncrono.

 Dentre as soluções assíncronas posso destacar:
 Slony
 Warm Standby
 Bucardo
 SkyTools
 Mammoth


 Dentre as soluções síncronas:
 PgPool-II
 Log Shipping
 Sequoia
 *ParGRES (desenvolvido pelo pessoal do UFRJ... bem interessante)
 *GridSQL (desenvolvido pelo pessoal da EnterpriseDB. Tb vale a pena dar uma
 olhada)


 Existem outras soluções também, como o PGCluster... Algumas destas soluções
 não se propõem apenas a replicação, mas também a balanço de carga, pool de
 conexões...


 Espero ter ajudado.


 Att,


 --
 Charly Frankl
 http://javadevilopers.blogspot.com/
 charlyfra...@gmail.com
 Linux user #391083





 2009/8/5 Walter Maier Neto  wmaie...@yahoo.com.br 



 Atualmente temos 4 servidores, todos de trabalho, replicando entre si
 (multi-master) com uma aplicação proprietária (de terceiros) que utiliza
 dblink e trigger. Mas este modelo está apresentando alguns
 problemas/restrições em relação ao ERP que é não é da mesma empresa da
 replica.

 Estamos pensando em utilizar replicação para contingência (alta
 disponibilidade) e não mais para balanceamento de carga, ou seja, utilizar o
 servidor principal para trabalho e o segundário como espelho do primeiro,
 sendo somente utilizado em caso de crash no principal;

 Busco mais informações práticas e consultoria especializada sobre o
 assunto;

 Grato;

 Walter Maier Neto







 
 Veja quais são os assuntos do momento no Yahoo! +Buscados
 http://br.maisbuscados.yahoo.com
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral








  
 
 Veja quais são os assuntos do momento no Yahoo! +Buscados
 http://br.maisbuscados.yahoo.com
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] funcionamento do driver postgresql-8.4...jdbc4.jar

2009-08-10 Por tôpico Charly Frankl
Qual a versão do driver vc está utilizando?


2009/8/7 jorge sanfelice jorgesanfel...@gmail.com

 Prezados,

 É normal isso no funcionamento dos driver's jdbc para o postgresql (eu
 achei que isso era gerado pelo pool de conexoes, mais descobri que é
 relacionado ao driver mesmo):
 ...
 duração: 0.897 ms  análise de unnamed:  SELECT  veioid,veiplaca
 FROM veiculo  INNER JOIN login_veiculo ON logvveioid = veioid  WHERE
 logvlogoid = 6
 duração: 0.137 ms  ligação unnamed:  SELECT  veioid,veiplaca  FROM
 veiculo  INNER JOIN login_veiculo ON logvveioid = veioid  WHERE
 logvlogoid = 6
 duration: 0.182 ms  executar unnamed:  SELECT  veioid,veiplaca  FROM
 veiculo  INNER JOIN login_veiculo ON logvveioid = veioid  WHERE
 logvlogoid = 6
 

 Pergunto isso, porque nao sei que impacto a repeticao dos comandos
 pode gerar na performance do banco ou na quantidade de transacoes
 executadas.

 Alguem conhece bem isso para me dizer se é uma característica normal
 ou se pode causar problema esse tipo de funcionamento?

 Obrigado.
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] funcionamento do driver postgresql-8.4...jdbc4.jar

2009-08-10 Por tôpico Charly Frankl
Jorge, boa tarde...

Esse comportamento é bem típico de conexão em modo de DEBUG. O driver dá
suporte a isso, e a documentação diz:

loglevel = int

Set the amount of logging information printed to the DriverManager's current
value for LogStream or LogWriter. It currently supports values of
org.postgresql.Driver.DEBUG (2) and org.postgresql.Driver.INFO (1).
INFOwill log very little information while
DEBUG will produce significant detail. This property is only really useful
if you are a developer or are having problems with the driver.


Bem, apesar de não tenho muitas informações sobre tua aplicação (conexão,
versão de vm, servidor de aplicações, etc...) vou chutar esta
possibilidade... rss


Com relação ao impacto, claro que o fato de estar logando essas
informações acarretará prejuízo... é mais um processo pra fila...


No mais,


[ ]'s


-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083



2009/8/10 jorge sanfelice jorgesanfel...@gmail.com

 Em um server 8.4
 driver postgresql-8.4...jdbc4.jar

 em um server 8.3
 driver postgresql-8.3...jdbc3.jar


   Resumindo, nas duas versoes do driver faz a mesma coisa.

 2009/8/10 Charly Frankl carl...@gmail.com:
  Qual a versão do driver vc está utilizando?
 
 
  2009/8/7 jorge sanfelice jorgesanfel...@gmail.com
 
  Prezados,
 
  É normal isso no funcionamento dos driver's jdbc para o postgresql (eu
  achei que isso era gerado pelo pool de conexoes, mais descobri que é
  relacionado ao driver mesmo):
  ...
  duração: 0.897 ms  análise de unnamed:  SELECT  veioid,veiplaca
  FROM veiculo  INNER JOIN login_veiculo ON logvveioid = veioid  WHERE
  logvlogoid = 6
  duração: 0.137 ms  ligação unnamed:  SELECT  veioid,veiplaca  FROM
  veiculo  INNER JOIN login_veiculo ON logvveioid = veioid  WHERE
  logvlogoid = 6
  duration: 0.182 ms  executar unnamed:  SELECT  veioid,veiplaca  FROM
  veiculo  INNER JOIN login_veiculo ON logvveioid = veioid  WHERE
  logvlogoid = 6
  
 
  Pergunto isso, porque nao sei que impacto a repeticao dos comandos
  pode gerar na performance do banco ou na quantidade de transacoes
  executadas.
 
  Alguem conhece bem isso para me dizer se é uma característica normal
  ou se pode causar problema esse tipo de funcionamento?
 
  Obrigado.
  ___
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 
 
 
  --
  Charly Frankl
  http://javadevilopers.blogspot.com/
  charlyfra...@gmail.com
  Linux user #391083
 
  ___
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 
 
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] funcionamento do driver postgresql-8.4...jdbc4.jar

2009-08-10 Por tôpico Charly Frankl
Flw irmao!!!

[ ]'s


-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083




2009/8/10 jorge sanfelice jorgesanfel...@gmail.com

 Opa,
 Muito obrigado pela ajuda ai. Vou dar uma analisada nisso que me
 passou e qualquer duvida volto a postar.

 2009/8/10 Charly Frankl carl...@gmail.com:
  Jorge, boa tarde...
 
  Esse comportamento é bem típico de conexão em modo de DEBUG. O driver dá
  suporte a isso, e a documentação diz:
 
  loglevel = int
 
  Set the amount of logging information printed to the DriverManager's
 current
  value for LogStream or LogWriter. It currently supports values of
  org.postgresql.Driver.DEBUG (2) and org.postgresql.Driver.INFO (1). INFO
  will log very little information while DEBUG will produce significant
  detail. This property is only really useful if you are a developer or are
  having problems with the driver.
 
  Bem, apesar de não tenho muitas informações sobre tua aplicação (conexão,
  versão de vm, servidor de aplicações, etc...) vou chutar esta
  possibilidade... rss
 
 
  Com relação ao impacto, claro que o fato de estar logando essas
  informações acarretará prejuízo... é mais um processo pra fila...
 
 
  No mais,
 
 
  [ ]'s
 
 
  --
  Charly Frankl
  http://javadevilopers.blogspot.com/
  charlyfra...@gmail.com
  Linux user #391083
 
 
 
  2009/8/10 jorge sanfelice jorgesanfel...@gmail.com
 
  Em um server 8.4
  driver postgresql-8.4...jdbc4.jar
 
  em um server 8.3
  driver postgresql-8.3...jdbc3.jar
 
 
Resumindo, nas duas versoes do driver faz a mesma coisa.
 
  2009/8/10 Charly Frankl carl...@gmail.com:
   Qual a versão do driver vc está utilizando?
  
  
   2009/8/7 jorge sanfelice jorgesanfel...@gmail.com
  
   Prezados,
  
   É normal isso no funcionamento dos driver's jdbc para o postgresql
 (eu
   achei que isso era gerado pelo pool de conexoes, mais descobri que é
   relacionado ao driver mesmo):
   ...
   duração: 0.897 ms  análise de unnamed:  SELECT  veioid,veiplaca
   FROM veiculo  INNER JOIN login_veiculo ON logvveioid = veioid  WHERE
   logvlogoid = 6
   duração: 0.137 ms  ligação unnamed:  SELECT  veioid,veiplaca  FROM
   veiculo  INNER JOIN login_veiculo ON logvveioid = veioid  WHERE
   logvlogoid = 6
   duration: 0.182 ms  executar unnamed:  SELECT  veioid,veiplaca
  FROM
   veiculo  INNER JOIN login_veiculo ON logvveioid = veioid  WHERE
   logvlogoid = 6
   
  
   Pergunto isso, porque nao sei que impacto a repeticao dos comandos
   pode gerar na performance do banco ou na quantidade de transacoes
   executadas.
  
   Alguem conhece bem isso para me dizer se é uma característica normal
   ou se pode causar problema esse tipo de funcionamento?
  
   Obrigado.

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] BLOQUEIO DE REGISTRO

2009-08-11 Por tôpico Charly Frankl
Miguel, boa noite...

Para você bloquear os selects, faça todos com FOR UPDATE ... Ai você tem
opções, onde para retornar logo que está ocupado utilize NOWAIT.

Att,


2009/8/11 JotaComm jota.c...@gmail.com

 Olá, Miguel

 Já comentei no email anterior e fiz uma pequena descrição de como isso
 funciona. Você deu uma olhada no exemplo que mandei?

 O PostgreSQL não bloqueia a leitura (SELECT), apenas operações de escrita
 (UPDATE e DELETE).


 2009/8/11 MIGUEL JOSE DE LIMA mig...@inlocsistemas.com.br

 Oi Mário, Este é o problema a leitura nunca é bloqueada.
 Fiz os testes pedidos, mas para mim não mudou nada!
 Veja:
 - Na sessão 1:
  db_teste=# BEGIN WORK;
  BEGIN
  db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT;
  LOCK TABLE
  db_teste=# UPDATE tab_material SET desc_serma = 'LAPIS Y' where
 codg_serma='10';
  UPDATE 1
  db_teste=#   *** aguardando novo comando ***
 - Na sessão 2:
   db_teste=# BEGIN WORK;
   BEGIN
   db_teste=# SELECT * FROM tab_material where codg_serma='10';
   codg_empr | codg_serma |  id_serma  | desc_serma

---++++--+--
202   | 10 | 202010 | LAPIS Y|

 É isso ai!!!??
 Obrigado.

 2009/8/11 Mário Oshiro mario.osh...@gmail.com

 Em SQLServer, fiz um teste parecido com o seu.

 Qdo vc faz um lock de registro ou trabela,  ele nao bloqueia a leitura
 de outras sessoes, ate' que a
 sessao de posse do lock, faça um update de algum dado do registro.

 Para bloquear o select que vc fez, faca em seguida um update com a mesmo
 where assim :

  db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE;
  update tab_material set codg_serma='10' where codg_serma='10' ;

 teste la e depois envie o resultado.

 até mais.



 MIGUEL JOSE DE LIMA wrote:
  Caros, participantes...
  Sou iniciante neste mundo do PostgreSQL.
  Trabalho com outro Banco de Dados - ADABAS (UNIX SOLARIS/MAINFRAME),
  mas me incubiram de fazer testes no PostgreSQL para bloquer registros.
  Então...
 
  Estou precisando de ajuda para bloquear a leitura de um registro, ou
  seja,
  em um cenário como:
   Atualização de Estoque de um Material :
  Antes de atualizar o estoque do material selecionado eu preciso
  bloquear o registro para que
  nenhuma outra sessão possa obter o dado do registro.
  PRECISO DE UMA LEITURA EXCLUSIVA - TOTALMENTE RESTRITIVA.
  Estou usando o PostgreSQL 8.3.7 para os testes - em linux
  Já li e reli sobre o Isolamento de Transação, mas pode ser que eu não
  esteja entendendo...???
  Fiz o seguinte teste via psql:
  - Na Sessão A
db_teste=# BEGIN WORK;
BEGIN
db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT;
LOCK TABLE
db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR
 UPDATE;
resultado obtido ok!
*** aqui eu preciso bloquear todos os materiais/itens (de um pedido)
  - como ex. fiz de apenas 1 (um).
 
  - Na Sessão B:
  ** Fiz o mesmo SELECT sem a clausula FOR UPDATE:
SELECT * FROM tab_material where codg_serma='10'
 
** aqui eu obtive o resultado ok da leitura.
   Portanto, é aqui, neste ponto que não deveria permitir nenhuma
  leitura, já que sessão A ainda não terminou!
   E AI ALGUÉM PODE ME AJUDAR!?
 
  Obrigado!
 
 
 
 
 
 
 
  ___
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



 []s
 --
 JotaComm
 http://jotacomm.wordpress.com
 http://www.dextra.com.br/postgres

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] BLOQUEIO DE REGISTRO

2009-08-12 Por tôpico Charly Frankl
Bom dia Leandro...

Concordo com você que seja um tanto quanto decepcionante você não
conseguir um lock para consultas, mas como tratado, faz parte do modelo
relacional. Também tive essa dificuldade no início, quando vim trabalhar com
bancos relacionais.

Bem, mas como comentei, uma forma de burlar esta restrição é utilizar a
instrução FOR UPDATE NOWAIT. Segue um exemplo:

Em uma seção do psql (pgadmin, aplicação da empresa, etc...) aberta eu
realizo um select:

begin;
select *  from municipio where cod_uf = 43 FOR UPDATE NOWAIT;

(Observe que eu não fechei a transação...)

Se em outra seção aberta eu realizar o mesmo select :
begin;
select *  from municipio where cod_uf = 43 FOR UPDATE NOWAIT;

O banco simplesmente me retorna a mensagem:
ERROR:  could not obtain lock on row in relation municipio

Bem... É uma forma de burlar o problema a princípio, mas como já discutido
aqui, o melhor a fazer (ao menos a médio prazo) é rever a aplicação. Depois
de revista, ai sim você pode optar pelo melhor modelo. Utilizar o FOR UPDATE
NOWAIT em consultas de atualização não é um erro, mas utilizá-lo
indiscriminadamente pode trazer transtornos e efeitos colaterais não
desejados. Todavia, como cada caso exige uma solução específica, fica ai a
sugestão.


Espero ter ajudado.

Att,



-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083





2009/8/12 JotaComm jota.c...@gmail.com

 Olá, Miguel

 Faça o seguinte:

 Sessão A:
 BEGIN;
 UPDATE tabela SET codigo=100 WHERE codigo=1;
 --Vá para a sessão B


 Sessão B:
 BEGIN; --Opcional
 SELECT * FROM tabela WHERE codigo=1;
 --Aqui você ainda verá o registro 1, porque a transação (Sessão A) que está
 alterando o registro não fez o commit, então consequentemente você não
 consegue através desta sessão ver que o registro foi modificado. Para ver
 que o registro 1 não existe mais é necessário executar o comando COMMIT na
 Sessão A.

 Qualquer dúvida pergunta ai.

 2009/8/12 MIGUEL JOSE DE LIMA mig...@inlocsistemas.com.br

 Bom dia,
 Leandro, eu concordo com vc, talvez tenho que aprender a conviver com os
 conceitos
 de Banco de Dados Relacional e SQL..., mas confesso a vc que para mim é
 meio
 decepicionante, não conseguir LOCAR um registro para leitura e poder
 tratar isso.
 Até velho bom antigo CLIPPER fazia isso, vc imagina eu acostumado a fazer
 isso
 por logos anos, também com ADABAS.
 Mas eu gostaria, se possível, de lhe perguntar: COMO É POSSÍVEL ATUALIZAR
 UM SALDO DE QUALQUER COISA (estoque/contacorrente), SEM PRENDER O
 REGISTRO PARA LEITURA? COMO POSSO SIMULAR ISSO?
 Obs.: Como algumas pessoas já tentaram me ajudar..., informa mais uma vez
 que
  o SELECT ... FOR UPDATE não bloquei leitura!

 Obrigado!

  2009/8/11 Leandro Henrique Pereira Neto 
 leandro-henrique.pere...@serpro.gov.br

  Pelo que conheço não é uma questão do PostgreSQL e sim de bancos padrão
 SQL, pelo menos nos mais populares (SqlServer, Oracle, MySQL, PostgreSQL e
 DB2).


 O SELECT simples nunca é bloqueado (somente se usar for update).
 Porém usar todos os SQL com FOR UPDATE pode travar todo o seu sistema
 rapidinho já que somente uma transação poderá ler os dados de cada vez, como
 em sistema OLTP temos normalmente mais leitura do que alteração a coisa
 acaba ficando complicada.

 O que tem são os conceitos de transação e de consistência de leitura.

 Talvez seja o caso de você pensar o sistema em temos de bancos SQL e não
 tentar fazer no PostgreSQL o que um banco como o Adabas faz pois estruturas
 de funcionamento e implementação totalmente diferentes.

 Leandro Henrique Pereira Neto
 Administração de bancos de dados




 Charly Frankl escreveu:

 Miguel, boa noite...

 Para você bloquear os selects, faça todos com FOR UPDATE ... Ai você tem
 opções, onde para retornar logo que está ocupado utilize NOWAIT.

 Att,


 2009/8/11 JotaComm jota.c...@gmail.com

 Olá, Miguel

 Já comentei no email anterior e fiz uma pequena descrição de como isso
 funciona. Você deu uma olhada no exemplo que mandei?

 O PostgreSQL não bloqueia a leitura (SELECT), apenas operações de
 escrita (UPDATE e DELETE).


  2009/8/11 MIGUEL JOSE DE LIMA mig...@inlocsistemas.com.br

 Oi Mário, Este é o problema a leitura nunca é bloqueada.
  Fiz os testes pedidos, mas para mim não mudou nada!
 Veja:
 - Na sessão 1:
   db_teste=# BEGIN WORK;
  BEGIN
  db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT;
  LOCK TABLE
   db_teste=# UPDATE tab_material SET desc_serma = 'LAPIS Y' where
 codg_serma='10';
  UPDATE 1
  db_teste=#   *** aguardando novo comando ***
  - Na sessão 2:
db_teste=# BEGIN WORK;
   BEGIN
db_teste=# SELECT * FROM tab_material where codg_serma='10';
   codg_empr | codg_serma |  id_serma  | desc_serma


 ---++++--+--
202   | 10 | 202010 | LAPIS Y|

 É isso ai!!!??
 Obrigado.

  2009/8/11 Mário Oshiro mario.osh...@gmail.com

 Em SQLServer, fiz um teste parecido com

Re: [pgbr-geral] BLOQUEIO DE REGISTRO

2009-08-12 Por tôpico Charly Frankl
Estamos ai pra isso... Precisando, e eu podendo ajudar...

[ ]'s


-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083




2009/8/12 MIGUEL JOSE DE LIMA mig...@inlocsistemas.com.br

 OI, Charly,
 Fiz os testes aqui, e é como vc passou. Realmente ajuda!
 Valeu, Muito Obrigado!


 2009/8/12 Charly Frankl carl...@gmail.com

 Bom dia Leandro...

 Concordo com você que seja um tanto quanto decepcionante você não
 conseguir um lock para consultas, mas como tratado, faz parte do modelo
 relacional. Também tive essa dificuldade no início, quando vim trabalhar com
 bancos relacionais.

 Bem, mas como comentei, uma forma de burlar esta restrição é utilizar a
 instrução FOR UPDATE NOWAIT. Segue um exemplo:

 Em uma seção do psql (pgadmin, aplicação da empresa, etc...) aberta eu
 realizo um select:

 begin;
 select *  from municipio where cod_uf = 43 FOR UPDATE NOWAIT;

 (Observe que eu não fechei a transação...)

 Se em outra seção aberta eu realizar o mesmo select :
 begin;
 select *  from municipio where cod_uf = 43 FOR UPDATE NOWAIT;

 O banco simplesmente me retorna a mensagem:
 ERROR:  could not obtain lock on row in relation municipio

 Bem... É uma forma de burlar o problema a princípio, mas como já discutido
 aqui, o melhor a fazer (ao menos a médio prazo) é rever a aplicação. Depois
 de revista, ai sim você pode optar pelo melhor modelo. Utilizar o FOR UPDATE
 NOWAIT em consultas de atualização não é um erro, mas utilizá-lo
 indiscriminadamente pode trazer transtornos e efeitos colaterais não
 desejados. Todavia, como cada caso exige uma solução específica, fica ai a
 sugestão.


 Espero ter ajudado.

 Att,



 --
 Charly Frankl
 http://javadevilopers.blogspot.com/
 charlyfra...@gmail.com
 Linux user #391083



___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] BLOQUEIO DE REGISTRO

2009-08-12 Por tôpico Charly Frankl
É uma alternativa, apesar de eu não gostar muito dela, pois sou a favor da
delegação de responsabilidades. Neste caso, transação de banco ser de
responsabilidade do banco... Delegando controle transacional para a
aplicação podemos incorrer em falhas já corrigidas no banco, além de outros
transtornos, como tornar muito complexa a implementação de código, muitas
vezes desnecessariamente (e antes que me leve a mal, não estou falando no
teu caso, pois nem conheço o problema).


Mas como dito anteriormente, e uma das coisas que acho mais bacana na área
de TI é que pra cada caso uma solução.


Att,


-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083




2009/8/12 mateusgra mateus...@bol.com.br


 Resolvi esse problema na aplicação. Em Java por exemplo vc pode fazer um
 filter onde so vai dar o commit qdo toda a transação for terminada.
 E se vc for mais alem pode até esperar o subimit do cliente.

 Seguindo o exemplo da compra online ele so atualizaria o saldo e o estoque
 se o cliente confirmasse toda a compra.


 MIGUEL JOSE DE LIMA wrote:
 
  Caros, participantes...
  Sou iniciante neste mundo do PostgreSQL.
  Trabalho com outro Banco de Dados - ADABAS (UNIX SOLARIS/MAINFRAME),
  mas me incubiram de fazer testes no PostgreSQL para bloquer registros.
  Então...
 
  Estou precisando de ajuda para bloquear a leitura de um registro, ou
 seja,
  em um cenário como:
   Atualização de Estoque de um Material :
  Antes de atualizar o estoque do material selecionado eu preciso bloquear
 o
  registro para que
  nenhuma outra sessão possa obter o dado do registro.
  PRECISO DE UMA LEITURA EXCLUSIVA - TOTALMENTE RESTRITIVA.
  Estou usando o PostgreSQL 8.3.7 para os testes - em linux
  Já li e reli sobre o Isolamento de Transação, mas pode ser que eu não
  esteja
  entendendo...???
  Fiz o seguinte teste via psql:
  - Na Sessão A
db_teste=# BEGIN WORK;
BEGIN
db_teste=# LOCK TABLE tab_material IN ROW EXCLUSIVE MODE NOWAIT;
LOCK TABLE
db_teste=# SELECT * FROM tab_material where codg_serma='10' FOR UPDATE;
resultado obtido ok!
*** aqui eu preciso bloquear todos os materiais/itens (de um pedido) -
  como ex. fiz de apenas 1 (um).
 
  - Na Sessão B:
  ** Fiz o mesmo SELECT sem a clausula FOR UPDATE:
SELECT * FROM tab_material where codg_serma='10'
 
** aqui eu obtive o resultado ok da leitura.
   Portanto, é aqui, neste ponto que não deveria permitir nenhuma
  leitura,
  já que sessão A ainda não terminou!
   E AI ALGUÉM PODE ME AJUDAR!?
 
  Obrigado!
 
  ___
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 
 

 --
 View this message in context:
 http://www.nabble.com/BLOQUEIO-DE-REGISTRO-tp24923152p24937028.html
 Sent from the PostgreSQL - Brasil mailing list archive at Nabble.com.

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Uso de índices

2009-08-13 Por tôpico Charly Frankl
Tiago, boa tarde...

Apesar de não ser o que perguntou, quero apenas colocar um ponto importante
com relação a criação de indices.

Todas as vezes que criamos um índice novo em uma entidade, estamos impondo
um custo de atualização ao Banco. Pois quando um registro é atualizado
(insert/update/delete) os índices também são atualizados. Logo, se você tem
uma entidade com muita concorrência transacional, o custo pode ser alto, e o
tempo de resposta para atualizações na entidade aumentar consideravelmente.

Portanto, a questão de criar ou não índices deve ser vista com muito
cuidado, principalmente em entidades que tem uma carga transacional alta.

As vezes vale a pena criar um índice temporariamente para uma
consulta/relatório específico, e depois de ser realizado o mesmo remover o
índice.


Att,



-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083




2009/8/13 Tiago Adami adam...@gmail.com

 Tenho uma tabela de cadastro de produtos com mais de 20 índices. Qualquer
 consulta nesta tabela é muito rápida, não importa o que for feito.
 Entretanto, eu tenho dúvidas quanto ao uso de todos os índices da tabela.

 Como eu poderia verificar quais os índices mais utilizados ou então quais
 os não utilizados? Através dos logs do banco?

 --
 Tiago J. Adami
 Dois Vizinhos - Paraná - Brasil


 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Uso de índices

2009-08-13 Por tôpico Charly Frankl
Sim... Bem lembrado!

Mas como havia falado com relação ao uso indiscriminado, existe a grande
possibilidade de um atributo que está sendo atualizado contemplar um índice
criado desnecessariamente.

O tema índice é muito interessante, e geralmente levanta muitas dúvidas e
polêmicas. E como já discutido anteriormente, não existe uma fórmula mágica
para o uso de índice. O sistema (estatísticas) vai dizer se precisa ou não.
Aplicações com demandas altas de operações transacionais, principalmente
inserções e inclusões, costumam (volto a ressaltar, não é regra) demandar
uma quantidade menor de índices.

Não é raro a situação onde uma entidade muito grande retorna uma consulta
com um tempo pequeno, e uma exclusão utilizando os mesmos parâmetros
demandam muito tempo para ser realizada em virtude do custo para atualização
nas tabelas de índices associadas.

Todavia, existem situações diferentes, onde a carga transacional não é tão
relevante, mas demanda uma quantidade muito grande de operações de consulta.
Nesses casos, obviamente índices bem planejados vão reduzir em muito o custo
do banco. E índices bem planejados também incluem utilizar os algoritmos
corretos para as classes de operadores corretas...

Enfim... O assunto é vasto, e muito interessante, espero termos
oportunidades de discutirmos com mais propriedade depois.

Um grande abraço a todos!


-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083



2009/8/13 Euler Taveira de Oliveira eu...@timbira.com

 Charly Frankl escreveu:
  Pois quando um registro é
  atualizado (insert/update/delete) os índices também são atualizados.
 
 Vale lembrar que (em uma versão 8.3 ou superior) para o comando UPDATE,
 isso
 nem sempre é verdade. O _HOT_ (Heap Only Tuples) foi introduzido justamente
 para *não* ter que atualizar o índice caso as colunas modificadas não
 estejam
 presentes em índices.


 --
  Euler Taveira de Oliveira
  http://www.timbira.com/
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Assinatura Digital no Banco

2009-09-10 Por tôpico Charly Frankl
Fábio, boa tarde...

Possível é, mas será que vale a pena o custo?

Em se tratando de assinatura digital você tem algumas implementações, por
exemplo, você pode disponibilizar a assinatura como parte integrante do
documento, ou você pode gerar a assinatura em separado e prover um
algoritmo/software que valide o documento com base na assinatura.

E de forma bem simplista, a assinatura digital nada mais é que um hash
gerado a partir do documento e tendo como chave a frase
(assinatura/senha/texto/etc) que o usuário cadastrou. Logo se você tem uma
tupla de valores, tem a frase e um algoritmo, pode facilmente gerar uma
assinatura digital da tupla com base na frase/algoritmo. Ae, você pode
mesclar a tupla, gravar em um campo, enfim... fica dependente agora da tua
imaginação.

Lembrando, que a assinatura digital não vai impedir de o atributo ser
alterado por outra pessoa indevidadmente, mesmo porque esse não é o papel
dela... todavia, vai te dar a segurança de poder afirmar se o registro foi
gravado ou não por um usuário X ou Y.


Espero ter ajudado.


Att,



-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083



2009/9/10 André Pignata andrepign...@gmail.com

 Fabio, para fazer isso eu faço o seguinte, para cada usuário na minha
 tabela de usuário, eu crio o mesmo como usuário do Postgre, logo, qdo que
 ele é autenticado, ao chamar o comando current_user do BD, eu sei exatamente
 quem está logado e utilizo essa informação em triggers que me fazem o log.

 2009/9/10 Fabio Ebner fabio.eb...@dnasolution.com.br

 Pessoal alguem sabe se e capaz eu assinar digitalmente um registro do

 banco???
 Exemplo:

 Tenho na minha empresa 3 funcionarios, cada um vai la e insere via um
 programa desenvolvido por mim um registro no banco, eu quero saber se
 tem como ele assinar aquele determinado registro com a assinatura
 digital dele, ou assinando a informacao ou isso sendo um recurso do
 proprio banco.


 Obrigado

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




 --
 André Luiz Martins Pignata
 Integral Convênios Odontológicos
 Gerente de TI

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Res: Res: Res: Res: Memory (heap)

2009-09-25 Por tôpico Charly Frankl
Bem, acho que o assunto mereça uma thread separada, mas vamos lá.

Marcio, boa tarde!

Com relação as facilidades do Oracle, eu acho maravilhoso, mas não cabe
comparação, pois estamos falando e SGBD... Sistemas (Telas, Relatórios,
E-mails e etc...) são ou deveriam ser desenvolvidos utilizando suas
tecnologias específicas, tanto que a própria Oracle abandonou e nem sequer
presta suporte para os seu maravilhoso Forms/Reports.

Em função disso, muitas empresas deram um tiro no pé (a Oracle foi uma
delas), ao passo que levaram pra o SGBD rotinas e procedimentos que deveriam
ser feitos em outros pontos. Não confunda também, suites que a empresa
fornece, ondem vem embarcado o SGBD com o próprio SGBD... São coisas
distintas.

Agora, com relação a performance, testes, banckmarks, isso tem-se aos
milhares mesmo. Ae você me pergunta, qual o melhor? O melhor é o que atende
a tua necessidade e o que você domina, além claro, da relação custo. Se você
domina extraordinariamente operações com arquivos texto, eles pra você serão
muito superiores a qualquer SGBD. Logo, não julgue de imediato um ou outro
SGBD em função de outro que você já utilizava antes.

Trabalho com Oracle e PostgreSQL, são duas ferramentas extraordinárias, cada
uma com suas características e limitações próprias. Vale portanto, se
aprofundar um pouco mais em suas respectivas arquiteturas, para perceber
onde elas divergem ou convergem, e onde você vai tirar mais ou menos
proveito entre um ou outro.

Bem, finalizando, e com relação as limitações da Pl/PgSQL, existem muitas
sim... algumas facilidades que talvez você tenha em outro SGBD que não vai
ter nela... mas tudo isso contornável utilizando-se outras linguagens...
Essa é a beleza do PG. Se não suporto ou não possuo tudo em um ponto,
criemos mecanismos de extensão para que possamos suprir as deficiências.

Aprofunde-se um pouco na arquitetura do PG, e verá que é uma solução
extraordinária, com suas limitações claro, e se achar que uma limitação é
muito impactante, sugira como melhoria pras próximas versões!

Um grande abraço!



-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083




2009/9/25 MARCIO CASTRO marciomouracas...@yahoo.com.br

 ÊTA!!!

   Colega, no mundo Oracle, é comum termos centenas de milhares de linhas
 escritas em PL/SQL. Esta linguagem é uma das coisas mais legais deste banco.
   Sua funcionalidade não se restringe a fazer apenas SELECT's, mas
 aplicações completas utilizando a mesma. Isto significa TELAS (Forms),
 RELATÓRIOS (Reports), envio de e-mails (DBMS_SMTP), QUEUES (DBMS_AQ) ou
 CUBOS (DBMS_CUBE), e mais uma infinidade de outras coisas utilizando loops.
   Recentemente, a Oracle comprou um ERP (E-Business Suíte) formado por mais
 de 20 milhões de linhas nesta linguagem.
   Os exemplos que foram passados foram formulados devido à problemas de
 performance que eu encontrei após passar um pacote especificamente escrito
 em PL/SQL para PL/pgSQL. Tal pacote é composto de diversas funções e, depois
 de alguns testes, separei do código o que estava demorando mais: um loop e
 uma recursividade.
   Entendeu agora?
   Munha intenção não é comparar nada, mas resolver um problema de
 performance no PL/pgSQL. A diferença foi tão absurda que eu achei que tinha
 um problema na máquina ou na instalação do Post, e então, recorrí à esta
 lista. Entendido que o problema está na PL/pgSQL, e nada pode ser feito, a
 conclusão é óbvia: não vou poder fazer isto nesta linguagem, E ACABOU!

   MAS se o Sr. quiser comparar benchmarks, talvez a saída seja o TPC (
 http://www.tpc.org/). Numa olhada rápida, encontrei Sybase, MySQL, DB2,
 Oracle, EXASOL, SQL Server, ParAccel, Teradata, mas não encontrei nada do
 Post.
   OU o senhor mesmo pode me passar, através desta lista, ou diretamente ao
 meu e-mail, os testes que o senhor julgar significativos, e eu os executarei
 aquí na empresa.


 Atenciosamente,

 Márcio de Figueiredo Moura e Castro


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Res: Res: Res: Res: Res: Memory (heap)

2009-09-25 Por tôpico Charly Frankl
Amigo, acho que não entendeu minha colocação, mas tudo bem...

Não estou defendendo um nem atacando o outro, mas com relação a deter 50% do
mercado, bem, acho um pouco audacioso por parte da Oracle afirmar isso em um
universo onde temos tanta concorrência de qualidade (DB2, Adabas, dentre
outros...)

Forms/Reports != SGBD  ( Oracle Fusion Middleware Application Server ). Hoje
roda sobre WebLogic, com uma implementação completamente diferente. O tiro
foi tão doloroso que a mesma não o usa em seus projetos (talvez mude.. rsss)
!!!

E com relação ao arquivo texto, o que eu queria dizer, é que depende mais do
profissional/equipe que da tecnologia envolvida pra um projeto dar certo.
Logo, se você domina muito bem operações com arquivos texto, talvez você
consiga implementar com mais facilidade uma regra complexa de integridade
relacional que com um SGBD. Ja vi muitos projetos com ferramentas
extraordinárias fracassarem!

Com relação a implementação PL/PGSQL == PL/SQL, não sei até que ponto seja
interessante, mas nada que nao possamos em um futuro criar uma
PL/PGSQL-ORA_EXTEND...  :-D

Mas, dê uma pesquisada sobre as outras PL's como o pessoal sugeriu, no
início pode parecer estranho, mas provavelmente vá se surpreender bastante
com o poder e flexibilidade que esse formato oferece.


[]'s

2009/9/25 MARCIO CASTRO marciomouracas...@yahoo.com.br

 Colega;

 a - recordei-me agora de uma palestra da Oracle, no ano de 1999 - sim, já
 fazem 10 anos - em que arguí um representante da mesma sobre onde eu deveria
 investir em conhecimentos para o meu futuro como Analista de Sistemas, e o
 mesmo prontamente me respondeu: em Java;
 b - não concordo que a Oracle tenha dado um tiro no pé, pois a mesma hoje
 detém quase 50% do mercado, mas cada um com a sua opinião;
 c - por favor, você poderia especificar um site de sua confiança com
 informações de benchmarks do Post?
 d - arquivo-texto é uma coisa, Sistema Gerenciador de Banco de Dados, é
 outra, assim como são necessárias 64 regras para que um banco de dados
 utilize o modelo relacional. Já fui DBA do SQL Server na época do NT (nem dá
 para contar como eu sofrí), e vou ter de aprender o DB2 para breve. Trabalho
 para uma empresa que desenvolve um ERP que deve rodar em qualquer banco.
 Quem escolhe é o cliente;
 e - a melhoria que eu gostaria é óbvia: o PL/pgSQL igualzinho ao
 PL/SQL!!!   :-)


   E finalmente: hoje sou DBA, e há muito não acompanho nada sobre o
 Developer, mas a versão 11g do Forms foi lançada à pouco, no dia primeiro de
 Julho, para ser mais exato. No dia 31/01/2008, a mesma deixou de oferecer o
 suporte extendido, mas para a versão 6i!

   De fato, no site da Oracle, em
 http://www.oracle.com/technology/products/forms/pdf/10g/ToolsSOD.pdf,
 encontramos o seguinte:

 Oracle Forms and Reports
 Oracle has no plan to desupport these products. Furthermore, new version
 of Oracle Forms,
 Oracle Reports will continue to be released as part of Oracle Fusion
 Middleware and Oracle
 Forms 11g and Oracle Reports 11g are components of Oracle Fusion Middleware
 11g.
 In line with our product strategy, future development activities will be
 aimed at smoother
 version-to-version upgrade, integration with features of the platform/
 technology stack and
 product stability.

   Entendido que o Forms agora faz parte do Oracle Fusion Middleware,
 procurei em
 http://www.oracle.com/support/library/brochure/lifetime-support-middleware.pdfmaiores
  informações sobre o suporte, e encontrei, em Oracle Fusion
 Middleware Releases, a informação de que o Oracle Fusion Middleware 11gR1
 (11.1.1.1.0) terá suporte até Junho de 2017.

   Então, colega, onde é que você obteve a informação de que a Oracle
 abandonou e não vai dar mais suporte à esta ferramenta?





 --
 *De:* Charly Frankl carl...@gmail.com
 *Para:* Comunidade PostgreSQL Brasileira 
 pgbr-geral@listas.postgresql.org.br
 *Enviadas:* Sexta-feira, 25 de Setembro de 2009 12:37:51
 *Assunto:* Re: [pgbr-geral] Res: Res: Res: Res: Memory (heap)

 Bem, acho que o assunto mereça uma thread separada, mas vamos lá.

 Marcio, boa tarde!

 Com relação as facilidades do Oracle, eu acho maravilhoso, mas não cabe
 comparação, pois estamos falando e SGBD... Sistemas (Telas, Relatórios,
 E-mails e etc...) são ou deveriam ser desenvolvidos utilizando suas
 tecnologias específicas, tanto que a própria Oracle abandonou e nem sequer
 presta suporte para os seu maravilhoso Forms/Reports.

 Em função disso, muitas empresas deram um tiro no pé (a Oracle foi uma
 delas), ao passo que levaram pra o SGBD rotinas e procedimentos que deveriam
 ser feitos em outros pontos. Não confunda também, suites que a empresa
 fornece, ondem vem embarcado o SGBD com o próprio SGBD... São coisas
 distintas.

 Agora, com relação a performance, testes, banckmarks, isso tem-se aos
 milhares mesmo. Ae você me pergunta, qual o melhor? O melhor é o que atende
 a tua necessidade e o que você domina, além claro, da relação custo. Se você

Re: [pgbr-geral] Aumentar Número de Indices por Tabe la

2009-10-02 Por tôpico Charly Frankl
Senhores, boa noite...

Vou entrar na conversa também.

Com relação a índices, sempre é um assunto polêmico, mas muito interessante,
e de extrema importância no nosso trabalho.
Bem, não conheço a aplicação em questão, logo o que eu falar aqui será com
base em conceitos e boas práticas relacionadas a aplicação dos mesmos.
Concordo com o que o Euler colocou sobre a quantidade excessiva de índices,
uma vez que o SGBD não utiliza mais de um índice por pesquisa são extremos
os casos onde há a necessidade de mais de 5 índices por tabela. Entendam são
raros, e não impossíveis. Existem problemas e situações onde isso não se
aplique, mas lembrem-se, apenas um dos tantos índices será utilizado na
pesquisa. Outro ponto importante, é o índice utilizado... Qual algorítmo?
Quais os tipos envolvidos?

Com relação a atualização, assim como em uma pesquisa, o uso de índice não é
simplório, tendo em vista que o SGBD pode fazer uso de um índice mesmo que o
índice não esteja envolvido diretamente na pesquisa (vejam que aumentamos a
complexidade aqui!) a atualização também não é simplória ao ponto de o SGBD
não tocar em um índice que não esteja envolvido na atualização da
entidade. Isso digo não apenas do PostgreSQL, mas do Oracle e DB2. As
implicações em termos muitos índices são muitas, e o custo de manutenção dos
mesmos devem ser levados em conta sim!

Compreendo que aplicações de BI/DW se utilizam de uma técnica não ortodoxa
de modelagem, e que muitos conceitos referentes a normalização são de certa
forma desprezados em virtude de aumento na performance das pesquisas, até
porque não são bases OLTP com auto indice transacional. Logo são aplicações
não ortodoxas, que se dão ao direito de não terem preocupações com custos e
perdas no momento de atualização. Ainda assim, a grande quantidade de
índices não implica diretamente na melhoria da performance das buscas, pois
se os mesmos não forem bem planejados, podemos ter índices nunca utilizados
ocupando espaço desnecessário, e infringindo uma perda também desnecessária
inclusive no momento da pesquisa, pois o otimizador pode, e eventualmente
vai, perder tempo em desconsiderar aquele índice como um candidato não
eletivo. Lembrem-se, ainda que não utilizado, ele faz parte do dicionário de
dados, o qual é utilizado pelo otimizador no momento de decidir qual índice
eleger para pesquisa.

Bem, finalizando (ainda que querendo falar mais... :-D), podemos perceber
que o tema é complexo, e não simplista... Existem muitos pontos e variáveis
a serem observadas... Todavia, a minha recomendação é, não extrapolem na
utilização de índices, vão infringir uma carga muito grande de trabalho ao
SGBD, e aqui indifere o SGBD. Comecem sempre com implementações
conservadoras, e a medida que o tempo passar e existirem informações,
apliquem as melhorias de tunning e performance necessária. Primem por manter
saudável o SGBD, e o excesso de índice pode comprometer a saúde do mesmo!

Ah, e antes que me esqueça... Senhores, acalmem-se, estamos aqui para nos
ajudar. Não deixemos que a sexta-feira e o cansaço leve para o lado pessoal
nossos debates. Eles são muito construtivos, ainda que não concordemos com
todos os pontos de vista apresentados.

Um grande abraço a todos, e um excelente final de semana!



-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083



2009/10/2 Euler Taveira de Oliveira eu...@timbira.com

 Mozart Hasse escreveu:
  Como assim pelo menos 1+32+1?! Tem certeza que o Postgres ainda é tão
  simplório?! O Oracle e SQL Server por exemplo só tocam num índice se a
  atualização se referir a campos pertencentes a ele.
 O PostgreSQL também (vide HOT) mas como *não* sei a que versão se refere
 preferi afirmar algo conservador...

  Quanto a inserções (em que pelo menos todos os índices *não condicionais*
  são atualizados), obviamente elas serão relativamente mais lentas com
  índices (se você medir com precisão a média em milissegundos), mas isso
  nem de longe pode ser considerado um problema conceitual
 Conceito *não*, mas de organização física.

 Você *não* mostrou essa tal tabela, os índices dela e, o mais importante,
 as
 estatísticas de uso desses índices. Posso estar errado (pois não vi a sua
 estrutura) mas já presenciei vários cenários em que combinei alguns índices
 e
 diminuí consideravelmente o número deles sem prejudicar as consultas que os
 utilizam. Assim, eu consegui aumentar o número de DML/s consideravelmente.

  Se eu quisesse gravar mais rápido do que
  consultar, meteria os dados num arquivo TXT, não num banco de dados.
 Como tu farias integridade referencial em um TXT? Não menospreze anos de
 pesquisa em teoria de SGBDs.

  Já que você acha que conhece jeitos menos errados de modelar uma tabela
  que você nem sabe para que serve, nem quantos registros tem, nem a que
  consultas é submetida, manda lá sua sugestão sobre o que faço para tornar
  mais rápidas as gravações sem tornar imprestáveis as consultas à minha
  tabelinha de 89

Re: [pgbr-geral] Aumentar Número de Indices por Tabe la

2009-10-05 Por tôpico Charly Frankl
Fernando, apenas para não existir erros de interpretação, pois relendo agora
a frase eu mesmo demorei a compreender o que escrevi. Faltou pontuação na
mesma... rss

Com a pontuação adequada ficaria:

Concordo com o que o Euler colocou sobre a quantidade excessiva de índices.
Uma vez que o SGBD não utiliza mais de um índice por pesquisa, são extremos
os casos onde há a necessidade de mais de 5 índices por tabela. 


[]'s

-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083



2009/10/3 Fernando Maia maia...@gmail.com

 Olá pessoal,
 eu achu que essa frase responde minha duvida!
 Concordo com o que o Euler colocou sobre a quantidade excessiva de
 índices, uma vez que o SGBD não utiliza mais de um índice por pesquisa são
 extremos os casos onde há a necessidade de mais de 5 índices por tabela. 

 não é mesmo!


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Aumentar Número de Indices por Tabe la

2009-10-05 Por tôpico Charly Frankl
De fato, nas versões apartir da 8.2 (se nao me engano) o postgresql consegue
simular um indice bitmap em memória, mas como disposto também em [1]:

A condição pode ser dividida em n utilizações separadas de um índice sobre
uma condição where. Depois é verificado o operador. Depois de os resultados
serem recuperados são  juntados usando o operador. Para combinar os índices
compostos, o sistema percorre cada índice necessário e cria um bitmap em
memória, que fornece a localização das tuplas que verificam as condições dos
índices. Os bitmaps são então unidos (tendo em conta a interrogação, usando
ANDs ou ORs) e as tuplas reais são devolvidas. As tuplas são então visitadas
pela ordem física que apresentam, por essa ser a ordem representada pelos
bitmap, o que significa que qualquer ordenação do índice original é perdida,
e que um passo extra de ordenação irá ser necessário no caso da interrogação
incluir uma cláusula ORDER BY. Por esta razão e por ser necessário percorrer
o índice um maior número de vezes, o otimizador em geral opta por utilizar
um índice simples mesmo tendo outros índices disponíveis.


Algumas boas literaturas que podem ser vista sobre o tema são:

SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de Banco de
Dados. Editora Makron Books.
MOLINA, Hector Garcia; ULLMAN, Jeffrey D.; WIDOM, Jennifer. Database Systems
– The complete book. Prentice Hall
NAVATHE; ELMASRI. Sistema de Banco de Dados: Fundamentos e Aplicações.
Editora LTC

[1] http://www.postgresql.org/docs/8.4/static/indexes-bitmap-scans.html


Att,



-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083






2009/10/5 Fabrízio de Royes Mello fabriziome...@gmail.com


 2009/10/5 Euler Taveira de Oliveira eu...@timbira.com

 Como eu disse anteriormente, o planejador pode produzir um plano que
 utiliza
 mais do que um índice por tabela. Por exemplo, em junções com a mesma
 tabela e
  quando a tabela aparece em mais de um nó no plano de execução.


 Tranquilo... isso eu sabia... mas no mesmo nó somente com o bitmapscan
 para utilizar mais de um índice né?


 --
 Fabrízio de Royes Mello
  Blog sobre TI: http://fabriziomello.blogspot.com

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Aumentar Número de Indices por Tabe la

2009-10-05 Por tôpico Charly Frankl
Mozart, boa tarde... Acho que não entendeu bem quando eu usei o termo
apenas um índice por tabela.


 Como pode ver, o otimizador notou, pela distribuição dos dados, que
 compensa
 usar um índice diferente para cada citação da tabela dentro da mesma
 consulta (i1tbcidade e a1tbcidade).


Como você mesmo colocou, o otimizador optou por usar um índice diferente
para *cada citação da tabela* dentro da mesma consulta. Logo, percebe-se
que o otimizador trata a mesma entidade como entidades diferente (c e c1).
Se você observar, ele optou apenas por um índice para cada entidade sendo:
- Index Scan using a1tbcidade on tbcidade c
- Bitmap Heap Scan on tbcidade c2  (cost=2.43..28.09 rows=23 width=16)
 -  Bitmap Index Scan on i1tbcidade
ou seja,
- a1tbcidade para tbcidade c
- i1tbcidade  para tbcidade c2

Note a diferença nos usos.




 Não sei se só eu noto isso, mas a
 maioria das querys com sub-selects ou cláusulas EXISTS que observei na
 minha
 aplicação usam índices diferentes para a mesma tabela.


Segue aqui o mesmo conceito definido anteriormente. Quando você utiliza uma
subconsulta, o otimizador trata de fato como um novo uso para a entidade.
Logo, ele pode eleger um índice diferente na consulta interna (tb1)
diferente do eleito pra consulta externa (tb1-a ).



Logo, no meu caso, ter um monte de índices na mesma tabela compensa sim, e
 muito.


Não creio ser esse o tema do debate, se no teu caso compensa ou não. Mesmo
porque, ninguém aqui alem de você pode julgar isso.


Agora, voltando ao tema de muitos índices por tabela, como exposto
anteriormente pelos colegas Euler e Fabrízio, o PostgreSQL consegue nas
novas implementações simular índices bitmap (com seus custos, mas consegue).
Inclusive no exemplo que enviou podemos observar o PostgreSQL fazendo uso do
recurso, e percebe-se notadamente o que foi exposto na documentação:
Recheck Cond: ((uf)::text = 'AC'::text).


Agora, com relação a expressão Não sei se só eu noto isso..., desculpe-me
se em algum momento meus posts pareceram ser pessoais, muito pelo contrário,
apenas tentei colaborar com o debate, mesmo porque é um tema muito
interessante. E como falei, todos temos o direito de discordar, errar e
acertar dentro dos nossos debates, é isso que torna esta lista construtiva,
os erros e acertos de cada um!



Um grande abraço,


-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Alterar constraint ou update com cascade

2009-10-05 Por tôpico Charly Frankl
Marinho,

Se entendi o teu problema, você quer um UPDATE CASCADE, certo?

Logo, como não tem definido alter constraint, basta remover a antiga e criar
uma nova com a sitaxe definida em [1]:

ALTER TABLE tbl1 ADD CONSTRAINT fk_tbl1_tbl2 FOREIGN KEY (coluna1)
REFERENCES tbl2 ( coluna1 ) ON DELETE casacade ON UPDATE cascade;


[1] http://www.postgresql.org/docs/8.4/static/sql-createtable.html


Att,

-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083



2009/10/5 Marinho Brandao mari...@gmail.com

 Olá Euler,

  Não existe ALTER CONSTRAINT. Como eu disse anteriormente você terá que
  utilizar um bloco de transação contendo ALTER TABLE foo DROP CONSTRAINT e
  ALTER TABLE foo ADD FOREIGN KEY.

 veja o que você disse:

  - dar um UPDATE ... SET ... CASCADE (ou algo semelhante) para
  atualizar os dependentes simultaneamente
 Não existe tal sintaxe.

  - alterar a constraint para ativar o ON UPDATE CASCADE
 
  Sim.   

 nesse caso vou fazer como eu sempre fiz e deletar/atualizar/recriar a
 constraint.

 obrigado :)

 --
 Marinho Brandão (José Mário)
 http://marinhobrandao.com/
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Como trocar diretório dos bancos j á existentes? Problema URGENTE

2009-10-07 Por tôpico Charly Frankl
Acompanhando o pessoal nos chutes, também creio que exista a variável de
ambiente PGDATA já definida em algum ponto (o que não deveria ser problema
pois você seta a mesma no arquivo novamente). De qualquer forma, tenta
inicializar utilizando o pg_ctl diretamente:


postg...@db01:$ pg_ctl -D /sistema/postgresql/data start


Outra coisa, verifique no teu arquivo $PGDATA/postgresql.conf se não existem
referências para o caminho antigo.




Att,


-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083



2009/10/7 Joao Cosme de Oliveira Junior joao.co...@serpro.gov.br


 chutaria o teu  script de inicialização chamando o seu PGDATA antigo!!!
 altere para sua nova localização!

 Em 07/10/2009 às 14:28 horas, pgbr-ge...@listas.postgresql.org.brescreveu:

 Professor Flávio Brito escreveu:
  O /var do meu servidor ficou sem espaço e acabei copiando os arquivos do
  data para um diretório. Troquei o owner dos arquivos e diretório e
  indiquei dentro do /etc/init.d/postgresql o diretório do PGDATA, mas na
  hora de carregar ele me manda uma mensagem dizendo que o diretório
  /var/lib/pgsql não existe (eu troquei o nome) percorri tudo com grep na
  máquina para ver de onde o tal cara é chamado, mas nada. Estou com a
  versão 8.2.6 em um RHE4
 
 Dois chutes: (i) existe uma variável de ambiente PGDATA definida no usuário
 postgres ou (ii) a variável de ambiente PGDATA está definida em
 /etc/sysconfig/pgsql/postgresql.


 --
 Euler Taveira de Oliveira
 http://www.timbira.com/
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


  Esta mensagem do SERVIÇO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO), 
 empresa pública federal regida pelo disposto na Lei Federal nº 5.615, é 
 enviada exclusivamente a seu destinatário e pode conter informações 
 confidenciais, protegidas por sigilo profissional. Sua utilização 
 desautorizada é ilegal e sujeita o infrator às penas da lei. Se você a 
 recebeu indevidamente, queira, por gentileza, reenviá-la ao emitente, 
 esclarecendo o equívoco.

 This message from SERVIÇO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO) -- a 
 government company established under Brazilian law (5.615/70) -- is directed 
 exclusively to its addressee and may contain confidential data, protected 
 under professional secrecy rules. Its unauthorized use is illegal and may 
 subject the transgressor to the law's penalties. If you're not the addressee, 
 please send it back, elucidating the failure.


 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Ordenando por Where in

2009-10-07 Por tôpico Charly Frankl
Pablo, também não consegui entender o problema. Você pode enviar um exemplo
do SQL que você está utilizando?

Att,


-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083




2009/10/7 Pablo Sánchez phack...@gmail.com

 Caros.

 Tenho um problema para resolver, relacionado à uma lib que gera um SQL
 inválido por ter um order by lá no meio.

 A questão é que eu consigo ordenar com 2 consultar, em uma coloco o order
 by, e coloco os ids no where campo in (lista).

 A consulta funciona então, mas como o where in não traz na ordem em que
 está em lista, eu precisava saber se vocês conhecem algum jeito de forçar
 que o banco respeite a ordem dos ids listados em where in. Ex: (129, 23,
 1000, 200) e os itens do resultado vierem nessa ordem.

 Isso tudo só porque atualmente colocaram uma lib velha para caramba, e a
 mesma dá erro, na versão nova corrigiram a lib, e quebraram outras coisas,
 mas a questão é que para colocar a nova, eu teria que reescrever quase 70%
 da aplicação, inviável, então o jeito é resolver com essa solução nada
 elegante citada acima.

 Alguma idéia de como forçar a ordenação pela lista do where in?

 --
 =
 Pablo Santiago Sánchez
 Análise e Desenvolvimento de Sistemas Web
 Zend Certified Engineer #ZEND006757
 phack...@gmail.com
 (61) 9975-0883
 http://www.sanchez.eti.br
 http://www.corephp.com.br
 Quidquid latine dictum sit, altum viditur
 =

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Ordenando por Where in

2009-10-07 Por tôpico Charly Frankl
Uma pergunta para compreender melhor a tua consulta. O atributo l.no_item
seria o individuo pelo qual você precisa ordenar? ou não tem nenhum atributo
dentro desta pesquisa que determine a ordem, mas sim (apenas) a ordem
apresentada no IN ?

Att,


-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083



2009/10/7 Pablo Sánchez phack...@gmail.com

 O problema é ter que construir uma query que ordene os elementos pelo
 resultado de uma outra query.

 Estou usando uma lib numa versão em que ao usar order by na coluna
 descritiva do item dá um crash no paginador.

 Então eu faço uma primeira query, para pegar os ids na ordem que eu
 preciso, e agora preciso fazer uma segunda query que me retorne os itens
 listados na ordem que recebi na primeira listagem.

 O problema é que todas as soluções apresentadas resultaram em uma consulta
 que retorna tal qual está no banco, ou em sintaxe inválida (o order by in,
 por exemplo).

 Query de exemplo. Note que no where in os itens estão fora de ordem, eu
 preciso que venha nessa ordem aparentemente aleatória (mas é o resultado do
 order by o nome do item):

 SELECT l.nu_seq_item_asdf AS l__nu_seq_item_asdf,
l.st_possui_recuperacao AS l__st_possui_recuperacao,
l.nu_ano AS l__nu_ano, l.no_item_abreviado AS l__no_item_abreviado,
l.no_item AS l__no_item,
l2.nu_seq_item_asdf_qwer AS l2__nu_seq_item_asdf_qwer,
l2.vl_aquisicao_qwer AS l2__vl_aquisicao_qwer,
l2.vl_reforma_qwer AS l2__vl_reforma_qwer,
l3.nu_seq_item_asdf_municipio AS l3__nu_seq_item_asdf_municipio,
l3.vl_aquisicao_municipio AS l3__vl_aquisicao_municipio,
l3.vl_reforma_municipio AS l3__vl_reforma_municipio,
l4.co_municipio_qwer AS l4__co_municipio_qwer,
l4.no_municipio AS l4__no_municipio, l4.sg_uf AS l4__sg_uf
   FROM qwerqwer.s_item_asdf l LEFT JOIN qwerqwer.s_item_asdf_qwer l2
ON l.nu_seq_item_asdf = l2.nu_seq_item_asdf
LEFT JOIN qwerqwer.s_item_asdf_municipio l3
ON l.nu_seq_item_asdf = l3.nu_seq_item_asdf
  AND l3.co_municipio_qwer = '520870'
LEFT JOIN qwerqwer.d_municipio l4
ON l3.co_municipio_qwer = l4.co_municipio_qwer
  AND l3.co_municipio_qwer = '520870'
  WHERE l.nu_seq_item_asdf IN
   (207,
206,
204,
205,
288,
289,
199,
198
   )


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Linguagem Procedural

2009-10-07 Por tôpico Charly Frankl
http://www.postgresql.org/docs/8.4/static/xplang.html

Att,


-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083



2009/10/7 Everson Barbosa everson...@gmail.com

 Boa tarde pessoal,

Alguém sabe onde posso encontrar material sobre linguagem procedural no
 postgres?

 Abc

 Everson

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Ter uma tabela com ordem sempre mantida

2009-10-26 Por tôpico Charly Frankl
Rodrigo, boa tarde...

Não entendi bem qual o teu problema. Com relação ao algoritmo para a fila de
prioridades, você já implementou? A performance foi prejudicada na
reorganização dos registros após alteração nos dados? Qual algoritmo/formato
de índice você está utilizando? Já tentou utilizar uma tabela em memória?

De detalhes do problema, pois ficou um pouco vago.

Att,



-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083

Se você tem uma maçã e eu tenho uma maçã e nós trocamos essas maçãs, então
eu e você ainda teremos uma maçã cada. Mas se você tiver uma idéia e eu
tiver uma idéia e nós trocamos idéias, então cada um de nós terá duas
idéias.
  George Bernard Shaw (1856-1950)



2009/10/26 Rodrigo Sperb rodrigosp...@gmail.com

 Olá a todos,

 Eu tenho uma função implementada em PL\PgSQL que itera sempre pegando a
 linha do topo após ordenar por uma certa coluna. Isso se repete em todas
 iterações, e como faço atualizações nessa tabela (é uma priority queue,
 para quem é familiarizado com notação matemática...) no intermédio, não
 possa ter a ordenação pré-estabelecida e sempre pegar o topo simplesmente...
 Preciso reordenar sempre.

 Acontece que isso leva algum tempo e eu preciso melhorar a performance do
 meu algoritmo. Ele é parte da minha tese de mestrado aqui na Holanda. Meu
 orientador me comentou que poderíamos ter as posições pré-definidas e fazer
 atualizações inteligentes, mantendo cada registro na devida posição que
 deve ocupar... Mas ele ainda não me disse nada de como fazer. Queria, então,
 saber se alguém tem alguma idéia de como se pode fazer algo assim?

 Desde já agradeço.

 Rodrigo Sperb

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] [OFF-TOPIC] Porque C ?

2009-12-10 Por tôpico Charly Frankl
Vinicius, bom dia...

Como já foi falado aqui, orientação a objetos não é uma vantagem tão grande
quando estamos falando de sistemas críticos e necessitamos de performance.

Ambas as linguagens tem suas vantagens e desvantagens. A maturidade da
linguagem C, incluindo-se aqui suas especificações, além de maior quantidade
de documentação e uma comunidade de desenvolvedores muito grande e bem ativa
é sem dúvidas um ponto muito forte.

Outro fator, que já foi colocado pelos colegas é o custo e risco de
reescrever (portar) códigos já existentes em C para C++. Mesmo os exemplos
que você utilizou para ilustrar o uso de C++ (Windows, Office) não tem todo
o seu código em C++.

Por fim, outro ponto preponderante é de fato a performance. Como o Pablo já
colocou, toda abstração traz custos. De uma forma bem simplista e digamos
grosseira, um objeto nada mais é que um vetor/struct com ponteiros para
variáveis (atributos) e funções (métodos) os quais tem mais uma abstração
para outra camada de escopo, pois atributos e métodos não podem ser
acessados de fora da classe diretamente (sem a necessidade de criação de um
objeto), salvo quando os mesmos sejam definidos como estáticos. Dessa forma,
tem-se necessidade de mais processamento para tratar tudo isso. Nesse
cenário, imagine milhares de instruções sendo executadas e verá que
performance é sim um ponto muito importante, principalmente em ambientes
críticos. E não cito aqui os micro-dispositivos que possuem pouca capacidade
de hardware.

Bem, fora isso, tem também o fator gosto pessoal. Pessoas que foram
influenciadas de alguma forma por desenvolvedores ou projetos C, certamente
vão preferir a linguagem em detrimento de C++. E o contrário também é
verdadeiro. Se você começar com C++, vai ver com maior destaque as vantagens
desta em detrimento da linguagem C.

Bem, e a título de curiosidade, existe SO implementado em Java (bem, não
totalmente implementado em Java, pois o mesmo possui um nano kernel
escrito em Assembler... rsss) chamado JNode[1].


[1] http://www.jnode.org/


Espero ter contribuído.

Att,

-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083

Se você tem uma maçã e eu tenho uma maçã e nós trocamos essas maçãs, então
eu e você ainda teremos uma maçã cada. Mas se você tiver uma idéia e eu
tiver uma idéia e nós trocamos idéias, então cada um de nós terá duas
idéias.
  George Bernard Shaw (1856-1950)




2009/12/8 Vinicius Santos vinicius.santos.li...@gmail.com

 Boa noite pessoal,

 Minha dúvida não tem muito a ver necessariamente com PostgreSQL.

 O que eu queria saber é porque a maioria dos grandes projetos são
 feitos sempre em C ?. Kernel Linux, PostgreSQL, Gnome, Oracle(que eu
 saiba). e assim vai...

 Não conheço muito C, porém estou estudando C++, e o autor(Deitel),
 apresenta algumas vantagens em relação ao C, como orientação a objetos,
 vector, etc.

 Seria mais questão de gosto escolher entre C, C++, ou até Java para
 desenvolver um SO, ou um SGBD, ou teria alguma razão em específico ?
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Documentação automática (ou q uase) de bando de dados PostgreSQL

2010-01-20 Por tôpico Charly Frankl
O Oracle Data Modeler não é a melhor ferramenta do mercado, mas quebra um
galho pra fazer reversa (inclusive do PostgreSQL), e como é desenvolvido em
Java roda no nosso bom e velho Linux.


Att,

Em 20/01/10, Willian Jhonnes L. dos Santos willianjhon...@yahoo.com.br
escreveu:

  Em 20/01/2010 16:40, Welington R. Braga escreveu:

 Salve todos,

 Estou precisando documentar um bando de dados em PostgreSQL com
 centenas de tabelas e que ninguém sabe quem liga a quem e nem há
 documentação de campos nem nada. Será um trabalho hercúleo e que
 gostaria de automatizar um pouco pra adiantar.

 Alguém sabe um programa - preferivelmente para Linux - que consiga me
 gerar de forma  automática um diagrama ER, UML ou algo do gênero?

 OFFTOPIC
  Se souberem algum que possa fazer o mesmo com bases MySQL será muito
 bem-vindo também
 /OFFTOPIC


 Grato.

Em http://wiki.postgresql.org/wiki/Ferramentas_para_o_PostgreSQL vc
 encontra algumas referências. GPL tem o Power Archtet (
 http://www.sqlpower.ca/page/architect).

 Caso vc queira uma ferramenta mais robusta, o Power Designer da Sybase faz
 bem o papel, dando suporte a quase todos os SGBDs existentes no mercado
 (incluindo o MySQL).

 --

 ---
 Att.:
 Willian Jhonnes L. dos Santos
 Analista/Desenvolvedor Object/Free Pascal
 willianjhon...@yahoo.com.br
 ---
 Seja livre. Use Linux.
 Grupo de Usuários GNU/Linux de São José dos Pinhais
 Linux user number 449753
 ---
 Powered by Slackware Linux 12.2
 Kernel 2.6.27.8-i686-core2
 ---


 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




-- 
Charly Frankl
Engenheiro de Sistemas
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083

Se você tem uma maçã e eu tenho uma maçã e nós trocamos essas maçãs, então
eu e você ainda teremos uma maçã cada. Mas se você tiver uma idéia e eu
tiver uma idéia e nós trocamos idéias, então cada um de nós terá duas
idéias.
   George Bernard Shaw (1856-1950)
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] RES: Qual o melhor Sistema Operacional?

2010-01-21 Por tôpico Charly Frankl
Uso o Elefante com o bom e velho Debian. Até o momento, parceria perfeita!!!
rs


Att,


-- 
Charly Frankl
Engenheiro de Sistemas
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083

Se você tem uma maçã e eu tenho uma maçã e nós trocamos essas maçãs, então
eu e você ainda teremos uma maçã cada. Mas se você tiver uma idéia e eu
tiver uma idéia e nós trocamos idéias, então cada um de nós terá duas
idéias.
   George Bernard Shaw (1856-1950)


  2010/1/21 Marcos André mac.poa...@gmail.com

 Olá Srs.,

   Estou para criar um servidor de banco de dados PostgreSQL e neste momento
 nos veio a seguinte dúvida Qual o melhor Sistema Operacional? e para isto
 estou fazendo um estudo e através da experiencia da comunidade eu preciso
 saber quais as melhores opções para este tópico.


 --
 At.
 Marcos André
 Analista de Sistemas
 Cel.: (11) 9103-4350


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Res: Res: Res: Res: Performance

2010-01-25 Por tôpico Charly Frankl
Senhores, boa tarde...

Muito interessante a questão, mas creio que já foi ponderado o suficiente
para podermos perceber que tanto Oracle, quanto o PostgreSQL, ou DB2, ou
qualquer outro SGBD tem seus pontos fortes e fracos, e devido a isso estarem
em constantes evoluções, aperfeiçoamentos e melhorias.

É sabido também que todo produto tem seus defensores, desde os mais
apaixonados até os menos preocupados. Sem contar o fato de termos clientes
que não vão trocar suas arquiteturas legadas pelo simples fato de elas serem
pagas (software pago é que é bom), e como sempre estiveram assim, vão
permanecer assim até o fim dos tempos. :D

Acho que seria mais construtivo para a lista definirmos parâmetros para
testes, métodos e boas práticas quanto a procedimentos de armazenamento,
pesquisa, modelagem... Ou quem sabe, quando devemos utilizar um índice A
ou B... Quais as diferenças de implementação entre um índice Hash e um de
Árvore-B, Árvore-R, X/Z/W... Ou então, construir com perguntas do tipo: O
SGBD XX tem um recurso interessante que não foi implementado no PostgreSQL,
será que teríamos condições de implementá-lo?... Afinal de contas, somos
profissionais, e se conhecermos tais pormenores certamente ajudaremos muito
na construção deste nosso maravilhoso SGBD.


Bem, é apenas uma opnião...



Att,


-- 
Charly Frankl
Engenheiro de Sistemas
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083

Se você tem uma maçã e eu tenho uma maçã e nós trocamos essas maçãs, então
eu e você ainda teremos uma maçã cada. Mas se você tiver uma idéia e eu
tiver uma idéia e nós trocamos idéias, então cada um de nós terá duas
idéias.
   George Bernard Shaw (1856-1950)
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Instalação

2010-05-12 Por tôpico Charly Frankl
://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




 --
 []'s
 Att.
 Diego

 Os computadores são incrivelmente rápidos, precisos e burros; Os homens
 são incrivelmente lentos, imprecisos e brilhantes; Juntos, seu poder
 ultrapassa os limites da imaginação  - Albert Einstein 


 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




 --
 blog: http://www.midstorm.org/~telles/http://www.midstorm.org/%7Etelles/
 e-mail / jabber: fabio.tel...@gmail.com

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




 --
 []'s
 Att.
 Diego

 Os computadores são incrivelmente rápidos, precisos e burros; Os homens são
 incrivelmente lentos, imprecisos e brilhantes; Juntos, seu poder ultrapassa
 os limites da imaginação  - Albert Einstein 


 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




-- 
Charly Frankl
Engenheiro de Sistemas
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083

Se você tem uma maçã e eu tenho uma maçã e nós trocamos essas maçãs, então
eu e você ainda teremos uma maçã cada. Mas se você tiver uma idéia e eu
tiver uma idéia e nós trocamos idéias, então cada um de nós terá duas
idéias.
  George Bernard Shaw (1856-1950)
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Conexão de aplicativos no Postgre

2010-05-19 Por tôpico Charly Frankl
Evandro,

Com relação as libs, você verificou se elas estão no path (/usr/lib, por
exemplo)?

Caso estejam, você pode utilizar o strace para debugar o teu aplicativo e
ver de onde ele está tentando carregar as libs.

Att,


Em 19 de maio de 2010 12:21, Evandro Siqueira vans...@gmail.com escreveu:

 Aldrey.

 Em Qua, 2010-05-19 às 12:00 -0300, Aldrey Galindo escreveu:
  Evamdrp,
 
 O erro diz user 'postgre', não errou na digitação não?
 

 Obrigado pela ajuda. No Acesso ao Architect o erro era esse mesmo, porem
 no acesso do lazarus apesar do usuário estar correto o erro permanece.
 Ele avusa a ausência das libraries.

 Bem, já tenho 50% do problema resolvido, né? rsrsrs

  Abraços,
  Aldrey Galindo
 
  Em 19 de maio de 2010 11:29, Evandro Siqueira vans...@gmail.com
  escreveu:
  Bom dia Senhores,
 
  Instalei recentemente o postgresql 8.4.4.1 em minha máquina e
  me deparei
  com a seguinte situação:
 
  PGAdmin III - Conecta normal, sem nenhum problema
  Lazarus c/Zeos - Mensagem: none of the dynamic libraries not
  found:
  libpq.so.4, libpq.so
  Architect c/JDBC - Mensagem: Couldn't connect to database:
  FATAL:
  password authentication failed for user postgre
 
  Alguém poderia me dar alguma ajuda? Estou tentando migrar do
  Firebird
  mas estou parado por falta de conexão com meus aplicativos.
 
  Meu ambiente de trabalho é o Linux Ubuntu 10.04, mas tive os
  mesmos
  problemas utilizando o Windows XP
 
  Ficarei muito grato por qualquer dica que possa ajudar a
  solucionar o
  problema.
 
 
  --
  Evandro Siqueira.
  Programador de Sistemas
  Linna L'essentiel Lingerie
  Aracaju/SE
 
  ___
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
 
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 
  ___
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




-- 
Charly Frankl
Engenheiro de Sistemas
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083

Se você tem uma maçã e eu tenho uma maçã e nós trocamos essas maçãs, então
eu e você ainda teremos uma maçã cada. Mas se você tiver uma idéia e eu
tiver uma idéia e nós trocamos idéias, então cada um de nós terá duas
idéias.
  George Bernard Shaw (1856-1950)
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] [pgbr-dev] Participação da co munidade

2010-08-02 Por tôpico Charly Frankl
Senhores, bom dia!

Ao meu ver temos problemas de comunicação, muitas dificuldades de
tomadas de decisão e coisas do gênero, mas não creio que unificando as
listas consigamos corrigir estes problemas. O problema é estrutural, e
como podemos ver pela repercussão desta thread na Geral
continuaremos com os mesmos problemas unificando as listas.

Sei que cada pessoa tem seus motivos, mas vejo que existe um
desinteresse generalizado quando falamos em trabalho para a
comunidade, e isso não será resolvido simplesmente unindo duas, três
ou quatro listas.

Ouço muitas pessoas falando que não participam por desconhecerem a
existência da PGBR-DEV, mas no link[1] onde temos o endereço e
descrição da lista encontramos ambas as listas. Logo, a alegação de
não participar por desconhecimento é no mínimo questionável.

Creio que devamos nos preocupar com a renovação da comunidade, pois o
curso natural é termos mentes importantes para a comunidade indo
embora ao passo que outras venham surgindo. Vejo muitas pessoas
surgindo, mas poucas com interesse em participar e sacrificar um pouco
do seu tempo para auxiliar no crescimento da comunidade.

Com relação a renovação, ou melhor a não renovação, muito do que tem
acontecido é em parte culpa nossa, pois nós não damos ou podamos a
criatividade de muitas pessoas. Outras vezes, simplesmente não
promovemos a participação ou não disseminamos o conhecimento. Algumas
idéias simples poderiam melhorar isso, como por exemplo, termos
eventos voltados ou com maior inclusão da comunidade acadêmica é algo
que sempre traz bons frutos. Outra iniciativa interessante seriam
mini-cursos em parcerias com instituições de superiores de ensino a
baixo custo, onde disponibilizemos instrutor e a instituição a
infraestrutura... Ou seja, existem muitas iniciativas que podemos
tomar, mas que vão nos consumir um pouco do nosso precioso tempo...
vão nos obrigar a abrir mão de uma parcela da noite ou um dia do
convívio de nossa família e coisas do gênero... vão nos exigir um
pouco de compromisso com uma comunidade que vem ajudando muitos aqui a
crescer profissionalmente.

Por fim, deixo um recado ao pessoal da GERAL... Todas as ferramentas
aqui apresentadas pelo Telles é aberta a comunidade... não é que vocês
podem, mas DEVEM participar das discussões que existem na PGBR-DEV,
nos encontros do IRC, que em geral são marcados pela PGBR-DEV...
enfim, envolvam-se com a comunidade!


Esta é minha opinião.


[1] http://www.postgresql.org.br/suporte


Att,

-- 
Charly Batista
Administrador de Banco de Dados
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083

Se você tem uma maçã e eu tenho uma maçã e nós trocamos essas maçãs,
então eu e você ainda teremos uma maçã cada. Mas se você tiver uma
idéia e eu tiver uma idéia e nós trocamos idéias, então cada um de nós
terá duas idéias.
      George Bernard Shaw (1856-1950)




Em 29 de julho de 2010 10:34, Fábio Telles Rodriguez
fabio.tel...@gmail.com escreveu:
 Senhores, para quem não sabe a comunidade brasileira de PostgreSQL dispões
 de vários recursos como:

 Site oficial em http://postgresql.org.br
 Wiki para organização interna em http://wiki.postgresql.org.br
 Wiki para artigos em português
 em http://wiki.postgresql.org/wiki/Portugu%C3%AAs
 Planeta que agrega blogs com artigos sobre Postgres
 em http://planeta.postgresql.org.br/
 3 Listas de discução ativas
 em http://listas.postgresql.org.br/cgi-bin/mailman/listinfo

 PGBR-GERAL (esta aqui) destinada a dúvidas em geral;
 PGBR-DEV para organização da comunidade;
 PGBR-EVENTOS que é um mailing com notícias sobre eventos;

 Depois do último PGCon Brasil, em 2009, notamos uma queda sensível na
 participação da comunidade. Até mesmo o PGCon Brasil 2009 passou em
 branco, com quase nenhuma repercussão, comentários etc. Eu acredito que este
 é um movimento normal em qualquer comunidade, temos ondas de euforia e
 momentos de calmaria. É claro que às vésperas do lançamento da versão 9.0,
 algo realmente empolgante, a comunidade poderia estar em um momento mais
 vibrante. Mas não está.
 Como a maioria das pessoas que está nesta lista não acompanha a lista
 PGBR-DEV  (por falta de interesse ou por não saber da sua existência), eu
 gostaria de pontuar um assunto importante que está rolando lá. A idéia é
 aposentar a lista PGBR-DEV e passar os assuntos discutidos lá para esta
 lista. O impacto no volume de mensagens não deve ser muito grande, com a
 excessão de vésperas de eventos e outras ações organizadas pela comunidade.
 Tempos atrás estas listas já foram unificadas e em um dado momento (quando
 todas as listas foram migradas para o nosso servidor próprio) elas se
 separaram. Eu gostaria de saber a opinião das pessoas sobre da lista
 PGBR-GERAL, que seriam os principais afetados pela mudança, se ela for
 aprovada. Não vou manifestar a minha opinião pessoal aqui por enquanto,
 gostaria de ouvir a opinião das pessoas antes.
 Então, o que vocês acham?
 Atenciosamente,
 Fábio Telles
 --
 blog: http

[pgbr-geral] IV Conferência Brasileira de Postgr eSQL ( portal web )

2010-08-02 Por tôpico Charly Frankl
Pessoal, boa tarde!!!

Já estão fechados local e data para o evento este ano 25 a 27 de
Novembro na Faculdade de Tecnologia da Universidade de Brasília.
Precisamos agora dar continuidade nos trabalhos, e uma tarefa
importante é a manutenção do portal web com as informações para o
evento deste ano.

O responsável por organizar/coordenar esta atualização é o Leonardo
Cezar. Sabendo que temos diversos desenvolvedores na comunidade, venho
aqui na geral solicitar o apoio de vocês para esta tarefa. Aos
colaboradores disponíveis, peço entrem em contato com o Leo e
verifiquem com ele as necessidades.


Att,

-- 
Charly Batista
Administrador de Banco de Dados
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083

Se você tem uma maçã e eu tenho uma maçã e nós trocamos essas maçãs,
então eu e você ainda teremos uma maçã cada. Mas se você tiver uma
idéia e eu tiver uma idéia e nós trocamos idéias, então cada um de nós
terá duas idéias.
      George Bernard Shaw (1856-1950)
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] quantos campos tem uma tabela?

2010-09-24 Por tôpico Charly Frankl
Lembre-se apenas de levar em consideração o nome do Schema, uma vez que
pode-se ter tabelas com o mesmo nome em schemas diferentes.

Att,


Em 24 de setembro de 2010 04:34, Eloi Ribeiro eloi.ribe...@gmail.comescreveu:

 OK, já encontrei a resposta, assim:

 SELECT count(column_name) FROM information_schema.columns WHERE table_name
 ='nome_da_tabela';

 Obrigado,

 Eloi Ribeiro
 GIS Analyst
 39,45º -4,40º
 http://eloiribeiro.wordpress.com


 2010/9/24 Eloi Ribeiro eloi.ribe...@gmail.com

 Olá à lista,

 Existe uma maneira de saber quantos campos tem uma determinada tabela com
 uma consulta SQL?
 Obrigado!
 Saudações,

 Eloi Ribeiro
 GIS Analyst
 39,45º -4,40º
 http://eloiribeiro.wordpress.com



 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




-- 
Charly Batista
Administrador de Banco de Dados
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083

Se você tem uma maçã e eu tenho uma maçã e nós trocamos essas maçãs, então
eu e você ainda teremos uma maçã cada. Mas se você tiver uma idéia e eu
tiver uma idéia e nós trocamos idéias, então cada um de nós terá duas
idéias.
  George Bernard Shaw (1856-1950)
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Tabela Gigante

2010-10-28 Por tôpico Charly Batista
Em outra mensagem você colocou Não é simples demais para uma tabela que
terá milhões de registros ???...

O problema não é simplicidade. Na verdade, simplicidade geralmente é a
melhor prática!

O pessoal aqui falou sobre a tal Chave Natural... mas o que vem a ser uma
chave natural??

Durante o processo de modelagem, identificamos atributos ou combinação de
atributos que identificam cada ocorrência (registro) como único. Cada uma
dessas combinações é conhecida como chave candidata. As chaves candidatas
identificam a ocorrência como única, mas precisamos eleger uma delas como
chave primária.

Vamos pegar como exemplo a provável entidade pessoa_fisica abaixo:

create table pessoa_fisica (
id_pessoa
cpf
nome
pai
mae
... )

Dentre os atributos acima, podemos eleger como candidatas os atributos
id_pessoa e cpf.

Cpf, neste caso é a chamada chave natural, visto que a mesma foi
introduzida pelo usuário e diz respeito ao negócio, já id_pessoa é
uma chave artificial, que é controlada pelo banco e não diz respeito ao
negócio, por isso ser artificial. Mas qual a melhor escolha?

Existem várias vantagens e desvantagens associadas à essa escolha. Muitas
vezes, isso levando-se em conta chaves compostas, chaves artificiais
economizam espaço nos índices e nas colunas quando repassadas a FKs e chave
naturais costumam economizar em JOINs (se repassamos a chave natural para
outras tabelas, talvez não precisemos fazer um JOIN) e principalmente no
fato de conter em si uma informação da tupla, ou seja, ela diz exatamente o
que é e a que serve.

Em todo caso, um dos grandes dilemas entre chaves artificiais e chaves
naturais é a volatilidade de tuas regras de negócio. Se você escolhe uma
chave natural e hoje a combinação dela é única, o que fazer com o seu modelo
de dados se amanhã ela não for unica? Seria muito ruim sair remendando o
modelo.

Logo, na minha humilde visão, não incluiria os termos certo e errado em
se utilizar uma chave natural em detrimento de uma chave artificial, mas
sim, ao teu modelo de negócios o que é melhor? Na maioria dos casos, chaves
naturais são a melhor escolha, mas como maioria não significa todos, você
deve rever teu modelo de negócios e claro, dar uma boa estudada nos
conceitos e processos envolvidos em modelagem de dados.


Att,


-- 
Charly Batista
Administrador de Banco de Dados
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083

Se você tem uma maçã e eu tenho uma maçã e nós trocamos essas maçãs, então
eu e você ainda teremos uma maçã cada. Mas se você tiver uma idéia e eu
tiver uma idéia e nós trocamos idéias, então cada um de nós terá duas
idéias.
  George Bernard Shaw (1856-1950)


Em 28 de outubro de 2010 00:19, Emerson Moretto emore...@gmail.comescreveu:

 260.000 é piada para o PostgreSQL, mesmo para realizar buscas.

 Eu trabalho com um banco com 46 milhões de registros em uma única
 tabela usando PostgreSQL. Não é o banco principal, é de redundância,
 mas ele aguenta muito bem, desde que com índices bem feitos.

 No meu caso:

 - Desnormalizei tudo, usei tudo em uma única tabela e não faço nenhum
 join. (sim, repliquei colunas.. campos vazios... etc)

 - Separei os campos principais de buscas em mais de um campo. E
 coloquei índice para todos esses campos. Ex: nome_completo -
 primeiro_nome, ultimo_nome.

 Então,
 # select * from tabela where primeiro_nome = 'Jose' and ultimo_nome =
 'Silva';
 de certa forma, fica como se fosse um like e ao mesmo tempo com muito
 desempenho.

 - Criei esses índices de nomes usando o próprio valor do campo no
 índice. O PostgreSQL por default faz um hash do valor para melhor uso
 de memória e a comparação.

 Pra fazer isso:
 # create index idx_nome on tabela (nome varchar_pattern_ops);

 Esse varchar_pattern_ops que faz isso acontecer

 Com isso, a consulta:
 # SELECT * FROM tabela WHERE nome LIKE 'JOS%'
 utiliza o índice para fazer o LIKE.

 Dessa forma, a busca será muito rápida (te garanto, no meu caso ficou
 em ~25 ms), mas esse LIKE só vai funcionar para quando a busca iniciar
 com determinado valor. LIKE '%ANA%' ou  LIKE '%ANA' vão funcionar, mas
 fazendo full scan.


 Enfim, tudo que fiz nesse meu case escrevi nesse post:
 http://www.emersonmoretto.com/articles/tag/postgres%209

 * Não sou especialista em PostgreSQL, apenas admiro, defendo e uso
 desde a versão 7.2
 ** Espero ter ajudado e não ter te confundido mais


 att
 Emerson Moretto


 2010/10/27 Listas lis...@arsweb.net.br
 
 
 
  Olá Pessoal,
 
  Sou programador em PHP e utiliso o mysql para fazer meus sistemas,
 
  bom, estou desenvolvendo um sistema on-line de uma lista telefonica e
 resolvi usar o postgresql como banco de dados.
 
  Porém, estou com dúvidas de como fazer a tabela no banco.
 
  A tabela va conter de arrancada 260.000 registros
 
  Vai ser um cadastro normal de usuario, como ( Id, nome, endereço, cep,
 cidade, estado, anuncio, etc )
 
  Gostaria de saber como criar esta tabela, a estrutura, tipo
 auto_increment,  ja

Re: [pgbr-geral] Res: Res: Res: Escolha do mét odo de replicação

2010-10-28 Por tôpico Charly Batista
Thiago, boa noite!

Talvez uma ferramenta de ETL te seja mais apropriado do que uma ferramenta
de replicação. Existem algumas boas ferramentas de ETL disponíveis, e uma
que gosto muito é o Kettle[1]. Com ele você consegue fazer extrações
agendadas, como você deseja. Dá uma olhada, talvez te resolva o problema.

[1] http://kettle.pentaho.com/

Att,

-- 
Charly Batista
Administrador de Banco de Dados
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083

Se você tem uma maçã e eu tenho uma maçã e nós trocamos essas maçãs, então
eu e você ainda teremos uma maçã cada. Mas se você tiver uma idéia e eu
tiver uma idéia e nós trocamos idéias, então cada um de nós terá duas
idéias.
  George Bernard Shaw (1856-1950)


Em 28 de outubro de 2010 16:15, Thiago Godoi thiagogodo...@gmail.comescreveu:

 Obrigado galera , vou pesquisar mais sobre o Slony então, porém ele possui
 essa opção de replicação agendada dos dados?

 Por exemplo eu conseguiria definir para ele replicar os dados gerados
 durante o dia , somente durante a noite?

 Em 28 de outubro de 2010 16:11, Renato Ricci 
 renatoricc...@yahoo.com.brescreveu:

 Realmente, concordo com o JotaComm. Provavelmente o Slony seja ideal para
 sua situação. Com ele você pode escolher quais objetos deseja replicar para
 o banco slave...

 T+


 __

 *Renato R. Ricci*

 *Antes de imprimir, pense em sua responsabilidade e compromisso com o
 Meio Ambiente. O Futuro está em Nossas Mãos!***


 --
 *De:* JotaComm jota.c...@gmail.com

 *Para:* Comunidade PostgreSQL Brasileira 
 pgbr-geral@listas.postgresql.org.br
 *Enviadas:* Quinta-feira, 28 de Outubro de 2010 15:54:44
 *Assunto:* Re: [pgbr-geral] Res: Res: Escolha do método de replicação

 Olá,

 Em 28 de outubro de 2010 15:32, Thiago Godoi 
 thiagogodo...@gmail.comescreveu:

 É realmente já percebi que o hot-standby não é o ideal para a situação.
 Vou tentar especificar melhor o que desejamos fazer.


 Tenho um banco de Desenvolvimento onde eu tenho várias bases em que eu
 estou inserindo novas informações o tempo inteiro.Na máquina de produção a
 ideia é possuir algumas das bases do banco de Desenvolvimento , somente para
 consultas de clientes.


 Hum.. Que tal dar uma olhada no Slony [1]


 Meu problema seria como levar os dados do meu banco de Desenvolvimento
 para o banco de Produção (lembrando que seria somente uma parte do cluster),
 a ideia seria fazer essa atualização todo dia durante a madrugada,  é
 possível algo incremental?


 [1] http://www.slony.info/

 Em 28 de outubro de 2010 14:43, Renato Ricci renatoricc...@yahoo.com.br
  escreveu:

  Thiago, deixa eu ver se entendi.. você tem um ambiente de
 desenvolvimento onde você faz alterações físicas e lógicas no banco de
 dados. O que você quer fazer é aplicar essas alterações em um banco de
 produção? O que você vai querer aplicar no banco de produção? Somente o 
 DDL?
 Ou as informações geradas em desenvolvimento tb? Se você usar um
 hot-standby, você poderá replicar DDL e informações (cópia fiel do banco)
 para produção. Não sei como isso impactaria no seu ambiente ai, pois você
 estará aplicando as alterações no banco de produção mas a aplicação (.exe 
 ou
 alguma aplicação web) ainda ficará antiga. Se for alterações somente em
 Functions, triggers, views, ai de boa..

 Geralmente as empresas costumam usar um banco hot-standby mais para
 contingência, ou seja, caso der algum problema no banco de produção, esse
 banco hot-standby assumiria a brinca. Geralmente tem-se os seguintes
 ambientes:

 Desenvolvimento  Produção (Processo feito manualmente através de
 aplicação de scripts com alterações necessárias)
 Produção (transacional)  hot-standby (automático)

 T+

  __

 *Renato R. Ricci*

 *Antes de imprimir, pense em sua responsabilidade e compromisso com o
 Meio Ambiente. O Futuro está em Nossas Mãos!***


 --
 *De:* Thiago Godoi thiagogodo...@gmail.com
 *Para:* Comunidade PostgreSQL Brasileira 
 pgbr-geral@listas.postgresql.org.br
 *Enviadas:* Quinta-feira, 28 de Outubro de 2010 14:25:49
 *Assunto:* Re: [pgbr-geral] Res: Escolha do método de replicação

 Hum creio que usei a palavra errada então, não seria uma replicação.

 Seria migrar as atualizações para o banco de produção. Porém um detalhe
 que não havia citado antes, o banco de produção será usado somente para
 consultas.

 Em 28 de outubro de 2010 13:40, Renato Ricci 
 renatoricc...@yahoo.com.br escreveu:

 Thiago, creio que o hot-standby não irá funcionar da maneira que você
 deseja, pois um banco neste estado não aceita transações pois ele roda
 somente em read-only. A não ser que você queira usar apenas para consulta.

 Att.,


 __

 *Renato R. Ricci*

 *Antes de imprimir, pense em sua responsabilidade e compromisso com o
 Meio Ambiente. O Futuro está em Nossas Mãos!***


 --
 *De:* Thiago Godoi

Re: [pgbr-geral] Res: Res: Res: Escolha do mét odo de replicação

2010-10-29 Por tôpico Charly Batista
Thiago, boa noite!


Em 29 de outubro de 2010 16:40, Thiago Godoi thiagogodo...@gmail.comescreveu:

 Charly

 Obrigado pela sugestão, mas dei uma pesquisada e é uma ferramenta externa
 ao banco certo? Com isso não estarei perdendo desempenho?


De fato, toda ferramenta externa tende a perder um pouco de desempenho,
mas como você falou em atualizações agendadas imaginei que essa diferença de
performance não fosse ser significativa ao teu modelo de negócio.



 Além disso o kettle possui algum controle para fazer extrações
 incrementais ?


Como é uma ferramenta de ETL, você pode não apenas criar extrações
incrementais, como realizar transformação, adaptação dos dados... Enfim, ela
te possibilita uma grande quantidade de possibilidades.

Agora, é você dar uma estudada e avaliar se de fato se encaixa na solução
que você necessita.

Att,


-- 
Charly Batista
Administrador de Banco de Dados
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083

Se você tem uma maçã e eu tenho uma maçã e nós trocamos essas maçãs, então
eu e você ainda teremos uma maçã cada. Mas se você tiver uma idéia e eu
tiver uma idéia e nós trocamos idéias, então cada um de nós terá duas
idéias.
  George Bernard Shaw (1856-1950)



 Em 29 de outubro de 2010 00:24, Charly Batista carl...@gmail.comescreveu:

 Thiago, boa noite!

 Talvez uma ferramenta de ETL te seja mais apropriado do que uma ferramenta
 de replicação. Existem algumas boas ferramentas de ETL disponíveis, e uma
 que gosto muito é o Kettle[1]. Com ele você consegue fazer extrações
 agendadas, como você deseja. Dá uma olhada, talvez te resolva o problema.

 [1] http://kettle.pentaho.com/

 Att,

 --
 Charly Batista
 Administrador de Banco de Dados
 http://javadevilopers.blogspot.com/
 charlyfra...@gmail.com
 Linux user #391083

 Se você tem uma maçã e eu tenho uma maçã e nós trocamos essas maçãs,
 então eu e você ainda teremos uma maçã cada. Mas se você tiver uma idéia e
 eu tiver uma idéia e nós trocamos idéias, então cada um de nós terá duas
 idéias.
   George Bernard Shaw (1856-1950)


 Em 28 de outubro de 2010 16:15, Thiago Godoi 
 thiagogodo...@gmail.comescreveu:

 Obrigado galera , vou pesquisar mais sobre o Slony então, porém ele possui
 essa opção de replicação agendada dos dados?

 Por exemplo eu conseguiria definir para ele replicar os dados gerados
 durante o dia , somente durante a noite?

 Em 28 de outubro de 2010 16:11, Renato Ricci renatoricc...@yahoo.com.br
  escreveu:

 Realmente, concordo com o JotaComm. Provavelmente o Slony seja ideal para
 sua situação. Com ele você pode escolher quais objetos deseja replicar para
 o banco slave...

 T+


 __

 *Renato R. Ricci*

 *Antes de imprimir, pense em sua responsabilidade e compromisso com o
 Meio Ambiente. O Futuro está em Nossas Mãos!***


 --
 *De:* JotaComm jota.c...@gmail.com

 *Para:* Comunidade PostgreSQL Brasileira 
 pgbr-geral@listas.postgresql.org.br
 *Enviadas:* Quinta-feira, 28 de Outubro de 2010 15:54:44
 *Assunto:* Re: [pgbr-geral] Res: Res: Escolha do método de replicação

 Olá,

 Em 28 de outubro de 2010 15:32, Thiago Godoi 
 thiagogodo...@gmail.comescreveu:

 É realmente já percebi que o hot-standby não é o ideal para a situação.
 Vou tentar especificar melhor o que desejamos fazer.


 Tenho um banco de Desenvolvimento onde eu tenho várias bases em que eu
 estou inserindo novas informações o tempo inteiro.Na máquina de produção a
 ideia é possuir algumas das bases do banco de Desenvolvimento , somente 
 para
 consultas de clientes.


 Hum.. Que tal dar uma olhada no Slony [1]


 Meu problema seria como levar os dados do meu banco de Desenvolvimento
 para o banco de Produção (lembrando que seria somente uma parte do 
 cluster),
 a ideia seria fazer essa atualização todo dia durante a madrugada,  é
 possível algo incremental?


 [1] http://www.slony.info/

 Em 28 de outubro de 2010 14:43, Renato Ricci 
 renatoricc...@yahoo.com.br escreveu:

  Thiago, deixa eu ver se entendi.. você tem um ambiente de
 desenvolvimento onde você faz alterações físicas e lógicas no banco de
 dados. O que você quer fazer é aplicar essas alterações em um banco de
 produção? O que você vai querer aplicar no banco de produção? Somente o 
 DDL?
 Ou as informações geradas em desenvolvimento tb? Se você usar um
 hot-standby, você poderá replicar DDL e informações (cópia fiel do banco)
 para produção. Não sei como isso impactaria no seu ambiente ai, pois você
 estará aplicando as alterações no banco de produção mas a aplicação 
 (.exe ou
 alguma aplicação web) ainda ficará antiga. Se for alterações somente em
 Functions, triggers, views, ai de boa..

 Geralmente as empresas costumam usar um banco hot-standby mais para
 contingência, ou seja, caso der algum problema no banco de produção, esse
 banco hot-standby assumiria a brinca. Geralmente tem-se os seguintes
 ambientes:

 Desenvolvimento  Produção (Processo feito manualmente através de

Re: [pgbr-geral] [ajuda]comando copy arquivo csv externo

2011-08-30 Por tôpico Charly Batista
Rogério, bom dia!

 mas ao tentar o comando com public.RACA retorna erro novamente

 -- Executing query:
 COPY public.RACA FROM '../home/ro/Documentos/base/RACA.csv' CSV HEADER;
 ERRO:  relação public.raca não existe


O nome da tabela aparece pra você em maiúscula? Se sim, tente utilizar
public.RACA, com o nome da entidade entre aspas e em maiúscula.


Att,


-- 
Charly Batista
Administrador de Banco de Dados
charlyfra...@gmail.com
Linux user #391083

Se você tem uma maçã e eu tenho uma maçã e nós trocamos essas maçãs,
então eu e você ainda teremos uma maçã cada. Mas se você tiver uma
idéia e eu tiver uma idéia e nós trocamos idéias, então cada um de nós
terá duas idéias.
      George Bernard Shaw (1856-1950)
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] [OFF-TOPIC] Surpreendente! Join Microsoft to celebrate Debian 8 at LinuxFest Northwest

2015-04-24 Por tôpico Charly Batista
Surpreendente:

http://openness.microsoft.com/blog/2015/04/21/microsoft-debian-8-linuxfest/

Leia até o fim.

Boa sorte.



Charly Batista
Administrador de Banco de Dados
charlyfra...@gmail.com
Linux user #391083


Se você tem uma maçã e eu tenho uma maçã e nós trocamos essas maçãs, então
eu e você ainda teremos uma maçã cada. Mas se você tiver uma idéia e eu
tiver uma idéia e nós trocamos idéias, então cada um de nós terá duas
idéias.
  George Bernard Shaw (1856-1950)
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] [off-topic] Vaga de Emprego

2015-04-08 Por tôpico Charly Batista
Senhores, boa tarde (ou bom dia ai no Brasil :D)

Vou seguir o concelho do amigo Dutra e postar uma vaga aqui na lista. Bem,
nao é exatamente sobre PostgreSQL mas para Sys Admin.

Gentileza, caso tenham perguntas nao enviem email para a lista. Nao enviem
CV para a lista. Enviem para: cha...@letsface.com

Segue:


Letsface (Shanghai) invites you to join an exciting startup focused on
delivering software for events. It helps our customers create amazing
events. Guests love it!

You will be joining a growing team of engineers; develop, maintain and
design our range of products, from simple visual web animation to complex
admin backend and API. The ideal candidate will be self-taught,
self-directed with a strong sense of initiative, be able to propose ideas,
implement them and be able to work under pressure.

We offer:
- a market competitive salary suited to your abilities and skills,
- an international, Silicon Valley-like startup environment with a
wide-range of learning opportunities,
- a deeply passionate creative, sales and account management team with
aggressive targets,
- the opportunity to travel in China and internationally for events

Desired Skills and Experience

Requirements:
- Excellent English writing and reading skills, and good English speaking
skills,
- Be willing to sometimes work extra-hours and work at the site of events
when required,
- 2-3 years experience in system administration
- Bash/Python shell scripting
- Cloud computing (Amazon AWS. Rackspace)
- Linux (system administration CentOS or Debian)
- Nginx, relational databases (especially PostgreSQL)
- Virtualization (KVM)
- networking commands (dig, ping, traceroute, arp, etc)
- network health and services monitoring
- security

Other stuff we like:
- Github (Github Issue tracking, Github API, Github wiki)
- Experience using Jira




Regards,

Charly Batista

-
Shanghai -China
Skype: charlyfrankl
E-mail: charlyfra...@gmail.com
Linkedin: http://www.linkedin.com/in/charlyfrankl
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral