H2 自动混合模式是从不同客户端访问网络共享上的数据库的正确方法吗?

Posted

技术标签:

【中文标题】H2 自动混合模式是从不同客户端访问网络共享上的数据库的正确方法吗?【英文标题】:Is the H2 automatic mixed mode the correct way to access a database on a network share from different clients? 【发布时间】:2013-08-12 08:30:24 【问题描述】:

我有和这个相同的场景:H2 Database multiple connections。这是经典的“网络共享上的 Microsoft Access 数据库”方法。

我有一个应用程序应该安装在局域网内的多个客户端上。在安装过程中,系统会要求用户提供网络共享上的数据库位置。

我想避免单独安装数据库服务器/服务。在最简单的情况下,用户只需在两台计算机上安装应用程序,两台计算机都可以访问公共网络共享(可以位于第三台计算机/服务器上)。

现在在我看来,automatic mixed mode 是我正在寻找的东西,但我不太确定。我主要是为了确认我的理解,因为文档中没有明确说明。

那么,AUTO_SERVER 模式是从运行在同一 LAN 内不同机器上的多个客户端连接到位于网络共享上的 H2 数据库的正确(预期/最佳)方式吗?

或者我完全错了,这是我根本不应该尝试的事情吗?

感谢您的宝贵时间。

【问题讨论】:

这就是我阅读it的方式;尝试一下似乎无害。 【参考方案1】:

您有多种选择:

The automatic mixed mode. The 'serialized' file locking mode. The server mode (explicitly starting a server).

【讨论】:

谢谢!我不知道序列化文件锁定模式。与自动混合模式相比,一个优势可能是即使 LAN 客户端都启用了防火墙,它也应该可以工作。或者在自动混合模式下这不是问题? 防火墙设置是自动混合模式的问题。但是,请注意“序列化”模式是有问题的,它依赖于文件锁定,而且是实验性的。我刚刚听说这个功能可能会在 H2 的未来版本中消失。 嗯,好吧,所以“序列化”模式是新的,但同时被弃用了......似乎自动混合模式是我最好的选择,除了防火墙有问题。 是的,“序列化”模式是一种尝试,但在实践中并没有那么好。 在 auto_server 模式下,数据库 url 是什么。如果我想从两台或多台不同的计算机连接?【参考方案2】:
#Please find the full configuration: one should remember that if one has to run in server #and persistent mode with in spring boot application, the database file should be created #in advance. other wise create db file and place the location and start the h2 in server #mode

#Datasource Configuration
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:c:/data/studentdb;AUTO_SERVER=TRUE;AUTO_SERVER_PORT=8043;AUTO_RECONNECT=TRUE;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1;
spring.datasource.username=sa
spring.datasource.password=sa

#JPA Configuration
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect

#Connection Pool Configuration
spring.datasource.hikari.connection-timeout=20000
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.maximum-pool-size=12
spring.datasource.hikari.idle-timeout=300000
spring.datasource.hikari.max-lifetime=1200000

#H2 Web Console
#spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.h2.console.settings.trace=false
spring.h2.console.settings.web-allow-others=true

【讨论】:

以上是关于H2 自动混合模式是从不同客户端访问网络共享上的数据库的正确方法吗?的主要内容,如果未能解决你的问题,请参考以下文章

混合模式下使用 H2 数据库的 Jackrabbit 集群

H2 功能特点

H2 功能特点

Firebird相当于H2混合模式和序列化模式?

轻松读懂公有云私有云和混合云区别在哪

详解NFS-----共享存储服务