db_rules revision 6b85b14c920fce30fead7fa9611a92d43b30876b
Here is a more formal statement of the important database design
rules. Each rule is given a 5 character mnemonic for referral
convenience.
Reference Safety [DBREF]
1) Any node reference retrieved from the database shall remain
valid until discarded by the caller.
2) Any rdataset retrieved from the database shall remain valid,
with its rdata contents unaltered, until it has been discarded
by the caller.
Basic Versioning [DBVER]
The rdata contents of a committed version do not change.
Database Future Version [DBFUV]
1) Zone databases may have at most one open future version.
2) When committed, the future version becomes the current version.
3) Until it is committed, the future version changes may be
rolled back.
Node Lookups [DBNLU]
XXX
Zone Node Lookups [DBZNL]
A node zone lookup returns the requested node, if it exists, in the
version specified, or DNS_R_NONEXISTENT otherwise.
Zone Rdataset Lookups [DBZRL]
A zone lookup returns the requested data, if any, in the
version specified, or DNS_R_NONEXISTENT otherwise.
Cache Node Lookups [DBCNL]
1) A node lookup shall return a handle to the desired node,
if it exists.
2) If there is a negative caching entry for the desired node,
DNS_R_NONEXISTENT shall be returned.
3) If the desired node does not exist, and there is not a
negative caching entry, DNS_R_UNKNOWN shall be returned.
Cache Rdataset Lookups [DBCRL]
1) A cache lookup returns the most recently written data
(if any).
2) If there is a negative caching entry for the desired data,
DNS_R_NONEXISTENT shall be returned.
3) If the requested data does not exist, and there is not a
negative caching entry, DNS_R_UNKNOWN shall be returned.
Cache Updates [DBCUP]
Concurrent attempts to update the same rdataset type of a given
node must appear to execute in some order.