In our system, we need to be able to track the changes to our objects and to be able to generate a history file for each such object.
For the most part, this is straightforward: We can either create an archive for previous versions, or a Delta for each change (we are leaning toward the former). However, our DB also includes cross-reference tables, and we need to preserve these changes as well - if version 2 of an object is not connected to another object where version 1 was, then we need to be able to tell the difference.
This seems to suggest massive duplication of cross-reference data whenever anything in any versionable object changes. That doesn't seem scalable, especially since some objects are expected to change rather frequently. Is there a better way of doing this?