Pergunta

Recentemente eu me encontrei em um emaranhado de banco de dados em que a gestão quer a capacidade de remover dados do banco de dados, mas ainda quer que os dados sejam apresentados em outros lugares. Exemplo: Eles querem remover todas as instâncias do whizbang produto, mas eles ainda querem whizbang a aparecer em relatórios de vendas. (Se eles correram um para uma data anterior).

Agora eu posso adicionar um campo, digamos IS_DELETED, que irá acompanhar se esse produto foi deletada e, portanto, ainda manter todas as minhas referências, mas ao longo de um período de tempo, eu tenho o potencial de abrigar um monte de dados mortos. (Dados que nunca é acessado novamente). Como lidar com isso não é a minha pergunta.

Estou curioso para descobrir, em sua experiência, qual é a média de vida de dados? Isto é, em média, quanto tempo são dados vivo ou bom para antes que ele chegue substituído ou excluído? Eu entendo que isso é relativo ao tipo de dados que são habitação, mas certamente todos os dados tem algum tipo de vida?

Foi útil?

Solução

Os dados vive para sempre ... ou muitas vezes que deveria. Uma prática comum é ter fim e / ou datas de início para um registro. Portanto, para sua whizbang, você tem uma data de início (para que ele não vai aparecer em relatórios de vendas antes de seu lançamento oficial), e uma data final (para que ele cai de relatórios depois de ter sido de fim-de-lifed). Usando as datas adequadas como critérios para o seu relato, bem como suas aplicações, você não vai ver o whizbang exceto para quando você deve, e os dados ainda existe (o que deveria, teoricamente infinita).

Como Koistya Navin menciona, movendo dados para um data warehouse em um certo ponto também é uma opção, mas isso depende em grande parte de como grande seus dados 'velho' é, e quanto tempo você precisa para mantê-lo prontamente disponível para acesso.

Outras dicas

Muitos de nossos clientes manter os dados on-line para 2 anos. Depois que ele se mudou para discos de backup, mas ele pode ser colocado on-line, se necessário.

Considere a adição de uma coluna de "validade" ou "data efetiva". Isso permitirá que você marca um produto como obsoleto, mas os relatórios retornará esse produto, se o intervalo de tempo está satisfeito.

Geralmente é melhor para mover esses dados no banco de dados seporate (armazém de banco de dados) e manter a base de dados de trabalho limpo. Na data warehouse seus dados podem ser mantidos por muitos anos, sem afetar a sua aplicação.

Referência: Data Warehouse na Wikipedia

Eu sempre ido com o que é o corpo governando procurando. Exemplo do IRS quer que você mantenha 7 anos de história ou por razões de segurança que mantêm 3 anos de informações de log, etc. Então, eu acho que você poderia fazer 2 coisas, determinar o que a vida útil de seus dados é eu diria 3 anos seria suficiente e, em seguida, você pode adicionar a bandeira IS_DELETED juntamente com uma data que forma você seria capaz de flag alguns dados para apagar mais cedo do que mais tarde.

Sim, todos os dados tem uma vida útil. E sim, ele é relativo ao tipo de dados que você tem.

Alguns dados tem uma vida útil medida em segundos (tokens de autenticação, por exemplo), alguns outros dados eternidade virtual (mais do que a média e formatos ele é armazenado em, como por exemplo registros de propriedade).

Você terá que quer ser mais específico quanto ao tipo de dados que você está imaginando, ou fazer um censo em sua própria organização como para o tempo de vida normal de coisas.

O nosso sabor particular varia. Temos alguns dados (a grande maioria) que vai obsoleto após 3 meses (limite de produto duro), mas pode ser revivido em qualquer momento posterior.

Temos outros dados que sejam efetivamente imortal.

Na prática, a maioria dos dados que servem é fresca e freqüentemente solicitada por algumas semanas, no máximo, um mês, antes de cair para uso esporádico.

Quanto é "um monte de dados morto"?

Com poder de processamento e armazenamento de dados tão barato, eu não iria limpar dados antigos a menos que haja uma boa razão para isso. Você também precisa considerar as implicações legais. Grandes (e até mesmo pequenas) empresas podem ter políticas de retenção extremamente longos para os dados antigos, para salvar-se milhões abaixo da estrada quando eles são intimados para ele por um juiz.

Gostaria de verificar com qualquer departamento jurídico que você tem e descobrir quanto tempo as necessidades de dados a serem armazenados. Essa é a aposta mais segura.

Além disso, pergunte-se o que o benefício de remover os dados antigos é. É o único benefício de um banco de dados mais arrumado? Se assim for, eu não faria isso. Você vai ver um aumento de desempenho 10X? Se assim for, eu o faria. Esta é realmente uma questão complexa, porém, e é difícil para nós ter todas as informações necessárias para lhe dar bons conselhos.

Eu tenho alguns projetos em que o cliente quer todos os dados históricos (que remontam mais de 19 anos). Um pouco dos dados realmente antigos é mal formada e vai ser um pesadelo para importação para o novo sistema. Nós convenceu-os de que eles não terão registros voltar mais longe do que 10 anos, mas como você disse é tudo relativo ao tipo de dados que você está habitação.

Em uma nota lateral, o armazenamento de dados é extremamente barato agora, e se ele não está afetando o desempenho de sua aplicação, gostaria de deixá-lo onde está.

[...] mas certamente todos os dados tem algum tipo de vida?

Não é qualquer tipo de esperança de vida, podemos falar sobre significativamente. A grande quantidade de dados é inútil, logo que ele é criado ou gravado. Tais dados podem ser descartados imediatamente com nenhum efeito. Por outro lado, alguns dados tem valor suficiente para que ele vai sobreviver o atual sistema que o hospeda. Se a Amazon eram para substituir completamente sua infra-estrutura atual, as histórias de clientes que tenham armazenados ainda seria imensamente valioso.

Como você disse, é relativa. Cada tipo de dados tem seu próprio tempo de vida que não tem relação com outro tipo de vida dos dados. Não há nenhum significado "vida média de dados".

Eu tenho o potencial de abrigar um monte de dados mortos. (Dados que nunca é acessado novamente).

Mas eles vão quando eles realizam esses relatórios, em seguida, eles estão acessando os dados.

Até então você vai precisar para manter os dados de alguma forma. Mover para outra mesa ou ter um interruptor como você mencionou.

uh ... correndo o risco de simplificar demais ... parece que usando DateDeleted em vez de um pouco iria resolver o problema-how-long to-sustento.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top