Usuário com melhor resposta
Archive no SQL

Pergunta
-
Boa tarde!
Sei que o SQL trabalho com o conceito de arquivar dados antigos automaticamente e transforma-los somente em leitura.
Onde encontro documentação sobre isto?
Ao arquivar sei que o dado continua disponivel para consulta e o SQL se reponsabiliza para buscar o dado quando necessário.
Como isto funciona.
O banco de archive fica na mesma instancia SQL, pode ser em outra?
Como fica a performance?
Obrigado pela ajuda.
Mário
Respostas
-
Boa Noite,
O uso do particionamento pode sim fazer o que você pretende. Para converter partições antigas em tabelas, você terá que utilizar o operador SWITCH.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.com
Encontrando tabelas não utilizadas
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!957.entry
Classifique as respostas. O seu feedback é imprescindível- Marcado como Resposta Mario Fialho terça-feira, 2 de março de 2010 14:15
Todas as Respostas
-
-
Boa Tarde,
Acredito que você esteja se referindo ao termo Database Snapshot.
Sugiro procurar por essa funcionalidade. Você encontrará muita documentação.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.com
Encontrando tabelas não utilizadas
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!957.entry
Classifique as respostas. O seu feedback é imprescindível -
Obrigado as respostas.
São duas opções que eu descobri. O Particionamento de dados, que eu posso fazer com que determinados dados fiquem em diferentes partições.
E o Snapshot, que simplesmente faz uma copia do momento.
Mas acho que me confundi. O Sql não tem archive, ou seja, arquivar os dados mediante um regra em outra tabela ou base e manter a referencia com a tabela principal?
Sei que dá para fazer isto programando, quero saber se não tem nada nativo.
A ideia seria que quando os dados fossem ficando velhos fossem pra uma tabela ou base historica, e que ao fazer select na tabela principal e o dado tivesse no historico ele também viria.
Isso aumentaria performance, pois a tabela principal é menor e a o numero de vezes que o dado historico é acessado normalmente é rara.
Seria uma mistura do snapshot e do particionamento de tabelas.
Obrigado.
Mário -
Boa Noite,
O uso do particionamento pode sim fazer o que você pretende. Para converter partições antigas em tabelas, você terá que utilizar o operador SWITCH.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.com
Encontrando tabelas não utilizadas
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!957.entry
Classifique as respostas. O seu feedback é imprescindível- Marcado como Resposta Mario Fialho terça-feira, 2 de março de 2010 14:15
-
-
Grato a todos.
Sim Gustavo e Fabricio, o particionamento faz uma parte do que eu disse, mas se eu transformar uma partição em outra tabela, ou adicionar a outra tabela, perco a query.
Pois pra acessar os dados eu terei que fazer a UNION.
O conceito de archive é historizar, mas continuar usando a mesma query na tabela principal, e o engine de banco se encarrega de buscar no archive se houver necessidade.
Sei que posso fazer isso com banco distribuido, fazer view, etc.
Mas foi me dito que o SQL tinha o conceito de archive, e por isso abri o post.
Muito obrigado.
Mario. -
Olá Mario,
O que você pode fazer é particionar a tabela e colocar as partições mais antigas em outros discos e até eventualmente marcar os arquivos antigos como leitura. Dessa forma apenas as partições mais novas serão acessadas e o SQL Server buscará os dados se achar necessário.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.com
Encontrando tabelas não utilizadas
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!957.entry
Classifique as respostas. O seu feedback é imprescindível -
Mario,
Este conceito de archive no SQL Server existe, quando estamos fazendo na geração de arquivos de backup, onde podemos criar uma estrutura de archive para armazenar dados históricos.
Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA -
Mario,
o particionamento resolve seu problema pois divide a tabela "fisicamente", por assim dizer, e logicamente vc não precisará alterar seu código pois sua tabela continua sendo conhecida pelo mesmo nome.
Se a resposta resolveu sua questão ou problema, classifique-a para manter a qualidade do forum e a confiabilidade dos participantes.
Alex M. Bastos
http://bastosalex.spaces.live.com