gpt4 book ai didi

rdf - 在内存服务器中创建 Fuseki

转载 作者:行者123 更新时间:2023-12-02 03:28:10 25 4
gpt4 key购买 nike

Fuseki中有一个参数--mem:

fuseki-server --mem  /DatasetPathName

我可以使用它将完整的 tdb 索引加载到内存中以提高查询性能吗?

例如,

fuseki-server --mem  --loc=/tdbpath  /DatasetPathName

/tdbpath 是一个包含 tdb 索引和文件的目录(我使用 tdbloader 加载我的数据)。

我试了一下,发现添加mem并没有增加内存的使用(对比fuseki-server --loc=/tdbpath/DatasetPathName)。我做错了什么吗?

谢谢

最佳答案

查看 FusekiCmd#processModulesAndArgs() 的实现, Fuseki 将参数 --mem--memtdb--loc=X 解释为单个数据集存在的互斥规范.在同一组命令行参数中同时提供 --mem--loc=X 只会导致 --loc=X使用:

        if ( contains(argMem) ) {
log.info("Dataset: in-memory") ;
cmdLineDataset = new ServerInitialConfig() ;
cmdLineDataset.argTemplateFile = Template.templateMemFN ;
}

if ( contains(argFile) ) {
String filename = getValue(argFile) ;
log.info("Dataset: in-memory: load file: " + filename) ;
if ( !FileOps.exists(filename) )
throw new CmdException("File not found: " + filename) ;

// Directly populate the dataset.
cmdLineDataset = new ServerInitialConfig() ;
cmdLineDataset.dsg = DatasetGraphFactory.createMem() ;

// INITIAL DATA.
Lang language = RDFLanguages.filenameToLang(filename) ;
if ( language == null )
throw new CmdException("Can't guess language for file: " + filename) ;
RDFDataMgr.read(cmdLineDataset.dsg, filename) ;
}

if ( contains(argMemTDB) ) {
//log.info("TDB dataset: in-memory") ;
cmdLineDataset = new ServerInitialConfig() ;
cmdLineDataset.argTemplateFile = Template.templateTDBMemFN ;
cmdLineDataset.params.put(Template.DIR, Names.memName) ;
}

if ( contains(argTDB) ) {
cmdLineDataset = new ServerInitialConfig() ;
cmdLineDataset.argTemplateFile = Template.templateTDBDirFN ;
String dir = getValue(argTDB) ;
cmdLineDataset.params.put(Template.DIR, dir) ;
}

如上所示,如果选择了这些选项之一,则以后的选项可以覆盖通过命令行参数提供的数据集。最多可以使用一个。也就是说,您可以使用--memtdb 选项告诉Fuseski 使用内存中的TDB 数据集。根据文档,这应该仅用于测试。

根据 @andys , TDB(使用 --loc 选项)应该在使用时将值缓存到内存中。如果您需要持久性并且不想为您的应用程序引入额外的生命周期阶段,TDB 是最好的选择。如果您的数据集可以完全放入内存中,您不需要持久性,或者您有能力为您的应用程序引入一个单独的保存和关闭步骤,内存中可以快得多。

关于rdf - 在内存服务器中创建 Fuseki,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29105903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com