Registro de dados com o Oracle (ou qualquer RDBMS)

votos
0

O que é o melhor (correto, padrão, etc) maneira de manter um registro de dados adquiridos a uma taxa definida (a cada minuto, a cada 5 segundos, a cada 10ms, etc) em um banco de dados Oracle?

Parece ineficaz para armazenar o valor de data 7 byte para cada ponto de dados (especialmente medida que a frequência aumenta). No entanto, a embalagem os dados em algum tipo de formato bruto faz estatísticas e outros cálculos sobre os dados mais difícil.

Eu acho que essa pergunta é geral o suficiente para aplicar a qualquer RDBMS, mas neste caso eu estou usando Oracle.

Publicado 19/05/2009 em 22:43
fonte usuário
Em outras línguas...                            


2 respostas

votos
2

Quanto custa para um terabyte de disco, e é compactar esses 7 bytes realmente vale a pena o esforço? Se você quiser calcular estatísticas e relatórios sobre os logs com base no tempo, que vai ser muito doloroso para uncompact a data para usar em consultas SQL.

Com o Oracle apenas registrar os dados em uma tabela - não tente fazer logon demais ou tem muitos índices na tabela de log. Certifique-se de sua mesa de log é particionado do dia 1 ao tamanho gerenciável - que poderia ser uma partição por dia, semana ou mês, dependendo da quantidade de dados que você está gerando. Projete sua política de limpeza desde o dia 1 também.

Quando você está adicionando uma nova partição no final do seu 'período' quando os dados começa a ir para a nova partição, você pode considerar o uso de 'alter partição movimento compressa' comprimir os dados para armazená-lo on-line em menos espaço.

Há uma série de opções, você só precisa pensar através dos requisitos que você tem que tentar encontrar a melhor solução. Dependendo do que você está fazendo, log para um arquivo poderia ser uma opção também - mas cuidado com milhares e milhares de arquivos em um único diretório que pode causar problemas também.

Respondeu 19/05/2009 em 23:01
fonte usuário

votos
0

Uma vez que cada linha de dados coletados tem que estar em seu próprio país, você tem que usar o espaço para gravar o valor de data completa - a menos que você optar por usar algo como um timestamp Unix (segundos inteiros desde 1970-01-01 00: 00: 00Z , ou algum outro período adequado ou ponto de referência). Que se encaixa em 4 bytes para dar um período de 68 anos em ambos os lados da época (assumindo inteiros de 32 bits assinados). Pode não ser tão conveniente, mas é relativamente compacto.

Respondeu 19/05/2009 em 22:59
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more