A few things I have learned:

  • DDL (Data Definition Language) varies significantly from one SQL implementation to another.
  • It is much easier and faster to maintain an application for a single database backend rather than across many.
  • libgda is great when you are designing an application specifically meant to manage arbitrary databases.
  • libgda is overkill when all you need is to maintain a simple, local embedded database.
  • SQLite is fast, lightweight, well-documented, and backed by an active IRC support community.
  • Keep database-related code restricted to as few source files as possible.
  • The SQLite source code is an excellent reference for understanding how to implement commands like .import.
  • Using Git (or any modern version control system) saves an enormous amount of time.