什么是UQL
UQL是嬴图数据库专用的高性能查询与管理语言,其极低的学习成本能让使用者快速上手操作嬴图系统。
UQL支持对图数据的添加、删除、修改、查询(元数据查找、路径查找、子图匹配)、图集管理、schema管理、属性管理、索引管理、各类任务管理、权限管理等功能。
可通过嬴图CLI(命令行工具)、嬴图Manager(高可视化图数据库管理平台)、Visual Studio Code及嬴图Drivers(SDK、APIs等规范)对UQL进行调用。
UQL查询机制
结构化的UQL语句输送给嬴图服务器后会进行自动解析、优化,再分配给高性能图计算引擎进行图查询,查询后的结果在执行完其余的处理、组装后最终返回给用户。
UQL设计优势
基于对图的深度理解并结合工业界对图的高维性、扩展性等需求,UQL采用了与人脑思维模式一致的语义组装逻辑,在设计上具有以下优势:
- 对点、边、路径、表格等高级数据结构的清晰定义
- 对上述数据结构的轻松查询、计算、组装与返回
- 对图查询所需的复杂过滤条件的简洁描述
- 易读,易写,易学的语法结构
UQL的设计优势天然解决了SQL-like语言的无法表达高维数据、关联数据查询复杂低效、代码难理解、维护难度高等问题。
为适应广大开发者的编程习惯,UQL具备DQL、DDL、DML、DCL的语法特性:
- DQL(Data Query Language):数据查询语法,如点、边、路径的查询;
- DDL(Data Definition Language):数据定义语法,如增删图集、修改 schema、定义属性、创建索引等;
- DML(Data Manipulation Language):数据操纵语法,如对图集的元数据等内容进行增、删、改;
- DCL(Data Control Language):数据访问控制语法,主要用于设置数据库的权限,如用户管理、角色管理、赋权与撤销等。
作为图查询语言,UQL在整体功能与兼容性上将和GQL国际标准保持同步。该标准的制定工作由LDBC(Linked Data Benchmark Council,国际关联数据基准委员会)主导,预计将在2024年推出。
嬴图团队作为LDBC成员全程参与图查询语言GQL标准的制定。
UQL的构成
这是一个典型的UQL语句:
n({_id == "CA001"}).e({time > prev_e.time})[3].n(as target)
group by target.level
with count(target) as quantity
order by quantity desc
return target.level, quantity limit 10
其中包括:
- 链式风格的子句:即示例中的n(...).e(...)[3].n(...),形式为
[命令].[参数].[参数]…
,用来进行增、删、改、查; - 关键词引导的子句:即示例中的group by ...、with ...、order by ...、return ...、limit ...,用来加工和组装前面得到的结果;
- 自定义别名:即示例中的target、quantity,用来在语句间进行数据调用,需使用关键词as先定义再调用;
- 系统别名:即示例中的prev_e,用来在子句内部进行数据调用,无需定义即可直接使用;
- 函数:即示例中的 count(...),用来对得到的结果进行运算,需要写在子句中。
UQL语句中支持转义符
\
、制表符\t
、回车换行符\r\n
以及注释符//
、/*
、*/
。
版本更新(v4.3 → v4.4)
服务器
- 优化内存存储,数据占用节省三分之一
新特性
- 新增图数据类型GRAPH
- 新增聚合函数
percentileCont()
和percentileDisc()
- 新增类型转换函数
toGraph()
- 新增SET子句
修改
- 查询命令
graph()
重命名为subgraph()
UQL由嬴图团队发明并设计。
文件许可:Creative Commons 4.0