(预计阅读时间:7分钟)

TuGraph 图数据库提供了 JAVA、C++、Python 等多种语言的 SDK 支持,方便客户在各种场景下使用。用户使用 SDK 向TuGraph服务器发送Cypher请求,服务器则以 JSON形式返回数据。近日,TuGraph 推出了一款面向 JAVA 客户端用户的开发工具 TuGraph-OGM (Object Graph Mapping),为用户提供了对象操作接口,相较 Cypher/JSON 接口应用起来更加便捷。

OGM 类似于关系数据库中的 ORM(Object Relational Model),可以将数据库返回的数据自动映射成 JAVA 中的对象,方便用户读取,而用户对这些对象的更新操作也可以被自动翻译成 Cypher 语句发送给服务器。这样即便是完全不懂 Cypher 的用户,也可以通过操作对象与数据库进行交互,大大降低了图数据库的使用门槛。

TuGraph-OGM 同时也兼容其他开源产品 OGM 工具如 Neo4j-OGM,方便用户将工程在不同数据库与 TuGraph数据库间无缝迁移。本文将对 TuGraph-OGM 进行全面的介绍。

0 映射原理

TuGraph-OGM 将 JAVA 对象映射为图的对象,类映射为点,类的属性映射为图中的属性,类中的方法映射为操作 TuGraph 的查询语句。

(图1,电影场景图数据)

以电影场景为例,对演员、电影、导演之间的关系进行数据化,就形成了非常典型的图数据。举一个简单的示例,演员Alice在1990年和2019年分别出演了两部电影《Jokes》和《Speed》,其中《Jokes》的导演是Frank Darabont。

以图的思维来看,演员、导演、电影可以被映射为三种不同的节点,而出演、执导可以被映射为两种边,映射结果如上图所示,将数据存入图数据库后,相关的开发人员就可以使用各类图查询语言对数据进行查询。

但对非图数据库相关的开发人员来说,这个例子中的演员、导演、电影作为实体,同样可以映射为类中的对象,而与实体相关联的对象可以通过集合存储,这是大多数开发人员熟悉的领域。

1 TuGraph-OGM架构

TuGraph-OGM可被看做一个"翻译器",主要功能是将开发人员对JAVA对象的一些操作翻译为TuGraph可理解的图查询语言Cypher请求,并将该操作返回的结果,再次翻译为JAVA对象。架构图如下所示:

2 功能介绍

3 使用示例

详细示例请参考tugraph-ogm-integration-tests

在 pom.xml 中引入依赖

3.1 构建图对象

首先需要通过注解标明图中的实体。

@NodeEntity:该注解标明的类为节点类。

@Relationship:用于标明边,同时@Relationship中可指定label与边的指向。

@Id:用于标明identity,是OGM中数据的唯一标识。

3.2 与TuGraph建立连接

当前TuGraph-OGM提供了RPC driver用于连接TuGraph,具体配置如下所示:

3.3 通过OGM进行增删改查

OGM支持对TuGraph的实体执行CRUD 操作,同时支持发送任意TuGraph支持的Cypher语句,包括通过CALL调用存储过程。

CREATE

在完成图对象的构建后,即可通过类的实例化创建节点,当两个节点互相存储在对方的集合(该集合在构建时被标注为边)中,就形成了一条边,最后使用session.save方法将数据存入数据库。

注意:TuGraph数据库为强schema类型数据库,在创建实体前需要该数据的label已经存在,且新建过程中需要提供唯一的主键。

DELETE

使用session.delete方法删除节点,同时会删除与节点相关联的所有边。

UPDATE

修改已创建的节点的属性,再次调用session.save方法会对节点进行更新。

MATCH

session.load方法用于根据节点id查找节点。

session.loadALL方法用于批量查找节点,支持通过多个节点id查找节点、查找某一类型的所有节点、带有filter的查询。

filter查询需要新建Filter,传入参数ComparisonOperatorx0;可选为:EQUALSx0;、GREATER_THANx0;、LESS_THAN

QUERY WITH CYPHER

OGM支持通过queryForObject、query方法向TuGraph发送Cypher查询,由于Cypher查询的灵活性,需要用户自行指定返回结果格式。

session.queryForObject方法:需要在方法第一个参数处指定返回类型,可设定为某一实体类或数字类型。

session.query方法:Cypher查询的返回结果被存储为Result类型,其内部数据需要用户自行解析,以下方代码为例,传入数据库的Cypher为CREATE查询,返回结果createResult可被解析为QueryStatistics,可获取到此次查询被创建的节点与边的数目。

关于TuGraph

高性能图数据库 TuGraph( https://github.com/TuGraph-db/tugraph-db)由蚂蚁集团和清华大学共同研发,经国际图数据库基准性能权威测试,是 LDBC-SNB 世界纪录保持者,在功能完整性、吞吐率、响应时间等技术指标均达到全球领先水平,为用户管理和分析复杂关联数据提供了高效易用可靠的平台。

历经蚂蚁万亿级业务的实际场景锤炼,TuGraph 已应用于蚂蚁内部150多个场景,助力支付宝2021年资产损失率小于亿分之0.98。关联数据爆炸性增长对图计算高效处理提出迫切需求,TuGraph 已被成熟应用于金融风控、设备管理等内外部应用,适用于金融、工业、互联网、社交、电信、政务等领域的关系数据管理和分析挖掘。

2022年9月,TuGraph 单机版开源,提供了完备的图数据库基础功能和成熟的产品设计,拥有完整的事务支持和丰富的系统特性,单机可部署,使用成本低,支持TB级别的数据规模。

END

往期回顾

→ 蚂蚁图数据库再获LDBC权威测试世界第一

→ 蚂蚁集团开源图数据库TuGraph,成立图计算开源委员会

→ 金融图数据库选型工具“LDBC-FinBench”

▼ 关注蚂蚁图计算,了解最新资讯

推荐文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: