Yes, @marc, at this moment, I’m thinking of associating a schema version with each entity property. Whenever we do a release that changes the schema, we will keep a backup of any existing value at that time; that way, we can roll back to a known good state if necessary. We’ll probably keep a history of about 10 such backup versions. It also means that we can work with a legacy schema if we don’t automatically migrate all data at the time of the release of a new version of our product.
As a separate matter, we’re considering keeping a history of changes that the user makes to their data, stored as entity properties. For that, we’ll need to associate not just a schema version, but also a data version with each entity property. By my calculation, we can store a history of about 50 changes to our main entity property (a risk assessment) without blowing the entity property value size limit of 32768 bytes. I need to do some more thinking about when we write to that history: is it written automatically at every change that the user makes, or will we let the user determine when to explicitly save a ‘baseline’?
Would you share any thought that you have?