Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Olá a todos!
Estou com uma demanda onde terei que ler um banco de dados relativamente grande, com informações desde 1990. Queria saber boas práticas e formas de melhorar a performance da extração dos dados do banco, sendo que a maior parte dos dados serão extraídos a cada 2 horas.
Tem algum mecanismo para fazer carga incremental como na utilização de QVD's? Enfim, o que vcs puderem ajudar, ajudem, hehe...
O importante é entender como estão estas informações de 1990, se todas podem sofrer alteração ou não.
Se apenas o mês corrente é alterado no banco, fica simples vc realizar uma carga anual e cargas mensais.
Outra solução seria gerar cargas incrementais somente dos dados alterados por algum campo do banco.
É bom entender isso para poder criar uma regra definitiva e que não o tempo máximo para disponibilizar a aplicação aos usuários ou até mesmo os recursos do servidor de banco de dados.
Pedro Barabanov de Assis, eu faria da seguinte forma
1) Definir junto à área usuária qual o tempo que um registro pode sofrer alteração (ou ser deletado)
2) Com este parametro implementaria uma logica para particionar os QVD´s (mensal ou até mesmo diario)
3) Sendo assim, na implantação do projeto você extrairia todos os QVD´s e na recarga normal de produção você extrairia, por exemplo, apenas os dois últimos meses
Segue abaixo um esboço de código
SET MesesProcessar=2; // Na implantação configure para 276 meses - 1990
for i = $(MesesProcessar) - 1 to 0 step -1
Let InicioMes=date(MonthStart(AddMonths(today(),-$(i) )),'YYYY-MM-DD hh:mm:ss');
Let FimMes=date(MonthEnd(AddMonths(today(),-$(i) )),'YYYY-MM-DD hh:mm:ss');
LET COMP= date(AddMonths(today(),-$(i) ),'YYYYMM');
tbl:
LOAD *;
SQL [sua query utilizando os parametros acima];
store tbl into meuqvd$(COMP).qvd(qvd)
drop table tbl;
next
Então, o problema é que os dados podem ser modificados no banco e não tem data "limite", não tem como definir isso com o usuário, pois o sistema é bem volátil. Com certeza é algo errado, mas não tenho muito poder de barganha quanto a isso. Por isso o incremental fica um pouco complicado...
Estou em discussão com o pessoal de TI aqui, pra entender mais o banco, só que quanto mais eu converso, mais "poréns" aparecem, hahaha...
Vou tentar entender melhor e vou postando como vai ficar ao longo do projeto!
Pedro Barabanov de Assis, meio estranho mesmo, hehe.
De qualquer forma o script continua válido, é melhor executar várias querys e salvar em QVD´s separados.
Normalmente recomendo não ultrapassar 100mb em cada QVD, pois pode começar a gerar problemas de I/O com arquivos muito grandes