java在一个JVM中有多个独立的H2数据库
是否可以在JVM中启动和关闭多个H2数据库
我的目标是通过为每个用户/帐户提供自己的数据库来支持multi-tenancy。每个帐户都只有很少的数据。账户之间的数据从不一起访问、比较或分组;每个账户都是完全独立的。每个帐户每天只能短暂访问一次或每月访问几次。因此,将数据存储在一个数据库中没有什么好处,也有一些严重的缺点
所以我的想法是,当用户为某个特定帐户登录时,该帐户的数据库将被加载。当该用户注销或其web应用程序会话(Vaadinapp)超时时,该帐户的数据库将关闭,其数据将刷新到存储,并且可能会执行备份。任何数量的数据库都会同时打开和关闭
好处包括:在任何时候将用于缓存数据和索引的内存量降至最低,将锁定和其他争用降至最低,并允许平滑扩展
我是H2新手,所以我不确定它的体系结构是否能够支持这一点。我要求否认或确认此功能,以及任何提示或警告
# 1 楼答案
是的,这是可能的。每个数据库将包含自己的小环境,数据库之间不可能存在污染
例如,可以基于用户id或用户登录名使用jdbc url:
只要操作系统允许,您可以对数据库名称使用任何命名约定:user1、user2等。。。或者真正的登录名
提示:
注意事项:
有关url参数的疑问,请参阅H2 manual