HSQLDB 文件模式的快速切换替代方案(我现在需要并发访问)

Posted

技术标签:

【中文标题】HSQLDB 文件模式的快速切换替代方案(我现在需要并发访问)【英文标题】:A quick-switch alternative for HSQLDB file mode (I need concurrent access now) 【发布时间】:2009-08-26 00:31:29 【问题描述】:

我很高兴地使用 HSQLDB,我的数据库 URL 如下所示:

jdbc:hsqldb:file:target/testdb;

...拥有一切,就像我在任何其他网络数据库上一样。然后突然一个需求直接打在我的头上,我需要另一个 JVM 实例(在同一台机器上)连接到数据库以生成一些报告。

我已经阅读了有关 Derby 和 Berkeley DB 的信息,但似乎我需要设置一些环境变量,而我的客户要求我在没有任何特殊配置的情况下对这个系统进行编程(不应该创建任何环境变量)。

我曾想过有一个独立线程在服务器模式下并行启动 HSQL,但我更愿意使用另一个与 HSQLDB 一样简单但支持文件模式并发访问的数据库引擎。希望你们知道解决我问题的直接替代方法

【问题讨论】:

【参考方案1】:

SQLite 可能是一个不错的选择。见this SO question。

但是,我认为在服务器模式下运行 HSQL 可能是最简单的选择。几年前我就用过这种方式,发现它足够强大,可以进行基本的并发访问,您只需要在现有代码中更改 url。

【讨论】:

【参考方案2】:

与其拥有另一个数据库,不如在您的 in proc 数据库之间迁移和同步数据,您最好在单独的 JVM 中以服务器模式运行 HSQL。 这是how to [编辑: 固定死链接]

【讨论】:

【参考方案3】:

我建议您考虑一组可能的 JDBC 解决方案 -- 具体来说,考虑允许程序共享数据访问的解决方案:

    对同一文件的共享访问 到 DBMS 的单个套接字/连接 两个程序之间的消息传递

由于您希望开箱即用的 JDBC 支持(即您不想实现低于 JDBC 层的任何东西),我认为 #3 和 #1 已不在运行中。这给你留下了#2。

您是否有任何理由认为在单独的线程中启动 HSQL 会使您的 JDBC 调用变得不那么简单? HSQL 运行的位置不影响访问它的接口。

【讨论】:

以上是关于HSQLDB 文件模式的快速切换替代方案(我现在需要并发访问)的主要内容,如果未能解决你的问题,请参考以下文章

HSQLDB 的 MS SQL“唯一标识符”数据类型的替代方案是啥?

GCC libstdc++ 配置文件模式的替代方案

如何删除 hsqldb 中的默认数据库/模式

在测试阶段使用替代的 Maven 配置文件

存储库模式的替代方案?

PHP 安全模式替代方案