AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 27577
Accepted
8kb
8kb
Asked: 2012-10-25 21:31:03 +0800 CST2012-10-25 21:31:03 +0800 CST 2012-10-25 21:31:03 +0800 CST

Estratégia de arquivamento de dados que lida com alterações de esquema?

  • 772

Estou trabalhando com um aplicativo herdado que possui cerca de dez anos de dados de clientes. A maioria desses dados não é usada nas operações do dia-a-dia, mas há um requisito de negócios para ter os dados disponíveis para o cliente até sua aposentadoria do sistema.

Estamos explorando o arquivamento dos dados em uma cópia do banco de dados existente e, em seguida, a eliminação dos registros da produção após um determinado ponto no tempo.

Minha preocupação é que o banco de dados passa por uma mudança substancial de esquema a cada trimestre devido aos esforços de desenvolvimento.

Se eu fosse arquivar uma cópia espelhada dos dados, também precisaria aplicar todos os scripts de alteração que vão contra a produção?

Existem estratégias alternativas? Parece que não importa a forma de armazenamento que você escolher (ou seja, banco de dados, arquivos simples, xml), você sempre precisará de alguma forma de mapear os esquemas mais antigos para os mais novos.

best-practices archive
  • 1 1 respostas
  • 2498 Views

1 respostas

  • Voted
  1. Best Answer
    Jon Seigel
    2012-10-26T07:01:02+08:002012-10-26T07:01:02+08:00

    Você precisa definir seus requisitos mais especificamente antes mesmo de pensar em uma solução:

    • Por que o arquivamento é necessário? Parece que o sistema já lida com dados antigos, então qual é a necessidade comercial de separar esses dados? Atuação?

    • Os dados do arquivo são um instantâneo somente leitura ou são possíveis alterações nos dados históricos? Se forem possíveis alterações, quais tipos de alterações serão suportadas (inserir, atualizar, excluir ou alguma combinação delas)?

    • O banco de dados é multilocatário e, em caso afirmativo, você exige que cada locatário possa arquivar em diferentes pontos no tempo?

    • Seu aplicativo precisa ser executado com os dados arquivados como fonte de dados? Presumo que sim, já que você mencionou a sincronização de alterações de esquema.

    • Qual é a versão/edição mínima do DBMS que você precisa para oferecer suporte? Isso determinará quais recursos estão disponíveis para uso em sua estratégia.

    • Quanto tempo você tem para implementar o arquivamento? O arquivamento é um problema de design de nível muito baixo que, idealmente, deve ser incorporado desde o início; adicioná-lo mais tarde pode levar um tempo significativo para redesenhar e implementar.


    Agora, tendo dito tudo isso, uma coisa que eu aconselho a você, tendo feito isso aqui (SQL Server), é o seguinte: evite vários bancos de dados, se possível , principalmente se você precisar da capacidade de editar dados históricos.

    • Embora eu não possa revelar nosso IP, direi que o processo envolvido no embaralhamento de dados do banco de dados "ao vivo" para o banco de dados "arquivo" é extremamente complexo se você adotar uma abordagem dinâmica como fizemos para ~ 700 tabelas . Dependendo do estado do esquema do seu banco de dados, esse tipo de coisa pode nem ser possível de realizar ou resultar em discrepâncias de dados inesperadas. Se você não tiver muitas tabelas (< 200) e o esquema estiver em estado bruto, honestamente, não adote uma abordagem dinâmica ou espere até que seja limpo para um estado decente. Com um grande número de tabelas e um esquema aproximado, vários bancos de dados não são uma solução viável.

    • Como você mencionou, você precisa executar scripts de atualização em vários bancos de dados e controlar todos os bancos de dados de alguma forma. É muito fácil as coisas ficarem dessincronizadas, ou seja, um banco de dados de arquivo é movido para um servidor ou instância diferente e seu banco de dados ou tabela de configuração mantém as informações antigas. A escolha é sempre sincronizar o esquema ou escrever aplicativos para serem sempre compatíveis com versões anteriores. (Dica: é muito mais fácil sincronizar o esquema.)

    Embora eu certamente não recomende vários bancos de dados, é uma solução possível, dependendo de seus requisitos.

    • 2

relate perguntas

  • Modelo de banco de dados com usuários, funções e direitos

  • Melhor maneira de identificar dados órfãos?

  • Como gerenciar meus próprios scripts

  • Qual é a configuração RAID recomendada para um banco de dados Oracle?

  • Melhores práticas para conectar bancos de dados que estão em diferentes regiões geográficas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve