具有基于嵌入式文件的 H2 多租户数据库和手动迁移的 Spring 应用程序

Posted

技术标签:

【中文标题】具有基于嵌入式文件的 H2 多租户数据库和手动迁移的 Spring 应用程序【英文标题】:Spring application with embedded file based H2 multi tennant databases and manual migrations 【发布时间】:2021-02-19 09:16:07 【问题描述】:

我的用例和业务需求有点不寻常,请耐心等待 :)

我正在使用Spring boot 构建一个桌面应用程序。现在为了支持离线工作,它必须有一个基于本地文件的嵌入式数据库,但在这里它变得很棘手,因为客户端应用程序必须支持多个不同的用户,并且他们的数据不应该冲突( 意味着用户应该能够轻松地删除他们自己的特定数据库),因此它们应该被分隔在不同的数据库或模式中。 由于使用该应用程序的用户的数量或身份不是预先确定的模式或数据库,因此需要在登录操作时动态创建。在为用户迁移创建数据库/模式后,需要运行以创建适当的表并从服务器获取数据。

我已成功设置多租户应用程序,但只能设法使其与预定义的数据库一起使用。还有一个挑战是在运行时手动运行flyway 迁移。

我已经在网上搜索了参考资料,但没有运气

【问题讨论】:

【参考方案1】:

这应该有助于Run flyway migrations inside Java code during runtime。您现在可以选择在应用程序中的任意位置触发此操作,并将数据库/模式名称作为变量传递给您的 bean 方法

【讨论】:

谢谢,这似乎有助于解决 FlyWay 问题。

以上是关于具有基于嵌入式文件的 H2 多租户数据库和手动迁移的 Spring 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

H2 的休眠多租户问题:错误的架构

H2 嵌入式模式和软件崩溃

具有 ASP.NET Core 3.0 和 EF Core 的多租户应用程序

Flyway 与 Spring Boot 的集成不会在嵌入式 H2 数据库上执行迁移脚本

多租户:在Oracle12.2中 从Non-CDB迁移到PDB,从PDB迁移另一个CDB中

基于AdminLTE 多租户权限隔离