Подтвердить что ты не робот

Django AuditTrail против Reversion

Я работаю над новым веб-приложением, в котором мне нужно хранить любые изменения в базе данных для аудита. Цель таких аудиторских таблиц заключается в том, что позже в реальном физическом аудите мы можем определить, что произошло в ситуации, кто редактировал, что и как было состояние db во время, например, комплексный расчет. Таким образом, в основном таблица аудита будет написана и не будет прочитана. Иногда отчет может генерироваться.

Я искал доступное решение

  • AuditTrail - прост, и поэтому я склонен к нему, я могу понять его один файл.
  • Reversion - выглядит достаточно просто, чтобы использовать, но не уверен, насколько легко было бы его модифицировать, если это необходимо.
  • rcsField кажется очень сложным и слишком большим для моих нужд

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

4b9b3361

Ответ 1

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

Итак, я тестировал AuditTrail и Reversion Реверсия, похоже, является лучшим полномасштабным приложением со многими функциями (которые мне не нужны). Также насколько я знаю, он сохраняет данные в одной таблице в формате XML или YAML, что я считаю

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

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

Итак, я иду с AuditTrail.

Ответ 2

Лично я предпочитаю создавать таблицы аудита в базе данных и заполнять триггеры, чтобы сохранить любые изменения даже специальных запросов из окна запроса. Я бы никогда не рассмотрел решение аудита, которое не основано в самой базе данных. Это важно, потому что люди, которые вносят вредоносные изменения в базу данных или совершают мошенничество, вряд ли будут делать это через веб-интерфейс, но напрямую на бэкэнд. Гораздо больше этого материала происходит от недовольных или нечестных сотрудников, чем за пределами хакеров. Если вы используете ORM уже, ваши данные находятся под угрозой, потому что разрешения находятся на уровне таблицы, а не на уровне sp, где они принадлежат. Поэтому еще более важно, чтобы вы зафиксировали любые возможные изменения в том, что не только то, что было из графического интерфейса. У нас есть динамический proc для создания таблиц аудита, которые запускаются при добавлении новых таблиц в базу данных. Поскольку наши таблицы аудита заполняют только изменения, а не всю запись, нам не нужно менять их каждый раз, когда добавляется поле.

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

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

Ответ 3

Я не могу дать вам реальный опыт ни с одним из них, но хотел бы сделать наблюдение.

Я предполагаю, что AuditTrail означает AuditTrail в вики Django. Если это так, я думаю, вы захотите вместо этого взглянуть на HistoricalRecords, разработанный тем же автором (Marty Alchin aka @gulopine) в своей книге Pro Django. Он должен работать лучше с Django 1.x.

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