Вход в текстовый файл или базу данных?

25

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

Nakilon
источник
Это тоже может помочь stackoverflow.com/questions/3458813/…
Мухаммед Раджа
2
Возможно дублирование журнала в файл или в таблицу базы данных?
комнат
Хотя вы не должны регистрировать конфиденциальную информацию, некоторые системы могут требовать ее, и это хороший случай для регистрации в базе данных. Иногда разработчики непреднамеренно регистрируют конфиденциальную информацию. Во избежание этой аварии многие разработчики приложений будут регистрировать данные только в базе данных, поэтому такие вещи, как номера социального страхования в сообщениях журнала, не помещаются в текстовый файл в виде простого текста на 13 различных серверах.
Грег Бургхардт

Ответы:

16

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

Причина, по которой вы регистрируетесь в БД, скорее всего, заключается в том, что вы хотите запросить результаты - поиск конкретной информации журнала в БД проще, особенно если вы регистрируете контекстную информацию, которая может использоваться для группировки записей журнала вместе. Также обычно проще получить доступ к центральной БД, чем к файлу журнала на сервере, который может быть защищен и недоступен.

В идеале было бы локально войти в файл, а затем перенести эти данные в БД для проверки при необходимости впоследствии.

Теперь одитинг - это совсем другой зверь. Хотя в принципе это похоже на ведение журнала, аудит обычно требуется хранить в течение длительного времени (в отличие от файлов журнала, используемых для отладки или трассировки, которые могут быть удалены прихотью). Аудит там, чтобы показать важную информацию. Вы регистрируете намного меньше информации аудита и реже, чем обычные записи, поэтому производительность не имеет значения. Именно по этой причине преимущества записи этой информации аудита в центральную БД видны.

gbjbaanb
источник
1
Еще одна схема, которую я видел, заключается в том, чтобы журналы изначально записывались локально, а затем передавались в БД с помощью какого-то фонового задания.
Робби Ди
@RobbieDee Мне нравится эта идея. У меня есть своего рода повторяющийся вопрос: обычно ли иметь файлы журнала с ограниченной продолжительностью (например, только за последние 30 дней), но когда журналы помещаются в базу данных (например, еженедельно), тогда все журналы сохраняются в базе данных => действуют файлы журнала как только буфер, и все операции чтения выполняются в базе данных? Поскольку запись в БД задерживается, не стоит беспокоиться о производительности, не так ли?
Аль-Ун
9

Не существует единого подхода, подходящего для всех подходов, и для обеспечения устойчивости иногда требуется использовать несколько подходов. В качестве примера вы можете сохранить журналы отладки в файле и сохранить журналы аудита в БД.

Применение панировочных сухарей

Плюсы: легко внедрить и сразу увидеть пользователю

Минусы: информация только сохраняется, пока приложение работает

Текстовый файл

Плюсы: простота реализации

Минусы: необходимо убедиться, что блокировка файлов не происходит. Что делать, если на диске журнала заканчивается свободное место?

Журнал событий

Плюсы: простота реализации

Минусы: журнал событий может быть переполнен, если он настроен неправильно или старые журналы могут быть потеряны из-за политики хранения / очистки.

База данных

Плюсы: простота реализации

Минусы: больше трафика БД. Как зарегистрировать потерю БД или другую проблему БД?

Обмен сообщениями (MQ)

Плюсы: уволить и забыть

Минусы: еще один слой, чтобы пойти не так. Требуется настроить

Робби Ди
источник
Вы также можете включить syslog daemon и пункты назначения журнала SNMP.
gbjbaanb
@gbjbaanb Ну, действительно - некоторые ОС имеют такую ​​встроенную функциональность - это, конечно, не исчерпывающий список. Системы высокой доступности могут также отправлять SMS-сообщения, когда они выходят из строя.
Робби Ди
2

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

В некоторых случаях (например, финансовые приложения) эти журналы, возможно, должны обеспечивать соблюдение требований законодательства, таких как срок хранения (в некоторых странах в течение 10 лет) или неизменность. Поскольку эти журналы должны обосновывать содержимое базы данных на уровне приложения, обычной практикой является хранение их в базе данных, где доступ можно контролировать, чтобы избежать несанкционированного изменения.

Другие журналы , такие как журналы мониторинга или журналы безопасности, часто сталкиваются с ограничениями производительности и объема. Как правило, они записываются в файл, потому что быстрее записывать (без накладных расходов на управление транзакциями), легче архивировать в автономном режиме и легче интегрировать с инструментами SIEM внешнего мониторинга .

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

Christophe
источник
1

Одна из многих причин использовать db для ведения журнала отладки: если у вас нет доступа к приложению или веб-серверу для просмотра средства просмотра событий или текстовых файлов

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

Вы можете использовать DB Tools для фильтрации и удобного просмотра.

Мухаммед Раджа
источник
Запись в файлы журнала сервера - не единственный вариант для систем с высоким уровнем параллелизма. Эти журналы часто записываются на клиентское устройство, а затем отправляются на поддержку в случае возникновения проблемы. Высокий параллелизм также может сделать это непригодным для записи в одну базу данных.
Робби Ди
@RobbieDee Это касается и веб-серверов, и веб-приложений? как это то, что ОП требует, я верю
Мухаммед Раджа