In article <mailman.551.1365861813.3114.python-l...@python.org>, Chris Angelico <ros...@gmail.com> wrote:
> 2) The database engine must employ some form of write-ahead log. > [...] > one way or another, there must be a way to detect half-done > transactions. > > 3) The operating system and filesystem must support a forced file > synchronization (fsync/fdatasync), so the database engine can wait for > the data to be written to disk. > > 4) The underlying media (hard disk, SSD, USB stick, etc) must respond > to the fsync call by actually writing the content to persistent > storage before returning. Some of the early Unix file systems were very fragile. One of the (often under-appreciated) major advances in BSD (it was certainly in 4.2, not sure how much earlier) was a new filesystem which was much more robust in the face of hardware failures and system crashes. Prior to BSD, the on-disk data could be left in an inconsistent state if the system crashed at the wrong time. In BSD, data was written to disk in such a way that every operation could either be backed out cleanly or had enough information to complete the transaction. -- http://mail.python.org/mailman/listinfo/python-list