Como faço para contar o total exato de arquivos de diário sqlite criados e excluídos?

1

Estou tentando descobrir isso. Cenário é este:

Um daemon de tcp com encadeamento com um backend de sqlite armazena informações em um arquivo sqlite2 exclusivo por ID de IMEI, em um subdiretório exclusivo por dia ( pseudo: 2012/11/01/event_$imei.sqlite ). Cerca de 3000 deles por dia. Como você sabe, há uma fase em que um arquivo de diário sqlite está sendo criado e excluído ao receber e armazenar dados de entrada.

Este aplicativo só grava no diretório de hoje ou de ontem, os (pequenos) datafeeds podem levar até 255 segundos. Portanto, há uma fase às 00:00 UTC. Durante uma conexão, várias gravações podem ocorrer, o link da rede permanece aberto e os recursos podem enviar rajadas adicionais de novos dados enquanto a conexão é aberta. Nenhum bloqueio explícito está acontecendo, o sqlite manipula a si mesmo, uma conexão é simplesmente única por imei, então nunca há 2 threads gravando no mesmo arquivo. Com outras palavras, o daemon de controle não tem a menor idéia do que o sqlite faz nem se importa.

Eu quero contar o número de arquivos de diário sqlite já criados como um total de 2 em um determinado ponto no tempo, é claro. Essencialmente eles são quase os mesmos, mas nunca são os mesmos, eles vivem apenas por um curto período de tempo. Os sistemas de monitoramento geralmente contam o número de arquivos presentes como um instantâneo no tempo. Esse não é o tipo de métrica que estou procurando.

Então, como você pode fazer exatamente esse tipo de contagem com a menor pegada na carga? Deve haver um truque, é * nix depois de tudo. O sistema aqui é um servidor Ubuntu, mas eu prefiro um pouco - mas não limitado a uma solução geral. Mas tenha em mente que novos diretórios serão criados com o passar do tempo e eu devo ser capaz de segui-lo, e eu quero que ele seja volátil (então uma reinicialização pode (deve) redefinir isso).

Agradecemos desde já por me dar bootstrapping em qualquer direção.

    
por Glenn Plas 01.11.2012 / 00:55

1 resposta

0

inotify seria um bom candidato para fazer isso tipo de contagem, mas como suspeita que esta abordagem não é ideal e propensa a condições de corrida, no final eu concordo que na verdade eu estou tentando contar o número de transações com isso, então seria melhor fazer isso no aplicativo em si e manter a contagem.

    
por 13.11.2012 / 23:39

Tags