【发布时间】:2017-11-29 16:36:03
【问题描述】:
我们有一个 OrientDB 图形数据库和一个每日调度程序,它使用 Java API 在数据库中执行大量插入。出于这个原因,我们希望在执行这些插入时从 Java 代码中禁用 WAL,否则 WAL 文件的大小将在短时间内变得巨大。
我们已经知道可以通过编辑一些 OrientDB 配置来永久禁用 WAL,但我们不想做出这样的选择。
我们看到OrientDB的github仓库有一个已关闭的issue,建议如下解决方案:
private void reopenWithWALSetTo(final boolean useWAL) {
db.getStorage().close(true, false);
db.close();
OGlobalConfiguration.USE_WAL.setValue(useWAL);
db = new ODatabaseDocumentTx(dbURL);
db.open("admin", "admin");
}
问题是我们在打开与数据库的连接时没有使用 ODatabaseDocumentTx 的实例。事实上,由于我们使用的是图形数据库,所以我们使用 OrientGraphFactory 的方式如下:
factory = new OrientGraphFactory("url", "username", "password");
graph = factory.getTx();
可以通过以下方式获取ODatabaseDocumentTx的实例:
db = graph.getRawGraph();
但是,在关闭 ODatabaseDocumentTx 的实例后,无法重新打开与我们的图形数据库的连接。
有什么建议吗?
【问题讨论】: