any changes to the database that the transaction may have made must be undone. This requirement
holds regardless of whether the transaction itself failed (for example, if it divided
by zero), the operating system crashed, or the computer itself stopped operating.
As we shall see, ensuring that this requirement is met is difficult since some
changes to the database may still be stored only in the main-memory variables of
the transaction, while others may have been written to the database and stored
on disk. This “all-or-none” property is referred to as atomicity.