[Cascavel-pm] Como verificar se um registro já existe antes de inserir no banco? - RESOLVIDO

Luis Motta Campos luismottacampos em yahoo.co.uk
Quarta Outubro 25 01:33:15 PDT 2006


Nilson Santos Figueiredo Junior wrote:
> On 10/24/06, Luis Motta Campos <luismottacampos em yahoo.co.uk> wrote:
>>   Você precisa repensar o tamanho da sua base de dados.
>>   Quero realmente ver quem tem estrutura para suportar transações em
>> DDLs com tabelas com mais de 10^9 registros.
> 
> Na verdade, isso tudo não tem muito a ver com a quantidade de
> registros e sim como as coisas foram estruturadas internamente pelos
> implementadores do RDBMS. A pior das hipóteses, seria um MODIFY TABLE
> que, possivelmente, seria equivalente a uma transação que faz UPDATE
> em todas as linhas daquela tabela. Mesmo assim, provavelmente deve ser
> possível de não ser assim.

  Se você está dizendo que eles suportam transações, então deve ser
possível fazer ROLLBACK de um DROP TABLE, por exemplo.

  Experimenta calcular a quantidade de espaço necessária para os
ROLLBACK SEGMENTS para conter uma tabela com 10^9 registros de 512B
cada. Isto pode ser até factível, mas tem um problema de ordem prática
muito grande: pouca gente pode dispor de 4,5TB de RAM para fazer uma
operação deste tamanho. E isto vai levar HORAS.

> No caso do MSSQL 2000 realmente era complicado o caso de se modificar
> uma tabela porque ele não modificava tabelas de verdade, ele dropava e
> criava uma outra, uma operação O(n), lenta para grandes conjuntos de
> dados. Mas mesmo assim ele conseguia fazer dentro de uma transação, só
> demorava.

  É o que eu expliquei acima.
  Agora, pensa: os caras implementaram um /feature/ inútil como este,
possivelmente introduzindo novos bugs (novo código == novos bugs) e
aumentando a quantidade de recursos necessários para o sistema, sem
pensar na praticidade disto, para quê?

  Minha opinião: a Microsoft ainda acha que o mundo da computação pode
ser operado por pessoal não técnico. Mas agora eles estão implementando
coisas para servidores. Vamos ver quanto tempo mais leva para alguém
entender o problema e os processos começarem a surgir... ;-)

  Espero que a Oracle, a Sybase, a IBM e as open-source (MySQL,
Postgres, etc) nunca enveredem por este caminho.

  Putamplexos!
-- 
Luis Motta Campos
Senior System Engineer at Segula.FR
Hobbyist Cooker and Photograph


Mais detalhes sobre a lista de discussão Cascavel-pm