Why an embedded SQL database, instead of Berkeley DB?
• There is a nice little command-line tool to manipulate databases by hand. You should never have to use it, but it is good to know it is there in emergencies. • Sqlite is actually smaller and simpler than Berkeley DB, as it has far fewer adjustable knobs and modes of operation. • SQL has a much richer data vocabulary built-in (tuples, uniqueness constraints, joins, indices, sorts, globs, unions, intersections, etc.) • Sqlite keeps to a single file, rather than a directory of files. • The SQL command stream is ASCII; we can (and do) log all database activity to the internal diagnostic buffer, which makes debugging very easy. • The state of the database can be dumped as a list of SQL statements, which (in extreme situations) can be edited and loaded back in. • It leaves the door open to retargeting monotone to a larger RDBMS without much effort, if it’s attractive to do so someday in the future.