简介

关于

Neo4j-Migrations 是一套工具,旨在使您的模式迁移尽可能简单。它们为应用程序、命令行和构建工具提供了一种统一的方式来跟踪、管理和应用对数据库的更改,简而言之:重构数据库。该项目在很大程度上受到 FlywayDB 的启发,FlywayDB 是一个用于迁移关系数据库的出色工具。大多数功能都围绕 Cypher 脚本展开,但是 Neo4j-Migrations 的核心 API 也允许将 Java 类定义为迁移。

Neo4j-Migrations 直接建立在官方的 Neo4j Java 驱动程序 之上,支持 Neo4j 3.5、Neo4j 4.1 到 4.4 以及 Neo4j 5,包括企业功能,例如多数据库支持和模拟身份。

唯一的依赖项是该驱动程序和 ClassGraph,后者用于在类路径上查找迁移。

应用的迁移历史存储为数据库中的一个子图。

兼容性

Neo4j-Migrations 仅针对 Neo4j(全球领先的图数据库)进行了测试。Neo4j-Migrations 需要 5.2+ 版本的 Neo4j Java 驱动程序。因此,Neo4j-Migrations 与 Neo4j 3.5、4.1 - 4.4、5 以及 Neo4j-Aura 兼容。它也可以与嵌入式实例一起使用,只要嵌入式实例也提供 Bolt 连接器。该工具可能与使用 Bolt 协议的其他数据库兼容,也可能不兼容。我们不对这些提供任何支持。

Neo4j-Migrations 的核心 API 和基于 JVM 的 CLI 模块版本从 2.0 版本开始至少需要 Java 17 或更高版本。Neo4j-Migrations 可以安全地用于类路径和模块路径。为 macOS、Linux 和 Windows 的 64 位版本提供了原生二进制文件。原生二进制文件不需要安装 JVM。

对于与 JDK 8 兼容的版本,请查看 1.x 版本。我们仍然维护最新的小版本,包括对旧版本 Spring Boot(优先于 Spring Boot 3)的支持。这些也是您应该针对 Neo4j 4.0 使用的版本。

Neo4j-Migrations 的旧版本使用 JDK 17 编译,但目标是 JDK 8。核心 API 在旧版本中以 Multi-Release-Jar 的形式提供,为 JDK 11 及更高版本提供 module-info.java,使其在 Java 模块路径上也是一个合格的成员。

版本

Neo4j-Migrations 1.0.0 被认为是稳定的,并于 2021 年 11 月首次发布。从那时起,我们确保 语义版本控制。这意味着如果您直接使用 Java API,您可以确信修补版本不会破坏您的应用程序,并且您始终可以升级。

模块

Neo4j-Migrations 提供了多种形式

核心

核心模块,提供一个 API 来运行 Cypher 脚本和基于 Java 的迁移。API 包括用于配置的构建器。当然,Neo4j-Migrations 在模块路径上运行,并且还具有明确、正确的模块定义,具有清晰的 API 边界。此外,我们确实利用了密封接口来处理那些仅供我们自己实现的内容。

CLI

一个命令行工具,支持核心模块提供的每一个交互。原生二进制文件适用于 Linux、macOS 和 Windows。如果您想在 CLI 中使用基于 Java 的迁移,则必须使用 JVM 发行版。这是一个理想的工具,可以放入不基于 Maven 或 Gradle 的 CI/CD 中。

Spring-Boot-Starter

通过众所周知的 Spring-Boot-Properties 机制提供所有配置选项,并将它们转换为一个完全配置的 Migrations 实例,该实例将在应用程序启动时应用。脚本将在理智的默认位置进行搜索。

Quarkus

Quarkus 的一个扩展,通过 Quarkus 的配置提供所有配置选项的完全集成。创建一个启动观察者,在启动时应用所有解析的迁移。

Maven-Plugin

一个 Maven 插件,将清理、应用和验证操作挂钩到适当的 Maven 生命周期中。使用它在构建过程中应用迁移。

变更日志

我们在 GitHub 上提供了完整的变更日志:Neo4j-Migrations。我们的提交遵循 常规提交。版本通过 JReleaser 创建和发布。

历史

Neo4j-Migrations 的最初想法是在将 Spring Data Neo4j(当时为 SDN/RX)集成到 JHipster 时产生的。我们需要一些节点、约束和关系存在于 Neo4j 数据库中,以便 JHipster 发挥其魔力,但当时还没有轻量级(在依赖项方面)的工具可以很好地与 Neo4j 4.0(第一个开箱即用提供反应式数据访问的图数据库)协作。Neo4j-Migrations 在 2020 年初填补了这一空白,并且一直在不断发展。

© . All rights reserved.