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.

vi tmp/migrations/versions/<rev_file>
-- 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>

For revisions overview use mroll show [all|pending|applied], mroll applied is equivalent to mroll history.

$mroll show applied
<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.3.3.tar.gz (17.3 kB view details)

Uploaded Source

Built Distribution

mroll-0.3.3-py3-none-any.whl (18.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mroll-0.3.3.tar.gz
  • Upload date:
  • Size: 17.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.8.5 Linux/5.6.14-300.fc32.x86_64

File hashes

Hashes for mroll-0.3.3.tar.gz
Algorithm Hash digest
SHA256 9af073440f9c7de127c0979b9e18a4937259adf6726205adb23094ef2c9da01c
MD5 bba97e4e5dc88ce0545e7485fcdefe94
BLAKE2b-256 070bcf9c7344c2215f54f46fd17cbdaed9a08c8224ed4baaf38f74b1dc970569

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mroll-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 18.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.8.5 Linux/5.6.14-300.fc32.x86_64

File hashes

Hashes for mroll-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0b9d789486f56c5026635bb708c8c9533bc9b8a9e567459b11f0da75be8b5b48
MD5 6df2c872f0c4cce4b5fbc67891697b65
BLAKE2b-256 9591d6ae3653162a38aa2800aaf0ac41cff0865665340efd546c70453c7da93f

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