Jena SDB(关系db支持的RDF存储)如何处理SPARQL查询?

时间:2021-07-28 14:52:45

I working on SPARQL query performance on Jena SDB. For persistence, Jena SDB stores triples in a relational database (e.g., MySQL). How Jena SDB handle a SPARQL query? Does it:

我在Jena SDB上处理SPARQL查询性能。对于持久性,Jena SDB在关系数据库(例如,MySQL)中存储三元组。Jena SDB如何处理SPARQL查询?它是:

  1. load all the data from MySQL into its memory format, and then run the sparql query in memory; or
  2. 将MySQL中的所有数据加载到其内存格式中,然后在内存中运行sparql查询;或
  3. translate the SPARQL query in SQL and send it to MySQL?
  4. 将SPARQL查询转换为SQL并发送到MySQL?

The second hypothesis seems most likely to me, since this will take advantage of the indices provided by the relational database. Does someone have a clue about this, or any reference about Jena internal data format to handle SPARQL query?

第二个假设对我来说最有可能,因为这将利用关系数据库提供的索引。有人对此有所了解吗?或者有关于Jena内部数据格式的引用来处理SPARQL查询吗?

1 个解决方案

#1


3  

  1. No (it does not read everything into memory)
  2. 不(它不会把所有东西都读到内存中)
  3. Yes (it generates SQL)
  4. 是的(它生成SQL)

See the output of sdbprint which shows the SQL generated. It is not one SQL query for one SPARQL query in all cases.

请参见sdbprint的输出,其中显示了生成的SQL。在所有情况下,它不是一个SPARQL查询的SQL查询。

Jena TDB is faster and scales better than Jena SDB. SDB should only be used where layering on an existing SQL deployment is necessary.

Jena TDB比Jena SDB的速度和伸缩性都好。只有在需要对现有SQL部署进行分层时才应该使用SDB。

#1


3  

  1. No (it does not read everything into memory)
  2. 不(它不会把所有东西都读到内存中)
  3. Yes (it generates SQL)
  4. 是的(它生成SQL)

See the output of sdbprint which shows the SQL generated. It is not one SQL query for one SPARQL query in all cases.

请参见sdbprint的输出,其中显示了生成的SQL。在所有情况下,它不是一个SPARQL查询的SQL查询。

Jena TDB is faster and scales better than Jena SDB. SDB should only be used where layering on an existing SQL deployment is necessary.

Jena TDB比Jena SDB的速度和伸缩性都好。只有在需要对现有SQL部署进行分层时才应该使用SDB。