2022年10月1日,面向大规模知识图谱应用的原生图数据库系统gStore 最新的1.0版本正式上线发布。
gStore系统源于2011年北京大学邹磊教授在VLDB发表的论文:“gStore: Answering SPARQL Queries via Subgraph Matching”。北京大学邹磊教授团队十余年在坚持图数据管理领域不断原始学术创新的同时,带领团队深耕图数据库系统,坚持开源gStore图数据库系统的持续更新,感谢大家一直的关注和使用。发布地址:
gStore官网:http://www.gstore.cn/
GitHub:https://github.com/pkumod/gStore
Gitee:https://gitee.com/PKUMOD/gStore
欢迎大家的关注和使用
详细说明文档请访问:
http://www.gstore.cn/pcsite/index.html#/documentation
一、gStore1.0版本新增功能如下
1、支持用户自定义图分析算子函数
基于经典图分析算法对图数据进行分析一直是图数据库系统的重要功能,在gStore1.0版本中,我们新增了用户自定义图分析算法功能。用户可通过API接口或可视化管理平台gstore-workbench对自定义图分析算子函数进行管理,通过接口函数获取图数据的结点数、边数、任意给定结点的邻居等,以此为基本单元进行实现自定义的图分析算子函数,并支持动态编译和动态运行;该功能模块已在CCKS2022评测任务十五“基于图数据库的自定义图分析算法测评”中应用,并获得了参赛队伍的一致好评。
2、新增grpc网络接口服务
基于开源的库workflow实现的一个基于HTTP协议的高性能网络接口服务,进一步提高了接口服务的效率和稳定性,具体接口文档见下表所示(接口延续了gHttp接口参数,可无缝升级切换):
接口名称 |
含义 |
备注 |
build |
构建图数据库 |
数据库文件需在服务器本地 |
check |
心跳信号 |
检测ghttp心跳信号 |
load |
加载图数据库 |
将数据库加载到内存中 |
unload |
卸载图数据库 |
将数据库从内存中卸载 |
monitor |
统计图数据库 |
统计指定数据库相关信息(如三元组数量等) |
drop |
删除图数据库 |
可以逻辑删除和物理删除 |
show |
显示数据库列表 |
显示所有数据库列表 |
usermanage |
用户管理 |
新增、删除、修改用户信息 |
showuser |
显示所有用户列表 |
显示所有用户列表信息 |
userprivilegemanage |
用户权限管理 |
新增、删除、修改用户权限信息 |
userpassword |
修改用户密码 |
修改用户密码 |
backup |
备份数据库 |
备份数据库信息 |
restore |
还原数据库 |
还原数据库信息 |
query |
查询数据库 |
包括查询、删除、插入 |
export |
导出数据库 |
导出数据库为NT文件 |
login |
登陆数据库 |
用于验证用户名和密码 |
begin |
启动事务 |
事务启动,需要与tquery配合使用 |
tquery |
查询数据库(带事务) |
带事务模式的数据查询(仅限于insert和delete) |
commit |
提交事务 |
事务完成后提交事务 |
rollback |
回滚事务 |
回滚事务到begin状态 |
txnlog |
获取transaction的日志信息 |
以json返回transcation的日志信息 |
checkpoint |
将数据写入磁盘 |
当对数据库进行了insert或delete操作后,需要手动执行checkpoint |
testConnect |
测试连接性 |
用于检测ghttp是否连接 |
getCoreVersion |
获取gStore版本号 |
获取gStore版本号 |
batchInsert |
批量插入数据 |
批量插入NT数据 |
batchRemove |
批量删除数据 |
批量删除NT数据 |
shutdown |
关闭ghttp服务 |
|
querylog |
获取query的日志信息 |
以json返回query的日志信息 |
querylogdate |
获取query日志的日期列表 |
查询已有query日志的日期列表 |
accesslog |
获取API的访问日志 |
以json返回API的访问日志信息 |
accesslogdate |
获取API日志的日期 |
查询已有API日志的日期列表 |
ipmanage |
黑白名单管理 |
维护访问gstore的IP黑白名单 |
funquery |
查询算子函数 |
分页获取自定义算子函数列表 |
funcudb |
管理算子函数 |
算子函数的新增、修改、删除、编译 |
funreview |
预览算子函数 |
在创建和更新时,可通过预览接口查看最后生成的算子函数源码 |
grpc与ghttp对比实验结果表明,grpc在并发访问性能方面有巨大提升,在2000/QPS情况下,无拒绝访问情况出现。
3、新增gconsole命令
长久以来,gStore主要是通过ghttp、grpc等实现远程访问,以及通过gquery、gbuild等本地指令进行本地操作,但是都是“短会话”模式,为此,在gStore1.0中我们重磅推出了gConsole模块,实现了“长会话”操作gStore。gconsole模块支持命令行模式下实现数据库的管理,目前支持的指令如下:
指令 |
含义 |
备注 |
help |
帮助指令 |
打印帮助信息 |
quit |
退出 |
同时支持快捷键CTRL+D |
sparql |
执行sparql语句文件 |
支持批量执行,多个文件用;分割 |
create |
创建数据库 |
|
use |
切换数据库 |
切换后将自动load数据,并把之前的当前库unload |
drop |
删除数据库 |
只能删除当前库以外的库 |
show |
显示数据库信息 |
默认显示前10行三元组 |
showdbs |
查看所有的数据库 |
仅显示当前用户有查询权限的数据库 |
backup |
备份当前数据库 |
默认备份路径为./backups |
restore |
恢复数据库 |
|
export |
导出当前数据库 |
|
pdb |
显示当前数据库名 |
|
flushpriv |
刷新权限 |
读取db刷新当前用户权限 |
pusr |
显示当前用户名和权限 |
|
setpswd |
修改当前用户密码 |
需要输入密码验证身份 |
setpriv |
设置权限 |
需要验证密码验证root身份 |
addusr |
新增用户 |
需要验证密码验证root身份 |
delusr |
删除用户 |
需要验证密码验证root身份 |
showusers |
查看所有用户 |
|
settings |
查看配置 |
显示ini.conf的内容 |
version |
查看版本 |
|
pwd |
查看当前所在路径 |
|
clear |
清屏 |
|
Ctrl+c |
结束/取消当前命令 |
|
Ctrl+d |
退出 |
二、gStore1.0版本优化功能如下
4、优化器与执行器分离
gStore1.0解耦了优化器和执行器,从原有的深度耦合的贪心策略,转化为基于动态规划的查询优化器和基于广度优先遍历的查询执行器。进一步地,gStore兼容针对topk查询的优化器以及对应的基于深度优先遍历的查询优化器。得益于优化器和执行器的解耦,用户可以针对自己的使用需求定制基于使用场景的查询优化策略,并选择合适的执行方式对优化策略进行执行,最终实现查询执行的高性能和高可用性。
5、优化top-k查询
我们在gStore中实现了基于DP-B算法的Top-K SPARQL处理框架,包括查询切分,子结果聚合等部分。之后在gStore查询中,对Top-K 查询将走另外的处理逻辑,实现了对传统Rank After Matching算法的替代,节省了查询过程中的内存占用且提升了查询执行效率。我们的实验结果证明Top-K优化的有效性,尤其是在结果数多的情况下有巨大提升。
6、支持ACID事务处理
gStore1.0通过引入多版本管理机制,可以对插入和删除操作启动事务机制,用户可以对事务进行开启、提交、回滚等操作,从而支持ACID事务处理。目前gStore1.0支持四个隔离等级:read-uncommitted(读未提交)、read-committed(读并提交)、repeatable read(可重复读)、serializable(可串行化)。
7、重构database内核,优化执行树生成逻辑
我们优化了 Database 模块的代码,重构了内核。此外,我们在新版 gStore 中,引入了两种连接操作(worst-case-optimal join 和 binary join)优化查询执行。优化器采用基于采样的基数估计器,搭配精心设计的代价模型,能够生成较好的将两种连接操作结合的执行计划,提升查询效率。
8、优化日志模块
基于log4cplus库,实现统一格式的系统日志输出,用户可配置日志输出的方式(控制台输出、文件输出),输出格式以及日志输出级别等。
9、新增内置高级函数
应广大用户要求,本次gStore1.0版本将新增四个高级函数,分别是三角形计数(triangleCounting),紧密中心度:(closenessCentrality),宽度优先遍历结点计数(bfsCount),所有K跳路径(kHopEnumeratePath)等算法,算法使用可以参考官网技术文档。
10、新增SPARQL函数支持
在1.0版本中,我们支持了在BIND语句中使用代数或逻辑表达式对变量赋值的功能。表达式中可以包含BIND语句之前出现过的其他变量,也可以调用SPARQL内建函数;被赋值的变量在BIND语句之后可与普通变量一样自由使用,为复杂查询提供了更便捷的书写方式。
11、优化接口,修复bug
如优化了bin/shutdown命令,无需再输入启动端口信息;修复了批量插入或删除数据库后,调用monitor接口统计信息不准确的bug等。
三、应用场景
gStore历史版本及生态产品已应用于金融、医疗、政府大数据、公安、纪检、智能问答等多个领域,在多个互联网和人工智能公司的图数据和知识图谱项目进行了部署,已产生了良好的社会和经济效益。
gStore1.0 版本将继续在各领域发挥更加强劲作用,更好的支撑各领域业务场景和实际需要,产生更多价值和效益。此外,gStore系列产品已广泛适配鲲鹏、飞腾、海光、兆芯、麒麟、统信UOS等国产自主可控体系,积极打造图数据库中国芯。
面向大规模知识图谱应用的原生图数据库系统gStore的发展离不开众多开发者和使用者的支持以及研发团队的不断努力,希望在未来的道路上不断前行,打造功能更加完善、性能更加优异的自主可控国产图数据库。也期待更多同行者一同完善、发展gStore生态和实践。
欢迎大家的关注和使用
针对gStore有任何问题也可通过加运营同学微信,邀请加入gStore图谱社区咨询。
诚邀大家参加
·gStore-weekly技术文章征集活动·
相关技术文章,包含但不限于以下内容:系统技术解析、案例分享、实践总结、开发心得、客户案例、使用技巧、学习笔记等。文章要求原创。
入选周刊即送精美礼品~