Pergunta

Você acha que o uso de um MongoDB Json Banco de dados para armazenar os arquivos de log de aplicativo é uma boa ideia e por quê ?

A única vantagem para mim é o esquema de abstração, mas eu acho que também é uma fraqueza não podemos garantir a integridade de um arquivo de log.

Foi útil?

Solução

Obviamente, eu sou preconceituoso (eu trabalho no MongoDB), mas eu acho que funciona muito bem para os logs.

Motivos:

  • É rápido para inserções e atualizações...você pode fazer milhares por segundo
  • Bem como consultas normais, você pode executar análises e gerar relatórios usando JavaScript.Você poderia ter um cron execução do trabalho nocturno que faz gostoso MapReduce coisas para seus registros.
  • Você pode usar cobertas de coleções, que são da coleção que agir como filas, para mantenha apenas o mais recente N KBs/Mb/gb de logs

Eu não tenho certeza do que você quer dizer "garantir a integridade de um arquivo de log"...quer dizer que você está preocupado por não saber o que campos o documento que você está puxando tem?Se for assim, eu acho que você vai descobrir que é mais difícil lidar com null campos em um banco de dados relacional e muito mais flexível.

Veja também: o MongoDB post no blog de registo.

Outras dicas

Estou usando o MongoDB para armazenar logs de muitos aplicativos e está funcionando muito bem até agora.

Você pode querer dar uma olhada no Slides de uma apresentação sobre o comportamento do aplicativo de registro para MongoDBB que eu dei no Mongo SV e no último MongoDB SF Meetup para obter mais informações sobre o motivo pelo qual acho que é bom para o log, bem como para informações sobre bibliotecas para Java, Python, Ruby, Php e C# que suportam o registro do MongoDB.

Agora sou o principal comissário do Log4mongo-Java, Log4J Appenders for MongoDB. Então, provavelmente não é de surpreender que seja isso que estou usando.

Com relação à integridade do log, suponho que você quer dizer confiança de que ela não foi modificada depois que foi escrita. Uma opção que você tem, pelo menos com o log4mongo-Java, para armazenar eventos de registro em um banco de dados que requer autenticação. Isso limitaria até certo ponto o número de usuários que poderiam adicionar, excluir ou atualizar eventos.

Além disso, você pode configurar um escravo de replicação que está bem travado. Backups frequentes do escravo limitariam pelo menos o tempo durante o qual o conjunto de eventos registrados poderia ser modificado.

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