All Projects → michael-simons → neo4j-migrations

michael-simons / neo4j-migrations

Licence: Apache-2.0 license
Automated script runner aka "Migrations" for Neo4j. Inspired by Flyway.

Programming Languages

java
68154 projects - #9 most used programming language
Cypher
3 projects

Projects that are alternatives of or similar to neo4j-migrations

graphql
A GraphQL to Cypher query execution layer for Neo4j and JavaScript GraphQL implementations.
Stars: ✭ 397 (+384.15%)
Mutual labels:  neo4j
dot
distributed data sync with operational transformation/transforms
Stars: ✭ 73 (-10.98%)
Mutual labels:  versioning
DBTestCompare
Application to compare results of two SQL queries
Stars: ✭ 15 (-81.71%)
Mutual labels:  database-migrations
versio
A version number manager
Stars: ✭ 63 (-23.17%)
Mutual labels:  versioning
CyFHIR
A Neo4j Plugin for Handling HL7 FHIR Data
Stars: ✭ 39 (-52.44%)
Mutual labels:  neo4j
neo4j doc manager
Doc manager for Neo4j
Stars: ✭ 95 (+15.85%)
Mutual labels:  neo4j
dotnet-setversion
.NET Core CLI tool to update the version information in .NET Core *.csproj files
Stars: ✭ 61 (-25.61%)
Mutual labels:  versioning
elixir ravelry
Elixir API using Neo4j database for ElixirConf 2017 talk
Stars: ✭ 21 (-74.39%)
Mutual labels:  neo4j
flyway-ant
Flyway Ant tasks
Stars: ✭ 14 (-82.93%)
Mutual labels:  database-migrations
sqflite migration
Library to manage sqlite db migrations.
Stars: ✭ 40 (-51.22%)
Mutual labels:  database-migrations
neo4j-jdbc
JDBC driver for Neo4j
Stars: ✭ 110 (+34.15%)
Mutual labels:  neo4j
Android-Dependencies
Project wide handling of tested and used libraries. Also including some utility gradle tasks.
Stars: ✭ 14 (-82.93%)
Mutual labels:  versioning
migrant
Migration management for PostgreSQL/SQLite/MySQL
Stars: ✭ 85 (+3.66%)
Mutual labels:  database-migrations
migrations
Migrations is a database migration tool that uses go's database/sql from the standard library
Stars: ✭ 17 (-79.27%)
Mutual labels:  database-migrations
upscheme
Database migrations and schema updates made easy
Stars: ✭ 737 (+798.78%)
Mutual labels:  database-migrations
migrate
A simple database migration tool.
Stars: ✭ 38 (-53.66%)
Mutual labels:  database-migrations
gradle-semantic-build-versioning
Gradle plugin to generate version-numbers and tags using semantic versioning
Stars: ✭ 19 (-76.83%)
Mutual labels:  versioning
plume
Plume is a code property graph analysis library with options to extract the CPG from Java bytecode and store the result in various graph databases.
Stars: ✭ 53 (-35.37%)
Mutual labels:  neo4j
OGMNeo
[No Maintenance] Neo4j nodeJS OGM(object-graph mapping) abstraction layer
Stars: ✭ 54 (-34.15%)
Mutual labels:  neo4j
ongeza
An automated way to follow the Semantic Versioning Specification
Stars: ✭ 36 (-56.1%)
Mutual labels:  versioning

Neo4j-Migrations

Neo4j-Migrations is a database migration and refactoring tool that allows running Cypher scripts and programmatic refactorings in a controlled and repeatable fashion against one or more Neo4j database.

Neo4j-Migrations is a proud member of the Neo4j-Labs and maintained by authors of the Neo4j-Drivers- and SDN/OGM team.

badge measure?project=eu.michael simons measure?project=eu.michael simons badge

Introduction

Neo4j-Migrations are a set of tools to make your schema migrations as easy as possible. They provide a uniform way for applications, the command line and build tools alike to track, manage and apply changes to your database, in short: to refactor your database. The project is inspired to a large extent by FlywayDB, which is an awesome tool for migration of relational databases. Most things evolve around Cypher scripts, however the Core API of Neo4j-Migrations allows defining Java classes as migrations as well.

Neo4j-Migrations builds directly on top of the official Neo4j Java driver, supports Neo4j 3.5, Neo4j 4.1 to 4.4 and Neo4j 5, including enterprise features such as multidatabase support and impersonation.

The only dependencies are said driver and ClassGraph, the latter being used to find migrations on the classpath.

The history of migrations applied is stored as a subgraph in your database.

The graph will look like this:

chain of migrations

Downloads

Binary downloads for the CLI are available on our release page for each version. Maven artifacts are available on central under the following coordinates:

  • Core API: eu.michael-simons.neo4j:neo4j-migrations:2.0.2

  • Spring-Boot-Starter: eu.michael-simons.neo4j:neo4j-migrations-spring-boot-starter:2.0.2

  • Quarkus extension: eu.michael-simons.neo4j:neo4j-migrations-quarkus:2.0.2

  • Maven-Plugin: eu.michael-simons.neo4j:neo4j-migrations-maven-plugin:2.0.2

The quickest way to use the CLI is JBang. With JBang installed, just enter jbang neo4j-migrations@neo4j --help to get started. Other options include Homebrew and Zip bundles. Please checkout the full list of download options.

Compatibility

Neo4j-Migrations can be used against Neo4j 3.5, all Neo4j 4 versions from 4.1 up to 4.4 and Neo4j 5, including all current Neo4j-Aura versions.

Note
Neo4j 4.0 is only partially supported since version 2.0 due to the fact that Neo4j Java Driver does not support it fully anymore since 5.x. If you need to use this library with Neo4j 4.0 (which you shouldn’t, because 4.0 is out of support anyway), look at the latest 1.x version of Neo4j-Migrations.

The Core API and the JVM based version of the CLI module of Neo4j-Migrations requires at least Java 17 or higher since version 2.0. Neo4j-Migrations can safely be used on both the class- and module-path. Native binaries are provided for 64bit versions of macOS, Linux and Windows. The native binaries don’t require a JVM to be installed.

For a version compatible with JDK 8, check the 1.x releases. We still do maintain the latest minor, including support for older versions of Spring Boot (prio to Spring Boot 3). These are also the versions you should be using against Neo4j 4.0.

The older releases of Neo4j-Migrations are compiled with JDK 17 while targeting JDK 8. The Core API is provided as a Multi-Release-Jar in the older releases, providing a module-info.java for JDK 11 and higher, making it a good citizen on the Java module path as well.

While the CLI module actually does not require a JVM installed (it is a native binary, available for a Linux, macOS and Windows alike), some people might prefer a solution native to their ecosystem. The following projects serve the same purpose as Neo4j-Migrations and use the same graph, check-summing and versioning scheme as this project:

If you want to be listed here too, please reach out, and we can collaborate to ensure compatibility.

Manual

The complete manual is available here: michael-simons.github.io/neo4j-migrations. The API documentation for the core module is available here: Neo4j Migrations (Core) 2.0.2 API.

Presentations and features

We try to promote this project as good as we can internally and externally while trying not to be too obtrusive. If you think it’s a good idea to talk about it at your conference, just ask. Happy to answer CfPs. We are grateful about the coverage, presentations and features so far:

CLI in a nutshell

cli demo
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].