2010-01-07 4 views
3

Считаете ли вы, что использование базы данных MongoDB Json для хранения файлов журналов из приложения является хорошей идеей и почему?MongoDB для хранения различных файлов журнала (схемы)

Единственное преимущество для меня - это абстракция схемы, но я думаю, что это также слабость, которую мы не можем обеспечить целостность файла журнала.

ответ

4

Очевидно, что я предвзятый (я работаю над MongoDB), но я думаю, что он работает очень хорошо для журналов.

Причины:

  • Это быстро для вставки и обновления ... Вы можете сделать тысячи в секунду
  • Как и обычные запросы, вы можете запустить аналитику и генерировать отчеты, используя JavaScript. У вас может быть задание cron, выполняемое ночью, что хорошо. MapReduce вещи для ваших журналов.
  • Вы можете использовать блокированы коллекции, которые являются коллекции, которые действуют как очереди, чтобы держать только последние N KBS/МБС/ГЗ бревен

Я не уверен, что вы имеете в виду «обеспечить целостность файл журнала «... вы имеете в виду, что беспокоитесь о том, что не знаете, в каких областях находится документ, который вы вытаскиваете? Если это так, я думаю, вы обнаружите, что сложнее иметь дело с нулевыми полями в реляционной базе данных и гораздо более гибкими.

См. Также: the MongoDB blog post on logging.

2

Я использую MongoDB для хранения журналов из многих приложений, и это очень хорошо работает до сих пор.

Возможно, вы захотите взглянуть на slides from a presentation on Logging Application Behavior to MongoDB, который я дал в Mongo SV и на последнем собрании MongoDB SF, чтобы узнать больше о том, почему я думаю, что это хорошо для ведения журнала, а также для информации о библиотеках для Java, Python, Ruby, PHP и C#, которые поддерживают ведение журнала в MongoDB.

Я теперь главный коммиттер на log4mongo-java, Log4J appenders для MongoDB. Поэтому, наверное, не слишком удивительно, что это то, что я использую.

Что касается целостности журнала, я полагаю, вы имеете в виду уверенность в том, что он не был изменен после его написания. Один из вариантов, который у вас есть, по крайней мере, с log4mongo-java, позволяет хранить события регистрации в базе данных, требующей аутентификации. Это в определенной степени ограничило бы число пользователей, которые могли бы добавлять, удалять или обновлять события.

Кроме того, вы можете настроить ведомое устройство репликации, которое плотно заблокировано. Частые резервные копии подчиненного устройства, по крайней мере, ограничивают время, в течение которого может быть изменен набор зарегистрированных событий.

Смежные вопросы