[Cascavel-pm] Bases de Dados[off-topic]
Luis Motta Campos
luismottacampos em yahoo.co.uk
Terça Março 27 02:52:12 PDT 2007
On Mar 27, 2007, at 3:18 AM, Nilson Santos Figueiredo Junior wrote:
> On 3/26/07, André Garcia Carneiro
> <andre.garcia.carneir em terra.com.br> wrote:
>> Não consigo imaginar algo assim tão 'descartável', que realmente
>> necessite de um SGBD. Para mim performance não
>> é desculpa para ter inconsistências nos dados. No final a lei de
>> 'Murphy' sempre acaba ferrando a gente. :D
>
> Não é que seja algo completamente descartável. É algo que se *por
> acaso* for perdido, não trará tanto prejuízo assim.
>
> Só que o *por acaso* não significa que vai acontecer. Se o seu
> programa nunca deletar de uma tabela sem antes verificar se existem
> dados que referenciam a outra tabela, você nunca vai nem disparar a
> constraint de foreign key.
Você nunca trabalhou com programadores trainees, trabalhou?
Aqui na minha empresa não tem um trainee sequer. Mas tem uns caras
que programaram Java a vida inteira e agora começaram a programar
Perl... e, acredita, eles não tem cérebro. Merda é o sobrenome de
algum deles, certamente. Eu não consigo saber por que ainda não tenho
tanto holandês assim. Mas falta de cuidado e desleixo com a
programação são comuns demais aqui.
A empresa está tentando mudar isso, e a minha contratação – e a de
mais duas pessoas com habilidades parecidas – é um movimento neste
sentido. Claro, isso não vai ajudar nada se a gente não terminar de
corrigir os problemas e não "cristianizar" os bárbaros que continuam
por aqui...
Eu tenho experiência que 90% dos programadores são vomitadores de
código, pouco mais do que compiladores de especificações. Eles não
usam o cérebro que têm para criticar a forma como as coisas são
feitas, e nem se importam em construir a melhor solução possível,
dentro dos parâmetros existentes.
> A idéia de constraints é ter uma camada a mais de segurança - o que é
> bastante útil. Mas não é imprescindível. Você pode ter um banco de
> dados perfeitamente coerente e coeso sem ter nenhum tipo de
> relacionamento definido no banco de dados, desde que sua aplicação se
> comporte corretamente.
Claro. Desde que você possa supliciar os desenvolvedores que
cometem erros com chibatadas, dama-de-ferro, e outros métodos de
"descontração" semelhantes. ;-)
> Porém, bugs podem acontecer. Em vários casos, uma ou outra perda
> ocasional é algo crucial. Em outros casos não. Pense em um site como o
> orkut, por exemplo. Se uma pessoa perder um dos seus recados não vai
> ser o fim do mundo.
Eu trabalho num sistema de faturamento.
Todas as minhas tabelas, quer diretamente, quer com um ou – no
máximo – dois níveis de indireção, representam dinheiro para a
empresa, quer em faturáveis, quer em comissões e dividendos. O que
você acha que a gente deveria fazer com um pretenso engenheiro de
software que escolhe usar MySQL sem transações ou constraints FK para
uma aplicação deste tipo?
> Bom, eu não tenho a menor idéia de como ele se comporta em uma tabela
> muito grande.
Engraçado, eu não tenho tabelas pequenas em que testar isso... ;-)
> Claro que se por acaso já existirem relacionamentos não coerentes na
> sua tabela MyISAM, vai dar todo tipo de problema na sua tabela InnoDB
> se você simplesmente der um ALTER TABLE já que os dados serão copiados
> possivelmente sem verificação (acho que tem um SET FOREIGN_KEY_CHECK=0
> implícito). Por via das dúvidas, sempre tenha uma backup.
Eu não vou me arriscar sem ter um programa esperto o bastante para
conferir os relacionamentos da minha base de dados e determinar se eu
tenho um conjunto de dados consistente ou não. Eu vou propor a
migração, e vamos ver o que o pessoal aqui diz. Se eles determinarem
que isso é interessante, vou ter eventualmente chance de construir um
programa para conferir a consistência da minha base de dados.
Mais sobre isso mais tarde, quando eu tiver isso encaminhado para
o pessoal daqui.
Obrigado todo mundo pelas considerações!
Putamplexos!
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}
Mais detalhes sobre a lista de discussão Cascavel-pm