诸如Neo4j , TigerGraph ,Amazon Neptune( Azure Cosmos DB的图形部分)之类的图形数据库以及本评论的主题AnzoGraph提供了自然的数据表示,该数据主要涉及人,地方和事物之间的关系 。 图形数据库非常适合欺诈检测,社交网络,推荐系统等应用程序。
对于这类应用,本文为关系数据库和图形数据库提供了很好的案例 。 TL; DR版本:一旦需要大型表的复杂联接,关系数据库查询就会变慢; 在图形数据库上,相同的任务更快。
像关系数据库一样,图形数据库可以设计用于有效的在线事务处理(OLTP)或有效的在线分析处理(OLAP),偶尔也可以用于两者(HTAP,混合事务/分析处理)。 Neo4j,Neptune和Cosmos DB都是OLTP图形数据库,尽管Neo4j最近添加了一些OLAP功能。 TigerGraph是一个HTAP图形数据库,拥有快速,深入的分析以及快速的事务处理能力。
另一方面,AnzoGraph被设计为OLAP图形数据库。 实际上,Cambridge Semantics在AnzoGraph的主页上说“用OLAP补充OLTP图形数据库引擎”。
Neo4j将自己的查询语言Cypher用于其标记的属性图。 有一个开源版本openCypher 。 TigerGraph使用其自己的查询语言GSQL。 Neptune同时具有RDF ( SPARQL )和标记的属性图 ( Gremlin )图存储。 它们都存在于同一结构上,但彼此之间没有连接。 Cosmos DB的图形数据库使用Gremlin,这是Apache TinkerPop的图形遍历语言。
AnzoGraph使用W3C标准的RDF三重和四重数据以及SPARQL 1.1查询。 它还支持标记的特性图作为RDF存储的一部分,符合建议的RDF *和SPARQL *标准。 AnzoGraph对SPARQL进行了扩展,以支持图形算法,推理,窗口聚合,BI函数和命名视图。 计划支持openCypher和Bolt(Neo4j协议)。
AnzoGraph架构
如下图所示,AnzoGraph是一个大规模并行的内存中图形数据库,可与企业数据源一起使用,并行处理RDF和CSV格式的数据加载,并提供BI分析,图形算法,推理,数据科学功能,和用户定义的功能。 它适用于Python程序,Apache Zeppelin笔记本和Jupyter笔记本,以及第三方客户端(例如KeyLines和Graphileon)。 AnzoGraph可以独立运行,也可以在Cambridge Semantics的数据发现和集成平台Anzo内部运行。
如果要针对AnzoGraph编写Python(无论是在程序中还是在笔记本中),则可以调用Python SPARQL客户端进行查询。 在Zeppelin笔记本中,您还可以在顶部带有%sparql
指令的单元格内编写SPARQL代码,并将结果传递给后续单元格中的Python,以进行图形化和分析。
AnzoGraph的功能,优势和应用
AnzoGraph具有高性能的图形查询执行能力和可扩展性,可扩展到数十亿甚至数万亿个三元组,并且不需要数据库脱机即可实现快速并行数据加载。 AnzoGraph分析的故事是它涵盖了所有类型的分析:图形算法,图形视图,命名查询,聚合,数据科学功能以及数据仓库式BI和报告。
该公司声称AnzoGraph的价格是根据可负担性和规模而定,但拒绝提供没有NDA的实际价格。 定价基于节点数,但是审阅者无法确认或否认可承受性的主张。
AnzoGraph在金融服务(PwC)和制药(Eli Lilly和Merck)中拥有参考客户。 这些客户和其他客户正在将AnzoGraph用于科学数据发现,反欺诈和反洗钱以及客户的360度视图。
AnzoGraph部署选项
该文档提供了有关设置三种类型的AnzoGraph沙箱和三种类型的完整部署的说明 。 这三个部署选项分别位于AWS CloudFormation,Docker / Kubernetes和RHEL / CentOS上。 Google Cloud Platform和Azure部署通常被视为Kubernetes部署。
沙盒部署是单个节点,开发人员可以使用的障碍很少。 完整部署是具有网络隔离和安全性的托管群集。
AWS CloudFormation模板提供了与常用的AWS网络和环境配置相对应的多种部署方案。 一个具有受限访问权限,如下图所示。 第二个具有Intranet集成。 三分之一使用AWS PrivateLink支持多个可用性区域。
在Docker上安装AnzoGraph
我选择使用具有16 GB RAM的iMac和Intel Core i7处理器在Docker CE上创建AnzoGraph沙箱。 在安装之前,我将Docker升级到最新版本,安装了Kitematic,并为Docker分配了四个CPU,12 GiB的RAM和3.5 GiB的交换空间。 下面的屏幕截图显示了AnzoGraph在Kitematic中启动。
对于安装以及初始数据加载和查询,我遵循了有关Docker部署的前五分钟文档。 这涉及加载产品随附的Tickit示例数据,并对产品运行一些SPARQL查询。 更多的查询出现在“ 使用Tickit数据”主题中 。
AnzoGraph SPARQL示例
示例SPARQL查询从简单开始,然后扩展到相当深的欺诈检测查询。 第一个查询只计算三元组:
随着序列的进行,我们将身份盗贼和黄牛打零。 下面的查询显示,当平均票价约为$ 400时,Axel Dominguez将票缩减为$ 2,500。
如果您参考图形的模型,查询将更有意义,如下所示。 该图并非来自AnzoGraph自己的工具; 他们正在与合作伙伴合作以增加该功能。
下面是查找票证黄牛的完整查询。 查找每个事件的平均票价的子查询首先运行,然后输入外部SELECT
语句的结果。 FILTER
子句将输出限制为卖价高于平均价格的黄牛,而ORDER BY desc(?priceperticket)
子句首先显示最高的卖价。 根据管理员查询日志,此查询运行了16.5秒。
SELECT ?sellername ?avg_price ?priceperticket ?eventname ?listtime
FROM <tickit>
WHERE {
{ SELECT ?eventname (avg(?priceperticket) as ?avg_price)
WHERE {
?listing <eventid> ?eventid .
?eventid <eventname> ?eventname .
?listing <priceperticket> ?priceperticket .
}
GROUP BY ?eventname
}
?listing <listtime> ?listtime .
?listing <priceperticket> ?priceperticket .
?listing <sellerid> ?seller .
?seller <firstname> ?firstname .
?seller <lastname> ?lastname .
BIND(CONCAT(?firstname, " ", ?lastname) AS ?sellername)
FILTER (?priceperticket > ?avg_price)
}
ORDER BY desc(?priceperticket) ?sellername ?eventname
LIMIT 1000
AnzoGraph SPARQL参考中提供了有关使用SPARQL的其他文档,并且在Cambridge Semantics Semantic University教程中提供了有关SPARQL,语义网和RDF的更多基本信息。
AnzoGraph基准
正如您在上面看到的,SPARQL *基本上可以执行SQL可以执行的所有操作,但它可以在RDF *数据库而不是关系数据库上运行。 Cambridge Semantics利用此优势从SQL转换了TPC-H OLAP基准。 尽管他们用它来比较AnzoGraph(一个OLAP图形数据库)和Neo4j(一个OLTP图形数据库),但他们承认这种比较是不公平的,我拒绝在这里打印出来。 但是,我将打印它们在两种不同的AnzoGraph配置之间所做的比较。
与往常一样,我建议您很少或不关注供应商提供的综合基准测试。 相反,您应该尝试为自己的数据集和应用程序构造AnzoGraph(以及任何比较点)的概念证明。 您还应该扭曲供应商的手臂以获取价格信息,以便可以计算成本和成本绩效比。
AnzoGraph可能适合您的数据库资源并支持更快的OLAP查询,但事实并非如此。 您可能应该将其与TigerGraph等进行比较。
您还必须考虑OLTP数据库的成本,因为AnzoGraph是为OLAP设计的,而不是为OLTP设计的。 那可能是另一个图数据库(例如Neo4j或Amazon Neptune),或者另一种NoSQL数据库(例如CouchDB或MongoDB)或SQL数据库(例如PostgreSQL或MariaDB)。
-
成本:定价基于具有标准推荐配置的节点数。 提供60天免费试用。
平台: Docker / Kubernetes,CentOS,RHEL; AWS,GCP,Azure
From: https://www.infoworld.com/article/3388649/anzograph-a-graph-database-for-deep-analytics.html