我是在博客文章http://michaelbloggs.blogspot.de/2013/05/importing-ttl-turtle-ontologies-in-neo4j.html之后将ttl本体导入dbpedia。该帖子使用BatchInserters来加速任务。它提到
批量插入不是交易性的。如果出现问题并且您没有正确关闭()数据库,则数据库会变得不一致。
我不得不中断其中一个批处理插入任务,因为它花费的时间比预期的要长得多,这使我的数据库处于不一致状态。我收到以下消息:
db_name store未完全关闭
如何从此状态恢复数据库?此外,为了将来的目的,有一种方法可以在导入每个文件后进行提交,以便恢复到最后一个状态将是微不足道的。我想到了git,但我不确定它是否对像index.db这样的二进制文件有帮助。
答案 0 :(得分:2)
在某些情况下,在使用批量插入器api时无法从不干净的关闭中恢复,请注意其包名org.neo4j.unsafe.batchinsert
包含单词unsafe
,原因如此。批量插入器的目的是尽可能快地运行。
如果你想保证一个干净的关机,你应该试一试:
BatchInserter batch = BatchInserters.inserter(<dir>);
try {
} finally {
batch.shutdown();
}
特殊情况的另一种选择是注册JVM关闭钩子。请参阅以下代码段作为示例:
BatchInserter batch = BatchInserters.inserter(<dir>);
// do some operations potentially throwing exceptions
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
batch.shutdown();
}
});