В нашем приложении пользователь может редактировать / удалять определенные элементы на стене, которые могут просматривать другие пользователи из той же команды.Каков наилучший подход к проектированию для решения этой проблемы ведения истории?
Вот некоторые идеи дизайна, которые я имею в виду, но не знаю, какой подход лучше / лучше использовать:
- Создайте дублирующую схему (или дублирующую таблицу для таблицы) для текущих таблиц.Вызвать триггер перед обновлением для каждого из них.Но я хочу, чтобы он срабатывал только в случае изменения «текста», а не других атрибутов.Даже не знаю, как это сделать
- Создайте «таблицу истории», т. Е. Глобальную таблицу, в которой атрибут используется для изоляции таблицы / элемента, для которого предназначена запись истории.
- Имейте асинхронный компонент, который отвечает за обновление специальной таблицы (таблиц) с соответствующим обновлением - больше похоже на тип хранилища hashmap.Но я не знаю, как это можно сделать с помощью Java / Mysql или оно того стоит.Создание асинхронных компонентов нетривиально
В первом из двух подходов использовались бы триггеры.Но тогда я не хочу, чтобы триггер что-либо делал, если только метка времени или другие поля конфигурации были обновлены для записи.Предполагая, что около 50-100 одновременно работающих пользователей, будут ли триггеры хорошим вариантом?(или лучше использовать подход хранимых процедур, чтобы сделать это ... не уверен).
Намерение такого дизайна: мы хотим в основном выполнить некоторый анализ данных об изменениях / удалениях и т. д.,Мы также хотим проверить «добавленные новые элементы», но это легко из временной отметки и не влияет на аспект истории.Мне нужно было по-разному спроектировать каждый из вышеперечисленных пунктов, и я хотел знать, как лучше всего подойти к проблеме, т. Е. Как лучше всего справиться с чем-то подобным в корпоративных приложениях.Я хотел, чтобы сообщество провело его, чтобы получить некоторые предложения / указания / преимущества для некоторых подходов.Новые / другие лучшие подходы приветствуются!
Я просмотрел несколько постов по SO, и они кажутся специфичными для БД, но не обязательно отвечают на мой вопрос напрямую - они говорят мне, как для первого варианта, но не обязательно, является ли это хорошим способомДля этого: Рекомендации по отслеживанию истории данных и Как отслеживать изменения данных в таблице базы данных
PS: я не использую ORM, а скореесобирается с весны JDBC.Было решено, что ORM не стоит того ...