【发布时间】:2011-08-29 20:06:37
【问题描述】:
我在我的项目中使用 DBpedia。 到目前为止,我一直在使用 SPARQL 客户端,但性能远不能接受(更不用说端点的频繁停机)。
所以我想在本地 dbms 中加载http://wiki.dbpedia.org/Downloads36 上可用的大 NT 文件(我有一个带有 PostgreSQL 的服务器)。
在我的应用程序(基于 Java 和 Groovy 构建)中,我打开一个与 Jena 持久图的连接:
def jenaConnection = new DBConnection( ... )
def maker = ModelFactory.createModelRDBMaker( jenaConnection )
def globalModel = maker.openModel( "my_big_fat_model" )
这对于几千个三元组是可以的,但是当我尝试使用阅读器加载大型 NT 文件时
RDFReader r = m.getReader( "N-TRIPLE")
r.read( inputStreamFromBigFile ... )
表现令人震惊。它每分钟加载大约 2-3K 三元组,这意味着整个 DBpedia 数据集(数百万个三元组)可能需要数天才能加载。其他使用 JENA 和大型数据集的人似乎没有这个问题。
我读到我应该将 TDB 用于大型数据集 (http://jena.apache.org/documentation/tdb/),但我不明白我应该用它做什么。
它是与 RDB 接口类似的概念还是什么?我需要在 PostgreSQL 数据库中加载 NT 吗?
JENA 文档在这一点上似乎不是很清楚。
【问题讨论】:
-
你查出问题出在哪里了吗?如果您认为这是 PostgreSQL 方面的问题,请包括对有问题的查询的解释分析?查看 log_min_duration_statement 配置可调参数。 postgresql.org/docs/current/static/runtime-config-logging.html
标签: postgresql import rdf large-files jena