Jena Fuseki TDB2中OSPG.dat文件远超其他文件的原因咨询
关于Jena Fuseki TDB2中OSPG.dat文件异常过大的疑问
尊敬的Jena社区:
我在OpenShift集群上以容器形式运行Jena Fuseki 4.4.0版本。
操作系统版本信息(执行cat /etc/os-release):
NAME="Red Hat Enterprise Linux" VERSION="8.5 (Ootpa)" ID="rhel" ID_LIKE="fedora" VERSION_ID="8.5" ...
硬件信息(来自Jena Fuseki初始化日志):
[2023-01-27 20:08:59] Server INFO Memory: 32.0 GiB [2023-01-27 20:08:59] Server INFO Java: 11.0.14.1 [2023-01-27 20:08:59] Server INFO OS: Linux 3.10.0-1160.76.1.el7.x86_64 amd64 [2023-01-27 20:08:59] Server INFO PID: 1
磁盘信息(执行df -h):
Filesystem Size Used Avail Use% Mounted on overlay 99G 76G 18G 82% / tmpfs 64M 0 64M 0% /dev tmpfs 63G 0 63G 0% /sys/fs/cgroup shm 64M 0 64M 0% /dev/shm /dev/mapper/docker_data 99G 76G 18G 82% /config /data 1.0T 677G 348G 67% /usr/app/run tmpfs 40G 24K 40G 1%
我的数据集基于TDB2构建,当前RDF统计数据如下:
- 三元组:65KK(约6500万)
- 主语:~20KK(约2000万)
- 宾语:~8KK(约800万)
- 图:~213K(约21.3万)
- 谓语:153
该数据集在磁盘上的文件总大小约为671GB(通过du -h测量)。其中最大的几个文件为:
- /usr/app/run/databases/my-dataset/Data-0001/OSPG.dat: 243GB
- /usr/app/run/databases/my-dataset/Data-0001/nodes.dat: 76GB
- /usr/app/run/databases/my-dataset/Data-0001/POSG.dat: 35GB
- /usr/app/run/databases/my-dataset/Data-0001/nodes.idn: 33GB
- /usr/app/run/databases/my-dataset/Data-0001/POSG.idn: 29GB
- /usr/app/run/databases/my-dataset/Data-0001/OSPG.idn: 27GB
我查阅了多个文档页面、源代码和论坛,但均未找到OSPG.dat文件远大于其他文件的原因。
我使用Jena已有相当长的时间,清楚其索引在使用过程中会显著增长,尤其是在通过多个请求添加三元组(事务型工作负载)时。尽管如此,这个文件(OSPG.dat)的大小还是让我感到意外,因为根据以往经验,索引文件的大小从未超过nodes.dat。
基于数据集内容或生成方式,是否存在合理的解释?这会不会是TDB2的索引bug?
感谢您的支持!
数据集组装器配置:
@prefix : <http://base/#> . @prefix fuseki: <http://jena.apache.org/fuseki#> . @prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix root: <http://dev-test-jena-fuseki/$/datasets#> . @prefix tdb2: <http://jena.apache.org/2016/tdb#> . tdb2:GraphTDB rdfs:subClassOf ja:Model . ja:ModelRDFS rdfs:subClassOf ja:Model . ja:RDFDatasetSink rdfs:subClassOf ja:RDFDataset . <http://jena.hpl.hp.com/2008/tdb#DatasetTDB> rdfs:subClassOf ja:RDFDataset . tdb2:GraphTDB2 rdfs:subClassOf ja:Model . <http://jena.apache.org/text#TextDataset> rdfs:subClassOf ja:RDFDataset . ja:RDFDatasetZero rdfs:subClassOf ja:RDFDataset . :service_tdb_my-dataset rdf:type fuseki:Service ; rdfs:label "TDB my-dataset" ; fuseki:dataset :ds_my-dataset ; fuseki:name "my-dataset" ; fuseki:serviceQuery "sparql" , "query" ; fuseki:serviceReadGraphStore "get" ; fuseki:serviceReadWriteGraphStore "data" ; fuseki:serviceUpdate "update" ; fuseki:serviceUpload "upload" . ja:ViewGraph rdfs:subClassOf ja:Model . ja:GraphRDFS rdfs:subClassOf ja:Model . tdb2:DatasetTDB rdfs:subClassOf ja:RDFDataset . <http://jena.hpl.hp.com/2008/tdb#GraphTDB> rdfs:subClassOf ja:Model . ja:DatasetTxnMem rdfs:subClassOf ja:RDFDataset . tdb2:DatasetTDB2 rdfs:subClassOf ja:RDFDataset . ja:RDFDatasetOne rdfs:subClassOf ja:RDFDataset . ja:MemoryDataset rdfs:subClassOf ja:RDFDataset . ja:DatasetRDFS rdfs:subClassOf ja:RDFDataset . :ds_my-dataset rdf:type tdb2:DatasetTDB2 ; tdb2:location "run/databases/my-dataset" ; tdb2:unionDefaultGraph true ; ja:context [ ja:cxtName "arq:optFilterPlacement" ; ja:cxtValue "false" ] .
更新:
目前我正尝试从NQuads备份(解压后约15GB)重新创建数据集,希望能减小索引大小。不过,由于该数据集在系统使用过程中会持续增长,了解导致此特定索引大幅增长的原因将十分有帮助。
内容的提问来源于stack exchange,提问作者Elton
相关产品推荐
相关产品推荐

