在 Apache Jena Fuseki 中压缩数据集
Posted
技术标签:
【中文标题】在 Apache Jena Fuseki 中压缩数据集【英文标题】:Compacting a dataset in Apache Jena Fuseki 【发布时间】:2020-06-15 11:44:36 【问题描述】:大家好,RDF 爱好者。
我已将 Jena Fuseki 服务器部署为端点,以收集来自云服务基础架构的大量事件数据,然后将数据集用作服务监控前端的最终知识来源。但是数据集增长得非常快。
我了解到有一种方法可以压缩 TDB2 数据集。我如何在 Fuseki 环境中做到这一点?
【问题讨论】:
目前必须关闭服务器,然后运行tdb.tdbcompact
然后重启服务器。
啊,这是我一直害怕的事情。 :-/ 谢谢。
【参考方案1】:
显然没有办法在 Fuseki 环境中进行在线压缩。但我发现,tdb.tdbcompact
命令对数据库的压缩都不够,因为在我的情况下,差异大约是数据库大小的 2-4%。
我所做的是转储整个数据集,清除数据库并再次加载数据集。结果令人难以置信:从 50 GiB 的数据库降至 1 GiB。
我计划每天进行此操作并同时进行备份。
【讨论】:
【参考方案2】:这可以通过 TDB2 后端实现。
根据the docs,您可以运行tdb2.tdbcompact
。它运行的代码是here,这表明它会阻止写入器(而不是读取器)并创建一个新的Data-000X
(递增X
)目录,然后在压缩完成后切换为实时数据库。
【讨论】:
是的,这是可能的。但不是直接来自 Fuseki 环境。【参考方案3】:截至 2020 年 11 月 25 日发布的 Jena 3.17.0,Fuseki HTTP Administration Protocol 中有一个 /$/compact/name
端点,并提供更多详细信息 here。
【讨论】:
以上是关于在 Apache Jena Fuseki 中压缩数据集的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Apache Jena获得“选择计数(*)”查询的结果?
java 使用Apache Jena的API(不是RESTful API)从RDF数据构建数据库并回答Java中的SPARQL查询