[firebase-br] Verificar erros no banco de dados

Sandro Souza escovadordebits em gmail.com
Seg Abr 13 13:27:44 -03 2020


Bom dia/tarde/noite pessoal.

Em qui., 9 de abr. de 2020 às 17:46, Carlos H. Cantu <listas em warmboot.com.br>
escreveu:

> SS> Tem certeza que conseguiu restaurar no FB 3.0 um backup feito por um
> FB 2.5?
> SS> Quando eu tentei fazer isso, fiquei mega surpreso ao ver uma mensagem
> de
> SS> erro informando que o FB 3.0 não suportava o formato daquele backup
> feito
> SS> pelo 2.5.
>
> Você deve ter feito alguma coisa errada, pois a única forma de migrar
> uma base de versões anteriores pro 3.0 é fazendo um backup no 2.x e
> restaurante no 3.0. Já fiz inúmeras vezes, e sempre funcionou.
>
> Talvez sua base 2.5 estivesse com corrupção lógica, possivelmente
> devido a manipulação direta nas tabelas de sistema, coisa que não é
> mais permitida no FB 3.
>

Mestre Cantu, você estava certo mesmo.
Repeti a tentativa de restaurar um backup feito no FB 2.5 no FB 3.0 e
realmente funcionou.
Com certeza eu pisei na bola em algum ponto.


>
> SS> Quando eu comecei a verificar isso, notei que no FB 3.0, o fato de você
> SS> informar que uma coluna é obrigatória (NOT NULL) automaticamente cria
> uma
> SS> CONSTRAINT de NOT NULL para aquela coluna, o que não existia antes do
> FB
> SS> 3.0, e o nome que o FB 3.0 estava criando para essas novas constraints
> (que
> SS> não existiam) estava conflitando com os nomes de outras constraints
> que iam
> SS> ser criadas mais à frente dentro do mesmo script.
>
> Você usou o que pra extrair o script? Há uma chance que o script
> criado pela "ferramenta" que você usou estivesse com problemas ou fora
> do padrão.
>
> Eu extraí o script do meu ERP (FB 2.5), contendo dezenas de tabelas,
> procedures, triggers, etc. e rodou sem problemas no FB 3.
>
>
Faz um bom tempo que fiz um programa em PHP para acessar uma base de dados
e gerar 3 scripts, que juntos, recriam a mesma base de dados por completo.
O primeiro script cria todas as tabelas e visões, mas sem as
regras/constraints ainda.
O segundo script contém apenas os INSERTs de todos os dados da base de
dados.
O terceiro script cria todas as regras/constraints, índices,
gatilhos/triggers, stored procedures.
Já uso isso a alguns anos, então com certeza, essa etapa está funcionando
tranquilamente.


>
> SS> Mestre Cantu, por favor corrija-me se eu estiver falando besteira, mas
> que
> SS> eu saiba, até o FB 2.5, ele era feito em C puro, sem orientação a
> objetos,
> SS> e o FB 3.0 foi reescrito em C++, e como é C++, tem suporte a
> orientação a
> SS> objetos, inclusive contando com um objeto específico para funcionar
> como
> SS> string (a classe std::string).
>
> O único código em C puro era do InterBase 6. Desde a versão 1.0 do FB,
> o uso de C++ vem aumentando cada vez mais. O FB 2.5 já tem muito C++
> no código.
>
> Talvez a sua confusão seja porque o FB 3 introduziu uma API totalmente
> orientada a objetos usando C++
>
> PS: O FB 4 não acessa BDs com ODS menor que 12. Isso foi necessário
> devido a quantidade de alterações feitas na engine da versão 3. Para
> menter uma retrocompatibilidade com ODS anteriores seria um trabalho
> monstruoso.
>

Tranquilo mestre, só continuo com uma senhora pulga atrás da orelha por
conta da diferença de performance que eu vi na prática.
Mas vou fazer novos testes, em cenários diferentes, pois mesmo vendo o que
vi, custo a acreditar que tenha havido tanta perda de performance devido a
essa reescrita de código.

Também sei que o FB continuará a evoluir e aumentar de performance com o
passar do tempo, como já é de se esperar, mas baseado no que vi, ficarei
ainda com o FB 2.5 bom e velho de guerra.

Mestre Cantu, poderia indicar algum bom site que monitore essa questão de
performance do FB?


> []s
> Carlos H. Cantu
> eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
> www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
>



Mais detalhes sobre a lista de discussão lista