我遇到以下问题: 两个不同系统上的应用程序的两个实例应共享一个小型数据库。 主要问题是两个系统只能通过网络文件夹交换数据。 我没有可能在某处设置数据库服务器。H2数据库多连接
是否可以在网络文件夹中放置一个H2数据库并让两个实例连接到数据库(同时)?
如果我禁用文件锁定,我可以使用嵌入模式将两个实例连接到数据库,对吧? 实例可以对数据库执行READ或INSERT操作。我使用多个并发嵌入式连接风险数据损坏吗?
我遇到以下问题: 两个不同系统上的应用程序的两个实例应共享一个小型数据库。 主要问题是两个系统只能通过网络文件夹交换数据。 我没有可能在某处设置数据库服务器。H2数据库多连接
是否可以在网络文件夹中放置一个H2数据库并让两个实例连接到数据库(同时)?
如果我禁用文件锁定,我可以使用嵌入模式将两个实例连接到数据库,对吧? 实例可以对数据库执行READ或INSERT操作。我使用多个并发嵌入式连接风险数据损坏吗?
也可以打开数据库,而文件锁定;在这个 的情况下,它是由应用程序来保护数据库文件。 未能这样做会导致数据库损坏。
我认为,如果你的应用程序总是使用相同的配置(网络文件夹共享文件数据库),你需要创建一个管理并发
应用层我有同样的问题,我发现文档中的解决方案。它可以在; http://h2database.com/html/features.html#auto_mixed_mode
多个进程可以访问同一个数据库,而无需手动启动服务器。为此,请向数据库URL追加; AUTO_SERVER = TRUE。您可以使用相同的数据库URL,而不管数据库是否已经打开。此功能不适用于内存数据库。
// Application 1:
DriverManager.getConnection("jdbc:h2:/data/test;AUTO_SERVER=TRUE");
// Application 2:
DriverManager.getConnection("jdbc:h2:/data/test;AUTO_SERVER=TRUE");
我读到这了,但我还读一些有关表级锁的支持。我是否正确表锁定仅用于客户端/服务器模式?对于多个嵌入式连接,实现我自己的锁定机制是唯一的选择? – Dirk
如果您可以运行服务器,则管理表级锁定。但是没有它,你必须实现一个你自己的机制 –
实际上,即使在嵌入式和内存中模式下,如果打开多个连接到数据库(在同一进程中),表级锁也是默认使用的。 –