我们有一个 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 的实例之后,就无法重新打开与我们的图形数据库的连接。
有什么建议么?