Allegrograph基本上是RDF三元组(实际上是五字段)存储。那么,为什么我们不能创建一个有五列的MySQL表,并将三元组存储在其中呢?
AG对这样的MySql表有什么功能?
简单地说,它支持SPARQL
SPARQL是RDF的查询语言,它与SQL的语义有很大不同,有一些工具可以将SPARQL转换为SQL查询,但性能通常很差。此外,SPARQL规范的许多功能(特别是内置函数)在MySQL中没有等效功能,因此必须通过存储过程/用户定义的函数进行复制或在代码中完成。
评估SPARQL与评估SQL大不相同,因为SPARQL更依赖于许多复杂的联接,SPARQL存储使用的优化器虽然与SQL优化器原理相同,但其设计目的是处理与传统RDBMS通常处理的查询截然不同的查询。
通常,五列表是非常幼稚的,因为每列都包含一个复杂的项,该项有多个部分,最好使用多个表进行存储。此外,在更规范化的表设计中,单表方法将导致巨大的存储需求。
如果您只关心将RDF三元组保存到SQL数据库中或从SQL数据库中加载RDF三元组,那么简单的单表方法可能适合您。如果你真的想做一些有用的事情,那么你需要一个更复杂的SQL数据库模式或一个合适的RDF存储,比如AllegroGraph
因此,如果您决定创建一个单独的五列表来模拟RDF图数据库,您将缺少什么?
- 正如在另一个响应中所描述的,您不会得到SPARQL(查询语义世界的语言)或创建自己的SPARQL的能力扩展
- mySQL针对高度规范化的数据库模式进行了优化,而不是单个表-大表,每个查询有多个自联接
- AllegroGraph支持多种服务器端编程语言(Javascript、Prolog、Lisp)都针对这种类型的存储进行了优化
- AllegroGraph支持RDF数据、地理扩展、社交网络在同一数据集中同时进行分析扩展
- AllegroGraph支持基于RDF图数据集(RDFS++)的推理
- AllegroGraph支持三级安全性
- AllegroGraph支持Java语义库Jena和Sesame,以及Python、C#、Clojure、Lisp、Ruby、REST接口
- 与任何企业数据库一样,AllegroGraph也支持在线备份,复制、热备用、时间点恢复