As a database storage engine, the SSM provides the atomicity, consistency, isolation, and durability (often referred to as ACID) properties associated with transactions. More information on transaction processing issues can be found in the book Transaction Processing: concepts and techniques [GR93].
A transaction is an atomic set of operations on records, files, and indexes. The manual page transaction(ssm) describes methods for beginning, committing and aborting transactions. Updates made by committed transactions are guaranteed to be reflected on stable storage, even in the event of software or processor failure. Updates made by aborted transactions are rolled back and are not reflected on stable storage.
Although nested transactions are not provided at this time, the notion of save-points are. Save-points delineate a set of operations that can be rolled back without rolling back the entire transaction. The interface is described in transaction(ssm).
Transactions are also a unit if isolation. Locking is provided by the SSM as a way to keep a transaction from seeing the effect of another, uncommitted transaction. Normally, locks are implicitly acquired by operations that access or modify persistent data structures, but the SSM interface also provides methods for locks to be acquired explicitly. See lock(ssm) for details.
The SSM uses a standard hierarchical, two-phase locking protocol [GR93]. For a file, the hierarchy is volume, file, page, record (slot number); for an index, it is volume, index, key-value.
Chained transactions are also provided. Chaining involves committing a transaction, retaining its locks, starting a new transaction and giving the locks to the new transaction.