docs: recommend using PostgreSQL for development (over SQLite)
This changes all documentation to discourage people from using SQLite (even for
development) and recommends to use PostgreSQL instead. The docs are updated to
include setup instructions for PostgreSQL as a podman container, and adds
guidance how to control it, back it up, etc.
The motivation for this change is that I encountered serious issues when
adjusting DB scheme (including writing Alembic scripts) with an SQLite DB.
Operations like editing a column, removing a column, or changing constraints
fail with SQLite. Some of those issues can be worked around with a "batch" mode
of Alembic, some can't. Even worse, the Alembic scripts' autogeneration seems to
be related to the currently running DB. So even if you make sure something works
locally, it might not work in production. It is therefore important to develop
these changes with the same DB as in production. Furthermore, database upgrades
(executed automatically when detected) might fail on SQLite, which means the
developer needs to wipe away whole DB and create it from scratch.
It would be possible to keep using SQLite for development where DB schema is not
changed, and add some hints when DB upgrades fail. However, with simple enough
instructions for installing and managing PostgreSQL, it seemed unnecessary to
keep officially supporting both options. Having just a single option makes
things simpler and safer, and the new documentation should help people not
familiar with PostgreSQL.
Merges: https://pagure.io/fedora-qa/blockerbugs/pull-request/193