Интеллектуальные способы хранения версионных копий таблиц в реляционной базе данных (вопросы программирования?) - PullRequest
1 голос
/ 20 июля 2009

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

Ответы [ 2 ]

3 голосов
/ 20 июля 2009

С этим я сталкиваюсь и в текущем проекте. Несколько хороших ответов здесь .

Я лично использую опцию # 1, добавляя столбец версии в pkey каждой "версионной" таблицы. FKeys также использует столбец версии. Мое основное внимание было уделено простоте запросов, что было связано с высокими требованиями к хранилищу. У меня есть возможность строго ограничить количество сохраняемых версий, что уменьшает эту проблему.

1 голос
/ 22 июля 2009

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

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

За все это есть штрафы за время, пространство и сложность. Но для нас, имеющих дело с крупными суммами денег, это того стоило.

...