2011/6/29 Flavio Henrique Araque Gurgel <fha...@gmail.com>:
> Esta thread está ficando agradavelmente construtiva!

Ufa!  Já estava com medo do Teles pedir para eu baixar a bola…


> E olha que, neste caso, nem estou falando d*o* case do milênio :) Nele
> o banco de dados é praticamente um "saco de dados".

E pensar que tem dinheiro público nisso… privatização já!  Se querem
desperdiçar dinheiro, que seja privado… mas, enfim, o setor privado às vezes
me parece estar ainda mais atrasado que o público, no quesito liberdade de
Informática… pelo menos, no caso de empresas estabelecidas ou que não são de
Informática.


> E o SGBD: Cata os dados, valida input, trata strings, verifica
> consistência em todas as tabelas relacionadas, insere cada pedaço do
> formulário em 10 tabelas diferentes, atualiza a tabela de histórico,
> computa sequências, atualiza índices, checa as restrições locais e
> estrangeiras e "comita tudo.

Não parece coisa de clipeiro?  Digo, fazendo proceduralmente o que poderia ser
declarativo?  Ou entendi errado?


> Agora no duro: se a parte toda de validação de input e tratamento de
> strings fosse na aplicação, a aplicação abrisse uma transação com o
> banco e resolvesse sua vida, o processamento de cada passo no pl/pgsql
> poderia muito bem ser dela, distribuindo bem melhor a carga entre seus
> três servidores.

Mas validação não costuma ser conformidade a tipos de dados e integridade
referencial, pelo menos num sistema bem modelado?  Nesse caso, se entendi
direito, o que chamas de validação não tem de ser, em última instância,
garantido pelo SGBD?

        Talvez tenhamos, aí, outra limitação tecnológica.  O único sistema de
desenvolvimento e execução de programas aplicativos realmente integrado ao
SGBD e ao modelo relacional que conheço é o Alphora Dataphor — que, acho,
infelizmente inda não foi portado nem para Mono, nem sequer para PostgreSQL —,
e ele resolve essa questão exportando, automaticamente, as restrições de
integridade da base para a interface, mesmo que cliente servidor; no caso, o
cliente interpreta (ou compila, sei lá) o mesmo código D (D4) que a base, e é
atualizado automaticamente quando a base muda.


> Vamos então nomear melhor os bois: a regra tem que estar no SGBD sim,
> ok. Restrições, regras e etc. Mas o processamento das informações
> _antes_ de chegar no SGBD, isso não deveria estar com ele. E, neste
> caso, está.

Perfeito.


> O agora Microsoft Skype tem um excelente caso de sucesso justamente
> separando tudo: chamada remota de função com o plproxy é um sucesso.

Sim, mas é um caso bem específico, de quase perversão da base para
escalabilidade extrema.


> E, juro, mandei estudo disso para o cliente. Era só modificar 70
> funções em pl/pgsql e a aplicação toda, mas ia ficar "da hora". O
> custo foi proibitivo e ameaçaram trocar pelo RAC se fossem gastar a
> grana toda :P

De fato, uma das vantagens teóricas do modelo relacional que perdemos por
causa das limitações do SQL, entre outros fatores, é não precisar alterar a
aplicação por mudança no modelo físico…


>> Pois é, mas se considerarmos que todas as regras de negócios devem ser
>> implementadas como restrições, de preferência declarativas, fica 
>> contraditório
>> ter isso fora da base, não?  Ou minha lógica falhou nalgum ponto que não
>> alcancei?
>
> Como falei acima, tô contigo na questão regra de negócio. O problema é
> o processamento do negócio. IMHO, deve estar fora do SGBD.

Pode me esclarecer o que consideras ‘processamento do negócio’ em
contraposição a ‘regra de negócio’?  Talvez eu não tenha entendido direito.


> PostgreSQL é a melhor implementação da ISO, reconhecido e utilizado
> academicamente por isso.

Concordo, só não lembro se já passamos a conformidade do DB2 — que obviamente
não serve para a Academia.


> E olha que a comunidade não tem dinheiro pra ficar comprando norma.

:-)


> Aliás, norma, do jeito como é no nosso mundo, na minha opinião, é só
> um jeito de ganhar dinheiro com patent war.

Concordo — gênero, número & grau.  E caso.  Não contigo, com a gramática.


> Existem sim. Os integrantes dessas equipes se chamam nerds. E eles
> estão em alta no mercado de trabalho e até na vida afetiva.

Não posso reclamar no afetivo, mas no mercado de trabalho acho que não fui
/nerd/ suficiente, virei burocrata.


> Claro que tem que ter um balanço: nerdice versus praticidade.
> Não acho que o mundo deva ser 100% nerd pra fazer as coisas em TI.
> Ninguém ganharia dinheiro. Eu proponho um balanço: bem feito na
> medida, tem que ser bem feito mas tem que ser prático ou não vai pra
> frente.

Creio que, se todos fizessem bem feito, haveria inda mais dinheiro, que a
demanda reprimida nunca cessa de crescer.


> Vou te contar algo que vai te deixar bem chateado. A maioria das
> aplicações Java EE usando Hibernate, normalmente, são independentes de
> SGBD. Tendo o driver JDBC correto, elas falam o "dialeto" adequado.

Eu sei, mas a que custo?  Esse é o ponto.  É sempre o uso dum mínimo
denominador comum, por exemplo excluindo absolutamente o uso de tipos de dados
específicos (mais uma vez, esclarecendo, abstratos, definidos pelo usuário &
coisa & tal).


> Mas aí cai na discussão do ORM de novo e tal...

Na verdade, não especificamente.  Digo, não tem nada a ver essencialmente com
o famigerado mapeamento objeto‐SQL, mas com a tentativa de abstrair algo que
já é relativamente abstrato (um modelo quase‐relacional, expresso mais ou
menos declarativamente em SQL) nalgo menos abstrato (programação procedural,
que essa oposição entre objeto e procedural não me convenceu ainda).


> Então, onde é que estamos errando: o Hibernate é tão ruim assim?

Também.


> será que as implementações de bancos de dados é que são completamente
> confusas?

'' IS NULL.  DATE == DATETIME.  CQD.


> Ou as duas alternativas?

Claro.


> Porque é tão difícil levar para o mundo dos objetos o modelo relacional

Absolutamente falso.  Leia o Terceiro manifesto.  O modelo relacional dispensa
qualquer mapeamento, desde que ele seja entendido corretamente.  Recapitulando
outras e longas discussões, o problema com ORM é que, primeiro, SQL não é
relacional e, segundo, o correto é mapear objeto a tipo, não a relação
(tabela, em SQL).


> o modelo objeto-relacional do PostgreSQL?

A última vez que vi, os ‘objetos’ do PostgreSQL só serviam para gambiarrar
partições, todos os outros usos eram contraproducentes e (ou) redundantes.


> Não chega a ser uma antítese, mas é um dificultador enorme.
> Como tudo pode ser reescrito, então, é possível, com muito esforço e
> dinheiro, fazer uma aplicação escalar. E aqui a Oracle e IBM tem posto
> muito muito dinheiro, que a comunidade PostgreSQL está esforçada em
> atingir com os recursos que tem.

Tenho uma tese: se considerar o projeto total — desde requisitos, custo de
saída, qualidade &c —, já atingimos, pelo menos desde a 8.4.  O problema, a
meu ver, é meramente a inércia.

        Corolário, exercício proposto: não usar o PostgreSQL no setor público,
a partir da versão nove, é inconstitucional.


> Esta discussão dá uma bela palestra!

Se me convenceres, proponho uma para o PgBr.  Mas tem de me explicar qual
seria, que estou mais que devagar…


> Sim, e é aí que alguns de nós tem sobrevivido com consultoria:
> entendendo o contexto, conjunto da obra.

Pena que não tive competência para me estabelecer nessa…


> Aguardo sequência sua!

Aviso: já gastei tempo demais escrevendo hoje; agora, só amanhã… o que ficou
engraçado de dizer, mas espero que tenhais entendido.


-- 
Skype:leandro.gfc.dutra?chat           Yahoo!: ymsgr:sendIM?lgcdutra
+55 (61) 3546 7191             Google Talk: xmpp:leand...@jabber.org
+55 (11) 9406 7191                 ICQ: AIM:GoIM?screenname=61287803
sip:leand...@iptel.org  MSNIM:chat?contact=lean...@dutra.fastmail.fm
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a