
Niall Douglas wrote:
Consistency is time invariant. If two transactions each affect totally unrelated data, if B was committed after A in time originally then during recovery if B was recoverable but A was not, B is indeed recovered without A.
You can define it to be time-invariant if you assume that all invariants of the data are contained in the database and none are external to it; or, in other words, that the state "B without A" can never be considered inconsistent by the outside world if it's not described as inconsistent in the invariants the database knows about. Or in yet other words, you assume that the database knows which data are related and which unrelated, and that none of this knowledge is external to it. We could argue whether this definition is sensible or not, but it doesn't even matter in this context. NuDB doesn't contain any such knowledge, as far as I can see, and therefore can't assume anything about the unrelatedness of A and B. Whether B references A is not known to it, so it must assume that it does.