Skip to main content

monetdb migration tool

Project description

mroll ci

Mroll migration tool

mroll has been designed to aid MonetDB users with managing database migrations. The functionality covers both roll forward and backward migration functionality. Although you can deploy mroll from any point in time onwards, it is advised to use it from day one, i.e. the creation of the database. mroll has been used internally to manage the continuous integration workflow of MonetDB.

Install

Install mroll from PyPi

$ pip install mroll

Synopsis

The command synopsis summarizes the functionality.

$ mroll --help
Usage: commands.py [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...

Options:
  --help  Show this message and exit.

Commands:
  config    Set up mroll configuration under $HOME/.config/mroll
  history   Shows applied revisions.
  init      Creates mroll_revisions tbl.
  revision  Creates new revision from a template.
  rollback  Downgrades to previous revision by default.
  setup     Set up work directory.
  show      Shows revisions information.
  upgrade   Applies all revisions not yet applied in work dir.
  version   Shows current version

Each command may come with some options, explained by the --help addition. For example, the location of the migration directory can be specified when you install mroll with an option --path option to specify location. For an example, --path "/tmp/migration" location.

To update/set mroll configuration use the config command. For example to update configuration setting for working directory path run.

mroll config -p <workdir_path>

Usage

To illustrate the functionality we walk you through the steps to get a MonetDB database, called demo, created and managed. We assume you have downloaded mroll (see below) and are all set to give it a try.

Setup

mroll needs a working directory for each database you want to manage. There is no restriction on its location, but you could keep the migration scripts in your application folder, e.g. .../app/migrations. From the .../app directory issue the command:

$ mroll setup
ok

A subdirectory migrations is being created to manage migrations versions.

Configuration

mroll needs information on the database whereabouts and credentials to initiate the migration steps. Make sure you have already created and released the demo database using the monetdb tools. Then complete the file migrations/mroll.ini to something like:

[db]
db_name=demo
user=monetdb
password=monetdb
port=50000

[mroll]
rev_history_tbl_name = mroll_revisions

The final step for managing the migrations is

$ mroll init

Define the first revision

The empty database will be populated with a database schema. For this we define a revision. Revision names are generated

$ mroll revision -m "Initialize the database"
ok
$ mroll show all_revisions
<Revision id=fe00de6bfa19 description=Initialize the database>

A new revison file was added under /tmp/migrations/versions. Open it and add the SQL commands under -- migration:upgrade and -- migration:downgrade sections. Be aware that you may have to wrap the commands within transaction brackets.

vi migrations/versions/
-- identifiers used by mroll
-- id=fe00de6bfa19
-- description=create tbl foo
-- ts=2020-05-08T14:19:46.839773
-- migration:upgrade
	create table foo (a string, b string);
	alter table foo add constraint foo_pk primary key (a);
-- migration:downgrade
	drop table foo;

Then run "upgrade" command.

$ mroll upgrade
Done

Inspect what has being applied with "history" command

$ mroll history
<Revision id=fe00de6bfa19 description=create tbl foo>

To revert last applied revision run the rollback command. That will run the sql under migration:downgrade section.

$ mroll rollback 
Rolling back id=fe00de6bfa19 description=create tbl foo ...
Done

Development

Developer notes

mroll is developed using Poetry, for dependency management and packaging.

Installation for development

In order to install mroll do the following:

  pip3 install --user poetry
  PYTHON_BIN_PATH="$(python3 -m site --user-base)/bin"
  export PATH="$PATH:$PYTHON_BIN_PATH"

  git clone git@github.com:MonetDBSolutions/mroll.git
  cd mroll
  poetry install
  poetry run mroll/commands.py --help

Install project dependencies with

poetry install

This will create virtual environment and install dependencies from the poetry.lock file. Any of the above commands then can be run with poetry

poetry run mroll/commands.py <command>

Testing

Run all unit tests

make test

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mroll-0.2.0.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

mroll-0.2.0-py3-none-any.whl (14.8 kB view details)

Uploaded Python 3

File details

Details for the file mroll-0.2.0.tar.gz.

File metadata

  • Download URL: mroll-0.2.0.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.7.6 Linux/5.5.15-200.fc31.x86_64

File hashes

Hashes for mroll-0.2.0.tar.gz
Algorithm Hash digest
SHA256 3e8931b79cafadbb296b082b0fa53145e7a7554cdea6cd5ea5533dc1ba48b242
MD5 1ab04fda95ca063ca649c918bf7feb95
BLAKE2b-256 11826a911c0ad1c15bf8b1bf2a0745e2dd1ba175caee6f1b25a4b33a184dcf7f

See more details on using hashes here.

File details

Details for the file mroll-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: mroll-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 14.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.7.6 Linux/5.5.15-200.fc31.x86_64

File hashes

Hashes for mroll-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b5f076aa369af8f64bf7dc8ea6826e4349acf3150f455d4833f4489a2a74e0c2
MD5 01a75a6dbad19fc098360ac18c9bcb4f
BLAKE2b-256 e3b714801292e140dd9f4e2761152bdaccc9c23e2300f04c2bf325705e29b04b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page