Re: [pgbr-geral] 2 cadastros em uma tabela

2008-05-15 Por tôpico Alexsander Rosa
Obrigado pelos comentários de vocês.

Eu costumo normalizar tudo, e muitas vezes os programadores e outras pessoas
que precisam acessar as bases reclamam que precisam "dar mil voltas" pra
pegar as informações. Eu mesmo já me peguei reclamando dos meus próprios
modelos... hehehe. Por exemplo, costumo ter uma tabela pessoa e outras
tabelas para fornecedores, funcionários, etc. No caso dos endereços, que
citei no email anterior, sempre há quem reclame que pra pegar o endereço de
uma pessoa (em 99,5% dos casos existe apenas um por pessoa) é preciso ir lá
na tabela "endereço".

Ando tão cansado que nem tenho mais saco pra ficar explicando os motivos. É
bom ver alguns comentários reforçando as minhas idéias de vez em quando. :-)

2008/5/15 Leandro DUTRA <[EMAIL PROTECTED]>:

> 2008/5/15 Evandro Ricardo Silvestre <[EMAIL PROTECTED]>:
> > Se eu condicionar a consultar para apenas *clientes* e tiver um indice
> > no campo que indica a categoria da entidade (o campo utilizado para
> > condicionar) vai continuar enchendo a memória com os fornecedores?
>
> Mais um índice, mais escritas, mais leitura, mais uso de cache, mais
> complexidade.
>
> Acredite, normalização foi criada por gente *muito* mais inteligente
> do que eu.  Não é uma simples técnica, é uma teoria de dependência
> funcional muito, muito bem pensada.
>
> Há exceções?  Há, pelo menos com a tecnologia atual.  Mas não passa
> disso, exceções.  Evite otimização precoce, que é a raiz de toda sorte
> de males.
>
> --
> skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra
> +55 (11) 3040 7300 r155 gTalk: xmpp:[EMAIL PROTECTED]<[EMAIL PROTECTED]>
> +55 (11) 9406 7191 ICQ/AIM: aim:GoIM?screenname=61287803
> +55 (11) 5685 2219 MSN: msnim:[EMAIL PROTECTED]
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
Atenciosamente,
Alexsander da Rosa
Linux User #113925
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] 2 cadastros em uma tabela

2008-05-15 Por tôpico Leandro DUTRA
2008/5/15 Evandro Ricardo Silvestre <[EMAIL PROTECTED]>:
> Se eu condicionar a consultar para apenas *clientes* e tiver um indice
> no campo que indica a categoria da entidade (o campo utilizado para
> condicionar) vai continuar enchendo a memória com os fornecedores?

Mais um índice, mais escritas, mais leitura, mais uso de cache, mais
complexidade.

Acredite, normalização foi criada por gente *muito* mais inteligente
do que eu.  Não é uma simples técnica, é uma teoria de dependência
funcional muito, muito bem pensada.

Há exceções?  Há, pelo menos com a tecnologia atual.  Mas não passa
disso, exceções.  Evite otimização precoce, que é a raiz de toda sorte
de males.

-- 
skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3040 7300 r155 gTalk: xmpp:[EMAIL PROTECTED]
+55 (11) 9406 7191 ICQ/AIM: aim:GoIM?screenname=61287803
+55 (11) 5685 2219 MSN: msnim:[EMAIL PROTECTED]
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] 2 cadastros em uma tabela

2008-05-15 Por tôpico Leandro DUTRA
2008/5/15 Mozart Hasse <[EMAIL PROTECTED]>:
>
> Bom, talvez uma segunda opinião te ajude.

Muito obrigado, Her Haße!

Um resumo magistral, com informações que eu desconhecia.

-- 
skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3040 7300 r155 gTalk: xmpp:[EMAIL PROTECTED]
+55 (11) 9406 7191 ICQ/AIM: aim:GoIM?screenname=61287803
+55 (11) 5685 2219 MSN: msnim:[EMAIL PROTECTED]
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] 2 cadastros em uma tabela

2008-05-15 Por tôpico Evandro Ricardo Silvestre
Mozart Hasse wrote:
> Alexsander,
>
> Bom, talvez uma segunda opinião te ajude.
> Comentários abaixo.
>
>   
>> From: "Alexsander Rosa" <[EMAIL PROTECTED]>
>> Subject: Re: [pgbr-geral] 2 cadastros em uma tabela
>> To: "Comunidade PostgreSQL Brasileira"
>>
>> O que é uma tabela "cheia de NULLs"? Ter 3 ou 4 colunas com 90% dos
>> 
> valores
>   
>> NULL numa tabela com 30 colunas é estar "cheio de NULLs"? 
>> 
>
> 90%?! Com certeza! "Cheio" é pouco, eu diria *entupido* de NULLs. Qualquer
> índice sobre um campo assim será quase sempre ignorado pelo otimizador.
> Logo, toda a vez que você quiser consultar só os clientes, o servidor vai
> trazer para a memória os fornecedores também, só para despediçar CPU e
> disco ignorando-os. 
Se eu condicionar a consultar para apenas *clientes* e tiver um indice 
no campo que indica a categoria da entidade (o campo utilizado para 
condicionar) vai continuar enchendo a memória com os fornecedores?

Evandro

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


Re: [pgbr-geral] 2 cadastros em uma tabela

2008-05-15 Por tôpico Mozart Hasse
Alexsander,

Bom, talvez uma segunda opinião te ajude.
Comentários abaixo.

> From: "Alexsander Rosa" <[EMAIL PROTECTED]>
> Subject: Re: [pgbr-geral] 2 cadastros em uma tabela
> To: "Comunidade PostgreSQL Brasileira"
> 
> O que é uma tabela "cheia de NULLs"? Ter 3 ou 4 colunas com 90% dos
valores
> NULL numa tabela com 30 colunas é estar "cheio de NULLs"? 

90%?! Com certeza! "Cheio" é pouco, eu diria *entupido* de NULLs. Qualquer
índice sobre um campo assim será quase sempre ignorado pelo otimizador.
Logo, toda a vez que você quiser consultar só os clientes, o servidor vai
trazer para a memória os fornecedores também, só para despediçar CPU e
disco ignorando-os. Não, um índice condicional não vai ajudar grande coisa,
a não ser que você duplique *todos* os índices sobre os outros campos,
fazendo um só com os clientes e outro só com os fornecedores para cada um
deles. Mesmo que você me convença que isso não complica seu gerenciamento
da base nem detona significativamente seu desempenho para gravações, com
certeza é muito mais complicado do que manter índices simples (sem
condições) sobre cada uma das tabelas "filhas", que com certeza seriam
usados com muito maior frequência que seus equivalentes na tabela unificada.

> O que é melhor,
> desperdiçar alguns bytes ou ter que fazer um monte de JOINs pra fazer
> qualquer consulta simples? 

Contando espaço alocado pelos índices de qualquer aplicação grande, você
vai economizar espaço normalizando corretamente essa tabela ao invés de
misturar tudo num "tabelão" "gordo".

> Nessa mesma linha, cabe outra pergunta: o que é
> uma tabela "muito mais gorda"?

É uma tabela com qualquer uma das seguintes características:
1. Uma tabela com muito mais registros do que os frequentemente acessados por
cada consulta.
2. Uma tabela com muito mais campos do que os frequentemente buscados pelas
consultas mais usadas.
3. Uma tabela com muito mais acessos a disco do que o necessário.
4. Uma tabela com redundâncias por estar mal normalizada.

> Um outro exemplo: o endereço. Se uma "pessoa" (de qualquer tipo) pode ter
> mais de um endereço, seria o caso de criar uma tabela "endereço" separada
> com um relacionamento 1:N de modo de uma pessoa possa ter mais de um
> endereço. O problema é que em 99,5% dos casos (acabei de conferir aqui
pois
> tenho um sistema modelado assim) o cliente tem apenas um endereço
> cadastrado. Será que todo o trabalho necessário para buscar o endereço
> compensa? 

1. Se você precisar tratar decentemente esse relacionamento 1:N, o trabalho
que as tabelas normalizadas dão é menor.
2. Se está pensando no esforço que o servidor terá buscando os dados,
consulte o EXPLAIN nos dois casos e note que para qualquer caso não trivial
é bem mais rápido e eficiente buscar os dados em tabelas normalizadas.

> Não seria mais fácil ter campos de endereço na própria tabela
> "pessoa" e usar a tabela "endereço" apenas para os endereços alternativos?
É
> uma pergunta que já me fizeram várias vezes.

Não, não seria mais fácil nem para o programador, muito menos para o
otimizador.

> > Se for um sistema muito pequeno, dá para administrar.  Mas sempre será
> > muito mais dor de cabeça que o necessário, e mais lento também.

Sim, eis porque não há motivo para trabalhar com dados não normalizados em
tabelas grandes.

> O que é um sistema "muito pequeno"? Com até 100.000 registros na tabela
> "pessoa"?

Bom, com esse volume já dá para medir diferenças de desempenho entre as
duas abordagens. Se tua tabela de pessoas servir para mais do que imprimir
etiquetinhas de mala direta, faça um teste realista e veja a diferença.

Atenciosamente,

Mozart Hasse


___
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 usar Heap Only Tuples (HOT)

2008-05-15 Por tôpico Euler Taveira de Oliveira
Mr J.L. wrote:

>   Dei uma olhada nas novidades do postgresql, mas nao entendi direito algo 
> referente ao "Heap Only Tuples (HOT)".
>   Isso eu teria que implementar na hora de criar um indice, ou coisa 
> parecida? ou implicitamente os indices na versao 8.3 ja tem essa 
> caracteristica?
>   
Você não precisa configurar nada para utilizar o HOT [1]; ele é uma 
implementação interna. O que é o HOT? É uma técnica que elimina 
entradas redundantes no índice e permite o reuso do espaço anteriormente 
ocupado por tuplas atualizadas (UPDATE) ou removidas (DELETE). O que 
isso significa? (i) executar menos o VACUUM (ii) reduzir o espaço 
utilizado. A principal vantagem do HOT vem quando você atualiza um dado 
que não está indexado pois assim você não precisa criar nova entrada no 
índice para aquela tupla. Testes realizados mostraram um ganho 
significativo de performance após a sua implementação [2].

[1] 
http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/heap/README.HOT
[2] 
http://www.kaltenbrunner.cc/blog/index.php?/archives/21-8.3-vs.-8.2-a-simple-benchmark.html


-- 
   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


Re: [pgbr-geral] [OFF] SCHEMA HSQLDB

2008-05-15 Por tôpico Leandro DUTRA
2008/5/15 Euler Taveira de Oliveira <[EMAIL PROTECTED]>:
> Leandro DUTRA wrote:
>
>> Euler, só se você for purista no conceito de 'embutido', sendo que
>> nesse campo não cabe purismo.
>>
> No meu ponto de vista (e de muitos outros pesquisadores da área),
> embutido (aka embedded) está relacionado a arquitetura do SGBD.

Correto!

Mas a questão aqui é sobre _uso_, e isso o PostgreSQL atende muito
bem, melhor que muitos sistemas arquitetonicamente embutidos.

Certo?


-- 
skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3040 7300 r155 gTalk: xmpp:[EMAIL PROTECTED]
+55 (11) 9406 7191 ICQ/AIM: aim:GoIM?screenname=61287803
+55 (11) 5685 2219 MSN: msnim:[EMAIL PROTECTED]
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] como usar Heap Only Tuples (HOT)

2008-05-15 Por tôpico Mr J.L.
Pessoal,
  Dei uma olhada nas novidades do postgresql, mas nao entendi direito algo 
referente ao "Heap Only Tuples (HOT)".
  Isso eu teria que implementar na hora de criar um indice, ou coisa parecida? 
ou implicitamente os indices na versao 8.3 ja tem essa caracteristica?
  
  Caso tenha que implementar algo, como seria essa implementacao?

Obrigado.



  Abra sua conta no Yahoo! Mail, o único sem limite de espaço para 
armazenamento!
http://br.mail.yahoo.com/
___
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] SCHEMA HSQLDB

2008-05-15 Por tôpico Euler Taveira de Oliveira
Leandro DUTRA wrote:

> Euler, só se você for purista no conceito de 'embutido', sendo que
> nesse campo não cabe purismo.
> 
No meu ponto de vista (e de muitos outros pesquisadores da área), 
embutido (aka embedded) está relacionado a arquitetura do SGBD. Embutido 
  quer dizer acoplado, ou seja, os dados e a camada de acesso aos dados 
está acoplada a aplicação (na mesma máquina física ou lógica -- 
compartilhamento). É sabido que o PostgreSQL não trabalha assim. Com uma 
arquitetura mais robusta para desacoplar as camadas e conseguir uma boa 
escalabilidade no acesso concorrente aos dados -- esse é um dos pontos 
fracos da arquitetura embutida.


-- 
   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


Re: [pgbr-geral] RES: Quero sair da lista.......

2008-05-15 Por tôpico Emerson - Senda
Cristiano Martins Ribeiro (Informatica) escreveu:
> Aproveito o assunto para repetir o aviso: já executei o procedimento descrito 
> pelo Sr. Aluisio, várias vezes, em diferentes datas, e não consegui retirar o 
> meu e-mail da lista.
>
> Gostaria de ser retirado também.
>
> Obrigado.
> Cristiano Martins
>  
>
> -Mensagem original-
> De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Em nome de Aluisio Gouveia
> Enviada em: quarta-feira, 14 de maio de 2008 15:59
> Para: Comunidade PostgreSQL Brasileira
> Assunto: Re: [pgbr-geral] Quero sair da lista...
>
> Carlos B. Schmidt escreveu:
>   
>> Não consigo sair da lista do grupo, alguém por favor pode cancelar
>> 
>> 
Clicando no botão /Unsubscribe/, *uma mensagem de confirmação será 
reenviada a você por email*. Esta mensagem terá um link que deverá 
clicar para completar o processo de remoção (você poderá também 
confirmar por email; veja as inscrições na mensagem de confirmação).

OBS: antes de clicar no desinscrever vc tem que efetuar login

--
Esta mensagem foi verificada pelo sistema de Anti-virus da SJB Solados.

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


[pgbr-geral] RES: Quero sair da lista.......

2008-05-15 Por tôpico Cristiano Martins Ribeiro (Informatica)
Aproveito o assunto para repetir o aviso: já executei o procedimento descrito 
pelo Sr. Aluisio, várias vezes, em diferentes datas, e não consegui retirar o 
meu e-mail da lista.

Gostaria de ser retirado também.

Obrigado.
Cristiano Martins
 

-Mensagem original-
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Em nome de Aluisio Gouveia
Enviada em: quarta-feira, 14 de maio de 2008 15:59
Para: Comunidade PostgreSQL Brasileira
Assunto: Re: [pgbr-geral] Quero sair da lista...

Carlos B. Schmidt escreveu:
> Não consigo sair da lista do grupo, alguém por favor pode cancelar
> 
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>   
Acesse 
https://listas.postgresql.org.br/cgi-bin/mailman/options/pgbr-geral, 
preencha o campo email e clique em DESINSCREVER

-- 
Cordialmente;

Aluisio Gouveia

___
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] SCHEMA HSQLDB

2008-05-15 Por tôpico Leandro DUTRA
2008/5/14 Euler Taveira de Oliveira <[EMAIL PROTECTED]>:
> Leandro DUTRA wrote:
>
>> Use o PostgreSQL embutido.
>>
> O PostgreSQL *não* trabalha/trabalhará de modo embutido (ele não é uma
> biblioteca de acesso a dados). Existem outros "SGBDs" tais como SQLite e
>  Apache Derby (aka JavaDB) que trabalham nesse modo, mas *não* o
> PostgreSQL.

Euler, só se você for purista no conceito de 'embutido', sendo que
nesse campo não cabe purismo.

-- 
skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3040 7300 r155 gTalk: xmpp:[EMAIL PROTECTED]
+55 (11) 9406 7191 ICQ/AIM: aim:GoIM?screenname=61287803
+55 (11) 5685 2219 MSN: msnim:[EMAIL PROTECTED]
___
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] SCHEMA HSQLDB

2008-05-15 Por tôpico Leandro DUTRA
2008/5/14 Daniel Gaspary <[EMAIL PROTECTED]>:
> On Wed, May 14, 2008 at 11:20 AM, Leandro DUTRA
> <[EMAIL PROTECTED]> wrote:
>>
>> Use o PostgreSQL embutido.
>
> Já usou na prática de algum projeto o PG assim ?

Sim, toda vez que usei Mac OS X!


> É que até no FAQ do PG é desaconselhado esse tipo de uso.

Não é bem assim:
http://www.postgresql.org/docs/faqs.FAQ.html#item1.13


> Todo caso, se usou seria interessante se pudesse descrever as
> modificações que teve de fazer. Se foi simples ou não. Ambiente (O.S.)
> , performance etc

Não constam problemas de desempenho no Rendezvous.

Não é preciso modificações; basta criar uma base local do usuário no
primeiro uso.

-- 
skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3040 7300 r155 gTalk: xmpp:[EMAIL PROTECTED]
+55 (11) 9406 7191 ICQ/AIM: aim:GoIM?screenname=61287803
+55 (11) 5685 2219 MSN: msnim:[EMAIL PROTECTED]
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral