Re: [pgbr-geral] CHAVE COMPOSTA

2008-04-09 Por tôpico Alexsander Rosa
Tenho aqui um ambiente misto com algumas chaves primárias artificiais e
outras naturais. Algumas das artificiais incluem código interno do
produto, código do cliente e número do pedido, todas obtidas através de
sequences.

Como o sistema é parcialmente replicado (ou parcialmente distribuído,
depende do ponto de vista), muitas das chaves primárias são compostas,
acrescentando o campo código da empresa para indicar a filial. Por
exemplo: se um cliente é cadastrado na filial 3 ele pode ficar com o código
1275/3 enquanto um outro, cadastrado na matriz (que é mais antiga e portanto
está com a sequence mais adiantada) fica com o código 45632/1. Da mesma
forma, os pedidos da filial 7 são números baixos como 2349/7 enquanto na
matriz já estão com 6 dígitos, por exemplo 170234/1.

O código do cliente precisou ser uma chave artificial porque há casos de
mais de um cliente com o mesmo CNPJ, em especial órgãos públicos. Por
exemplo, todas as escolas costumam usar o mesmo CNPJ da Secretaria de
Educação. Há casos em que o mesmo CNPJ aparece em 20 clientes diferentes.

Isso traz um problema: apesar de haver uma replicação multi-master
assíncrona entre as filiais e a matriz (desenvolvida internamente, usando
topologia em estrela), as sequences ficam com valores diferentes. Não dá pra
pegar o backup de uma empresa e colocar na outra sem rodar uma rotina para
dar um setval nas sequences colocando o max(chave) em todas elas.

Aproveito para perguntar: alguém tem uma sugestão para melhorar esta
modelagem? Uma das premissas básicas é que uma loja não pode deixar de
vender apenas porque a ADSL caiu (coisa que acontece toda semana). Nossa
sincronização suporta estas falhas de forma transparente, apenas atrasando a
replicação. A solução de conflitos é relativamente simples: em geral o
UPDATE mais antigo vence e há detecção de edição simultânea de uma tupla no
mesmo servidor através de timestamp.

Em 27/03/08, Leandro DUTRA [EMAIL PROTECTED] escreveu:

 2008/3/27, Evandro Ricardo Silvestre [EMAIL PROTECTED]:

  Concordo com relação a chave composta perfeitamente boa, mas não
   concordo que criar uma chave primária quando se pode ter uma chave
   composta vai aumentar tanto assim eventos de E/S e gasto de
   armazenamento.


 Não tem como dizer de antemão, tem de ser caso a caso.  E foi isso que
 questionei, dizer que sempre se cria uma chave artifical simples.
 Pode ser neutro, valer a pena ou penalizar; em caso de ser neutro ou
 penalizar, melhor ficar só com as naturais.




-- 
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] CHAVE COMPOSTA

2008-03-27 Por tôpico Evandro Ricardo Silvestre
Leandro DUTRA wrote:
 2008/3/26, Fernando Brombatti [EMAIL PROTECTED]:
   
 Eu, particularmente, acho que chave primária não pode, jamais, ser composta.
 Chave primária é primária e basta!
 

 Mas Fernando, o que tem a ver chave primária ser simples ou composta?
 Qual o problema?

 Se você tem uma chave composta perfeitamente boa, para que aumentar a
 complexidade do modelo, criar um índice adicional, gastar mais
 armazenamento, cache e eventos de E/S?  Você vai ter de declarar a
 chave composta mesmo também…
   
Concordo com relação a chave composta perfeitamente boa, mas não 
concordo que criar uma chave primária quando se pode ter uma chave 
composta vai aumentar tanto assim eventos de E/S e gasto de 
armazenamento. Por outro lado pode até diminuir, eu tendo uma chave 
primária aumentando a cache e eventos E/S na tabela, vou diminuir o 
mesmo em tabelas relacionadas, pois não precisarei ter todos os da chave 
composta na relação. Se uma tabela tem mais de 1 relacionamento, acho 
que vamos ganhar em E/S ao invés de perder. Perde-se na tabela 
principal, mas ganha nas relações. Trade-off, ai seria o caso de 
balancear onde é melhor perder.

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] CHAVE COMPOSTA

2008-03-27 Por tôpico poste9
E no lance de relacionamento n:m


[tabela1]n:m[tabela2]

[tabela de relacionamento]

a tabela de relacionamento no caso não seria melhor se fosse criada uma
chave primaria composta?

Em 27/03/08, Evandro Ricardo Silvestre [EMAIL PROTECTED]
escreveu:

 Leandro DUTRA wrote:
  2008/3/26, Fernando Brombatti [EMAIL PROTECTED]:
 
  Eu, particularmente, acho que chave primária não pode, jamais, ser
 composta.
  Chave primária é primária e basta!
 
 
  Mas Fernando, o que tem a ver chave primária ser simples ou composta?
  Qual o problema?
 
  Se você tem uma chave composta perfeitamente boa, para que aumentar a
  complexidade do modelo, criar um índice adicional, gastar mais
  armazenamento, cache e eventos de E/S?  Você vai ter de declarar a
  chave composta mesmo também…
 

 Concordo com relação a chave composta perfeitamente boa, mas não
 concordo que criar uma chave primária quando se pode ter uma chave
 composta vai aumentar tanto assim eventos de E/S e gasto de
 armazenamento. Por outro lado pode até diminuir, eu tendo uma chave
 primária aumentando a cache e eventos E/S na tabela, vou diminuir o
 mesmo em tabelas relacionadas, pois não precisarei ter todos os da chave
 composta na relação. Se uma tabela tem mais de 1 relacionamento, acho
 que vamos ganhar em E/S ao invés de perder. Perde-se na tabela
 principal, mas ganha nas relações. Trade-off, ai seria o caso de
 balancear onde é melhor perder.


 Evandro


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




-- 
=
Grupo Comunidade de Comunicação
Rafael Lúcio 29809.099333,
fazendo do seu website uma aplicação em tempo real
ms xsl js(dom) css xhtml php mysql pgsql ajax json smarty drupal
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] CHAVE COMPOSTA

2008-03-27 Por tôpico Joao
conceitualmente esta errado, chave primaria nao quer dizer que não seja 
composta e sim que a partir de um conjunto ou não de atributos  você possa 
identificar um registro. Mas, as vezes é diíficil não conviver com o que você 
disse, seja por motivos de performance.

É a mesma questão de manter algumas vezes os dados desnormalizados.
  - Original Message - 
  From: Fernando Brombatti 
  To: Comunidade PostgreSQL Brasileira 
  Sent: Wednesday, March 26, 2008 8:34 PM
  Subject: Re: [pgbr-geral] CHAVE COMPOSTA


  Eu, particularmente, acho que chave primária não pode, jamais, ser composta. 
Chave primária é primária e basta!!!

  Agora, se preciso que haja uma chave composta (e isso acontece com 
freqüência) utilizo os UNIQUE.

  Testando em uma aplicação não tão grande (tabela com aproximadamente 300.000 
registros) com chave primária composta e não composta notei uma diferença de 
performance quando usava as chaves estrangeiras, além do que o índice para os 
relacionamentos é maior e etc e etc e etc. Assim, a validade da chave composta 
(entenda-se aqui o UNIQUE) se reduz às inclusões e alterações, ou seja, o 
índice maior é acessados menos vezes.

  Pode não ter tanta lógica, mas teve diferença. Agora, cada um modela da forma 
que preferir.




  2008/3/25 Leandro DUTRA [EMAIL PROTECTED]:

2008/3/25, junior Prado [EMAIL PROTECTED]:


 Estou na duvida em usar chave composta ou não. Gostaria de saber qual o
 impacto em usar chave composta em desempenho, indice, etc. Se possível, 
pros
 e contras...


Infelizmente não é tão simples.

Você *não pode deixar de usar chaves compostas*.  Todas as chaves
candidatas devem ser declaradas, seja como chaves primárias ou
alternativas (UNIQUE).  A questão é se a chave primária pode ser
composta ou não.

Eu sou partidário  de que sim, a menos que haja muitas tabelas filhas
críticas para desempenho com quantidades enormes de tuplas.

Procure pelo artigo Primary Keyvil.  Não concordo com todas as
exceções que ele coloca, mas é um começo.

Hora de blogar a respeito.

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




  -- 
  Fernando Brombatti
  email-msn-gtalk-skype:
  [EMAIL PROTECTED]
  work: +55 54 3218-6060
  mobile: +55 54 8112-7250
  Visite www.datamais.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] CHAVE COMPOSTA

2008-03-27 Por tôpico Leandro DUTRA
2008/3/27, Evandro Ricardo Silvestre [EMAIL PROTECTED]:
 Concordo com relação a chave composta perfeitamente boa, mas não
  concordo que criar uma chave primária quando se pode ter uma chave
  composta vai aumentar tanto assim eventos de E/S e gasto de
  armazenamento.

Não tem como dizer de antemão, tem de ser caso a caso.  E foi isso que
questionei, dizer que sempre se cria uma chave artifical simples.
Pode ser neutro, valer a pena ou penalizar; em caso de ser neutro ou
penalizar, melhor ficar só com as naturais.


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

2008-03-26 Por tôpico Leandro DUTRA
2008/3/26, Fernando Brombatti [EMAIL PROTECTED]:
 Eu, particularmente, acho que chave primária não pode, jamais, ser composta.
 Chave primária é primária e basta!

Mas Fernando, o que tem a ver chave primária ser simples ou composta?
Qual o problema?

Se você tem uma chave composta perfeitamente boa, para que aumentar a
complexidade do modelo, criar um índice adicional, gastar mais
armazenamento, cache e eventos de E/S?  Você vai ter de declarar a
chave composta mesmo também…


 Testando em uma aplicação não tão grande (tabela com aproximadamente 300.000
 registros) com chave primária composta e não composta notei uma diferença de
 performance quando usava as chaves estrangeiras, além do que o índice para
 os relacionamentos é maior e etc e etc e etc. Assim, a validade da chave
 composta (entenda-se aqui o UNIQUE) se reduz às inclusões e alterações, ou
 seja, o índice maior é acessados menos vezes.

Mas veja, você fez um teste.  Há muitas situações que diferem, por
exemplo tabelas que não têm filhas.  A sua regra as oneraria.


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

2008-03-25 Por tôpico junior Prado
Galera,

Estou na duvida em usar chave composta ou não. Gostaria de saber qual o
impacto em usar chave composta em desempenho, indice, etc. Se possível, pros
e contras...

-- 
Valter Cezar Prado Junior
Analista TI

Sem saber como fazer ele fez!
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] CHAVE COMPOSTA

2008-03-25 Por tôpico Leandro DUTRA
2008/3/25, junior Prado [EMAIL PROTECTED]:

 Estou na duvida em usar chave composta ou não. Gostaria de saber qual o
 impacto em usar chave composta em desempenho, indice, etc. Se possível, pros
 e contras...

Infelizmente não é tão simples.

Você *não pode deixar de usar chaves compostas*.  Todas as chaves
candidatas devem ser declaradas, seja como chaves primárias ou
alternativas (UNIQUE).  A questão é se a chave primária pode ser
composta ou não.

Eu sou partidário  de que sim, a menos que haja muitas tabelas filhas
críticas para desempenho com quantidades enormes de tuplas.

Procure pelo artigo Primary Keyvil.  Não concordo com todas as
exceções que ele coloca, mas é um começo.

Hora de blogar a respeito.

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