[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