У нас есть достойное по размеру объектно-ориентированное приложение. Всякий раз, когда объект в приложении изменяется, изменения объекта сохраняются обратно в БД. Однако это стало менее идеальным.Каков наилучший способ хранения и поиска по объектным транзакциям?
В настоящее время транзакции хранятся как транзакция и набор транзакцийLI.
В таблице транзакций есть поля для тех, кто, что, когда, почему, foreignKey и foreignTable. Первые четыре не требуют пояснений. ForeignKey и foreignTable используются для определения того, какой объект изменился.
TransactionLI имеет временную метку, ключ, val, oldVal и идентификатор транзакции. Это в основном система хранения ключей/значений/oldValue.
Проблема в том, что эти две таблицы используются для каждого объекта приложения, поэтому теперь они довольно большие таблицы. Использование их для чего-либо происходит медленно. Индексы только помогают.
Итак, мы думаем о других способах сделать что-то подобное. Вещи, которые мы рассмотрели до сих пор: - Остановка этих таблиц чем-то вроде отметки времени. - Денормализация двух таблиц и объединение их в один. - Комбинация двух выше. - Выполнение чего-то вдоль линий сериализации каждого объекта после изменения и сохранения его в подрывной деятельности. - Возможно, что-то еще, но я не могу думать об этом прямо сейчас.
Вся проблема в том, что мы хотели бы иметь механизм надлежащего хранения и поиска по транзакционным данным. Да, вы можете принудительно подавать это в реляционную базу данных, но на самом деле это транзакционные данные и должны храниться соответственно.
Что делают все остальные?
какая у вас база данных? вы можете исследовать отслеживание изменений SQL в SQL 2008. Он не отслеживает ваши объекты, но будет отслеживать ваши изменения данных и их версию. – D3vtr0n 2008-12-04 02:14:23