All Projects → KuliginStepan → mongration

KuliginStepan / mongration

Licence: Apache-2.0 License
MongoDB data migration tool for Spring Boot projects

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to mongration

mgmigrate
mgmigrate is a tool for migrating data from MySQL or PostgreSQL to Memgraph and between Memgraph instances.
Stars: ✭ 17 (-19.05%)
Mutual labels:  migration, migration-tool
toggl2clockify
Migrate data from toggl to clockify
Stars: ✭ 21 (+0%)
Mutual labels:  migration, migration-tool
maildir2gmail
Maildir 2 Gmail
Stars: ✭ 14 (-33.33%)
Mutual labels:  migration, migration-tool
butterfly
Application transformation tool
Stars: ✭ 35 (+66.67%)
Mutual labels:  migration, migration-tool
Migrate2Postgres
Easily migrate from other DBMSs to PostgreSQL
Stars: ✭ 47 (+123.81%)
Mutual labels:  migration, migration-tool
hasura-metadata-patcher
CLI tool to patch Hasura metadata json file. Helps to organize complex CI/CD flows through different environments.
Stars: ✭ 14 (-33.33%)
Mutual labels:  migration, migration-tool
rails async migrations
Asynchronous support for ActiveRecord::Migration
Stars: ✭ 56 (+166.67%)
Mutual labels:  migration
plow
👨‍🌾 Postgres migrations and seeding made easy
Stars: ✭ 13 (-38.1%)
Mutual labels:  migration
SP Hauler
Copy Libraries and Lists Content between ANY Version of SharePoint (SP2010/SP2013/SP2016/SPOnline).
Stars: ✭ 21 (+0%)
Mutual labels:  migration-tool
gitlab to gitea
Gitlab to Gitea migration script.
Stars: ✭ 54 (+157.14%)
Mutual labels:  migration
management-sdk
GraphCMS Management SDK
Stars: ✭ 43 (+104.76%)
Mutual labels:  migration-tool
carpenter
Carpenter is a tool to manage DB schema and data
Stars: ✭ 41 (+95.24%)
Mutual labels:  migration
illuminate
Yii2 to Laravel Migration Package
Stars: ✭ 71 (+238.1%)
Mutual labels:  migration
laravel-online-migrator
Apply Laravel's database migrations with minimal disruptions using tools like Percona Online Schema Change
Stars: ✭ 43 (+104.76%)
Mutual labels:  migration
carry
Python ETL(Extract-Transform-Load) tool / Data migration tool
Stars: ✭ 115 (+447.62%)
Mutual labels:  migration
Squeaky-Android
Appropriately lightweight database creations and migrations with SQLite on Android
Stars: ✭ 34 (+61.9%)
Mutual labels:  migration
ocp-flyway-db-migration
Database Migration Sample with Flyway, Docker and Kubernetes in Openshift Container Platform
Stars: ✭ 17 (-19.05%)
Mutual labels:  migration
esm
An Elasticsearch Migration Tool.
Stars: ✭ 669 (+3085.71%)
Mutual labels:  migration
archelix-rsql
This library brings the convenience of SQL declarative nature to restful APIs in the form of RSQL but without the danger of sql injection by using a typesafe mapping of allowed field paths defined via integration with querydsl library. Like sql, it supports clauses such as select, filter, pagination and sorting that can easily be represented in …
Stars: ✭ 35 (+66.67%)
Mutual labels:  spring-data-mongodb
loopback-component-migrate
Migration framework for loopback
Stars: ✭ 43 (+104.76%)
Mutual labels:  migration

CircleCI Codacy Badge codecov Maven Central Licence

Mongration

MongoDB data migration tool for Spring Boot projects

Key features

  • Support Spring Boot lifecycle
  • Changelogs are regular spring beans
  • Support MongoDB transactions
  • Support ReactiveMongoTemplate

Getting started

Add a dependency

Maven

<dependency>
  <groupId>com.github.kuliginstepan</groupId>
  <artifactId>mongration</artifactId>
  <version>version</version>
</dependency>

Gradle

compile("com.github.kuliginstepan:mongration:version")

or

implementation 'com.github.kuliginstepan:mongration:version'

Configuration properties

  • mongration.enabled – enable or disable mongration. Default to true
  • mongration.changelogs-collection – collection for saving changesets. Defaults to mongration_changelogs
  • mongration.mode – mode for executing changesets. Defaults to AUTO, means that mongration will try to analyze changesets to choose proper mode. Possible modes are IMPERATIVE, REACTIVE

Changelog

To mark class as a changelog you need to annotate it with @Changelog. This annotation makes class regular spring bean. @Changelog has property id, which is a simple class name by default.

Changeset

To mark method as a changeset you need to annotate it with @Changeset. By default changeset's id is a method name. Changelog collection has compound unique index @CompoundIndex(def = "{'changeset': 1, 'changelog': 1}", unique = true) to check if changeset executed or not.

You can inject all beans available in bean factory as a changeset's method arguments.

Imperative changeset method must have void return type and reactive changeset method must returns Mono<Void>.

If you configured MongoDB and Spring to enable transaction support, changesets may be executed in transactions.

Indexes

Spring Mongo Data 2.2 provides a way to disable automation indexes creation. It's recommended to set spring.data.mongodb.auto-index-creation to false. Mongration creates indexes for all persistent entities after execution changesets.

Spring Boot Actuator

Mongration provides actuator endpoint mongration, which lists all executed changesets.

Migration from old versions

  • drop changelog table
  • remove all executed changesets
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].