Em 13-10-2011 15:44, Guimarães Faria Corcete DUTRA, Leandro escreveu:
> 2011/10/13 Shander Lyrio<[email protected]>:
>>         O que seria chave natural para um cadastro de clientes?? cpf se for
>> física ou cnpj se for jurídica? existe alguma melhor? e quando a esposa
>> e o marido usam o mesmo cpf ou cara é de fora do Brasil e seu documento
>> chama-se passaporte? e quando várias empresas usarem o mesmo cnpj como é
>> o caso de um colega do sul que presta serviço à escolas que se não me
>> engano tem o mesmo cnpj? Isso já foi discutido aqui na lista diversas vezes.
>
> Sim, e a conclusão sempre foi a mesma: em última instância, a chave
> natural pode vir a ser a tabela toda, excluídos atributos artificiais.
>   Se nem isso identificar, então a base de dados será inconsistente.

        Certo, num cadastro de clientes deveríamos colocar todos os campos como 
chave primária. É esta sua opinião? Porque se for, ela contraria as suas 
colocações anteriores de que se a chave fosse natural estaria em 
memória, seria mais rápido fazer consultas, etc, etc, etc..

>>         Estou quase convencido que não existe uma chave natural perfeita para
>> este simples cadastro de clientes, que tal um sequenciamento genético?
>> Hum não funcionaria em empresas!!! Sequenciamento genético com os
>> donos?? Aeeee!!! E quando a empresa fosse S/A?? Poxa!!!
>
> Quem perde a calma perde a razão.

        Não perdi a calma não, eu estou escrevendo este e-mail até rindo. Acho 
engraçado você defender tanto a teoria quando não consegue pela teoria 
se justificar com um fato real simples como esse.

>>         Você já parou para pensar que quando algo vai para o cache do
>> PostGreSql, a página de dados toda vai para o cache??
>
> Por favor, o nome do sistema é PostgreSQL ou Postgres.

        Você vive de teoria de banco de dados, um monte de falácia que quando 
confrontada com a realidade, não consegue se sustentar. Você sequer 
conseguiu explicar como ter uma chave natural fiável num simples 
cadastro de clientes, e tenta mudar o assunto chamando atenção para a 
forma que eu coloco a caixa alta ou baixa no meu texto?

>> não são
>> simplesmente os dados, mas toda a página, com todos os campos. Ela pode
>> inclusive estar cheia de buracos de registros já apagados e atualizados
>> que ainda não foram recuperados com um vacuum, um campo a mais indo para
>> o cache vai impactar um pentelhésimo de segundo ou nada. Se estivermos
>> falando do que está definido no effective_cache_size, o assunto é ainda
>> mais complexo, porque apenas os campos selecionados vão para esta área
>> da memória para as agregação, join, e etc.
>
> E daí?

        E daí que seu argumento de cache sujo por causa de uma chave artificial 
cai por terra, porque ele é muito mais do que sujo, antes mesmo de a 
chave artificial existir. Ou seja, o fato de a chave artificial sujar o 
cache é absolutamente irrelevante.

>> Pessoalmente acho que o
>> melhor custo/benefício é trabalhar com o cache da aplicação, ele bem
>> administrado vai reduzir drasticamente a quantidade de consultas
>> enviadas para o banco de dados.
>
> O seu achômetro pessoal vai contra a experiência geral da humanidade.
> O cache da aplicação tem seu lugar, mas ele não está tão próximo do
> disco quanto o da base.

        Você *acha* que a experiência geral da humanidade é esta. Eu estou 
falando de custo/benefício e não qual cache é melhor. O que você pode 
fazer de efetivo para melhorar o desempenho da aplicação com relação ao 
cache do banco de dados?? Nada ou bem próximo disso!! Aumentar o cache 
pode ser feito com ou sem ORM, então nem conta. Trabalhando em um cache 
de aplicação eu posso ser muito mais efetivo porque vou criar um ganho 
real para a aplicação e alivar a quantidade de consultas ao banco de 
dados, independente do ganho que o cache de banco de dados já me 
proporciona.

        Entendeu agora?? custo/benefício. Com relação ao cache de banco nada 
pode ser feito senão aumentar ou diminuir ele, na aplicação muito pode 
ser feito, por isso insisto no tema. Trabalhar junto! Desenvolvimento + 
Banco de dados para o sucesso do conjunto!!

> E, para isso, quem tem a visão geral dos dados é o AD, que pode ou não
> ser o DBA.

        Suas respostas estão sendo dadas como DBA ou como AD? De qualquer forma 
acredito que você esteja vendo a situação apenas de um ângulo.

>> Se eu
>> economizo várias horas de programação da equipe eu tenho mais condições
>> de barganhar um sistema de discos melhor, mais memória, mais processador.
>
> O que não adianta nada quando a aplicação não escala e a base é inconsistente.

        Na prática a teoria é outra. Os bancos de dados mais escaláveis não tem 
nada de consistentes, nada de primary keys ou foreign keys, restrição de 
campos, unique, rigidez de estrutura das tabelas, etc. Vide vários noSql 
que estão por aí ganhando terreno onde escalabilidade é o fator 
importante. Na prática, um certo nível de inconsistência desde que 
controlado é facilmente absorvido.

>>         Sei que alguns colegas respondem como se fossem unicamente DBA's a
>> conversar nesta lista, mas não são, tem caras, onde eu me encaixo, que
>> estão apenas tentando tornar o gap que existe entre banco de dados e
>> aplicação um pouquinho menor.
>
> E esses caras fariam bem em tentar aprender um pouco em vez de sempre
> reagir emocionalmente.

        Não estou emocional apesar de você insistir muito neste assunto. 
Acontece que suas respostas são bonitas teoricamente mas a maioria delas 
não se aplica à prática. Eu estou mostrando isto com diversos argumentos 
e acho que você não está gostando. Na falta do que responder, diz que eu 
estou sendo emocional.

--
Shander Lyrio
http://about.me/shander

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a