Почему журналы хранятся в виде простых файлов, а не в базе данных (SQL)? - PullRequest
4 голосов
/ 25 февраля 2011

Почему веб-серверы и другие технологии используют для регистрации плоские файлы, а не какую-то базу данных, будь то с помощью SQL или какого-либо решения KVS или "NoSQL"?

Существует липреимущество (скорость, задержка, время записи и т. д.) при использовании плоских файлов, или я просто что-то упустил?

Ответы [ 5 ]

9 голосов
/ 25 февраля 2011

Вам не гарантировано наличие БД на сервере.

Если БД является частью проблемы, как вы смотрите на журналы.

Если БД не является частью проблемы, все же проще просматривать журналы в любом старом текстовом редакторе.

Зачем использовать сложные, когда простые работы.Когда Apache (и т. Д.) Был впервые разработан, БД с открытым исходным кодом (бесплатные, вездесущие) были недоступны.

и т. Д.И т.д.

2 голосов
/ 25 февраля 2011

Существует вечный принцип, который говорит, что чем меньше движущихся частей, тем меньше точек, где что-то может пойти не так. Вы минимизируете зависимости, тем самым сводя к минимуму места, где могут возникать ошибки. Это также быстро, потому что это просто, и высоконагруженный сервер, который вы не хотите, чтобы логирование перегружало систему.

Интересно, что это тот же принцип, который сделал одномоторный самолет Чарльза Линдберга успешным в беспосадочном полете через Атлантику, когда многие другие большие самолеты потерпели неудачу перед ним. Сохраняйте это простым:)

2 голосов
/ 25 февраля 2011
  • Прежде всего, его легко написать.
  • Все просто ... запись в файл - это одна из наименее вероятных ошибок.
  • Из-за простоты это быстро. Это относится как к записи на диск, так и к времени процессора для выполнения операций.

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

Но в основном это просто. Зачем полагаться на SQLite (как простой встроенный SQL-сервис), обеспечивающий совместимость вашей лицензии, то, что вы поддерживаете соответствующие версии и что у нее нет основных ошибок или проблем безопасности ... для того, чтобы делать только последовательные вставки?

ПОЦЕЛУЙ. Инструменты анализа журналов не должны быть частью написания журналов.

1 голос
/ 25 февраля 2011

Хотя остальные ответы здесь верны (принцип KISS и т. Д.), Я видел проект, в котором журналирование заполняло жесткий диск сервера, и им приходилось строить автоматизацию для очистки журналов.Чтобы решить эту проблему, может потребоваться реализовать функцию скользящего резервного копирования / максимального размера журнала или создать запланированное задание (cron) для перемещения или удаления журналов.

Бесплатный обед не предоставляется.

0 голосов
/ 01 февраля 2012

Вот почему мы прекратили использовать журналы БД на моей работе.

try
{
    tx.Begin();
    // Exception here!
    tx.Commit();
}
catch(Exception ex)
{
    LogToDB(ex);
    tx.Rollback();
}

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

(Полагаю, яне следует говорить всегда ... Как раз, когда после регистрации произошел откат. Тем не менее, это некоторое время сбивало с толку!)

...