Skip to content

Commit

Permalink
docs: ADR for alembic migrations
Browse files Browse the repository at this point in the history
  • Loading branch information
Ian2012 committed Jul 5, 2023
1 parent 7419e12 commit fb15024
Showing 1 changed file with 43 additions and 0 deletions.
43 changes: 43 additions & 0 deletions docs/decisions/0007_clickhouse_migrations.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
7. Alembic migrations for Aspects
#################################

Status
******

Accepted

Context
*******

Alembic is a migration tool for SQLAlchemy. It is used to manage the clickhouse database
schema for the Aspects project.

For more information about Alembic, see https://alembic.sqlalchemy.org/en/latest/

Decisions
*********

#. There should be a single initial SQL executed at initialization time. This will
create the databases, users and permissions, and any other necessary setup before
running migrations.
#. Migrations are executed with RAW SQL using the ``op.execute`` method. This allows
us to use ClickHouse-specific SQL syntax.
#. Migrations should always define a downgrade step, even if it is a no-op.
#. Migrations are generated using a Sequential ID. This allows us to easily identify
the order in which migrations were created and executed.
#. Migrations cannot be modified once they are released to production. If a migration
needs to be modified, a new migration should be created with a new sequential ID.

Consequences
************

* Users should not run migrations manually. They should be run automatically by Tutor
when the LMS is started.

Rejected Alternatives
*********************

**Clickhouse SQL Alchemy Models**

Model allows us to automagically create tables and columns in Clickhouse. However, it is
not well supported and we didn't find any benefits over raw SQL migrations.

0 comments on commit fb15024

Please sign in to comment.