暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

#gStore-weekly | gStore最新版本0.9.1之ghttp新功能使用

图谱学苑 2021-12-16
771

ghttp是gStore主要的对外访问组件,gStore0.9.1版本对ghttp接口进行了重构,重新梳理了gHttp相关接口,规范了ghttp接口参数和返回值,新版接口列表如下:

序号

接口名称

含义

备注

状态

1

build

构建图数据库             

数据库文件需在服务器本地


2

load

加载图数据库

将数据库加载到内存中


3

unload

 卸载图数据库             

将数据库从内存中卸载


4

monitor

统计图数据库

统计指定数据库相关信息(如三元组数量等)


5

drop

删除图数据库

可以逻辑删除和物理删除


6

show

显示数据库列表

显示所有数据库列表


7

usermanage

用户管理

新增、删除、修改用户信息

新增

8

showuser

显示所有用户列表

显示所有用户列表信息  


9

userprivilegemanage

用户权限管理

新增、删除、修改用户权限信息

新增

10

backup

备份数据库

备份数据库信息


11

restore

还原数据库

还原数据库信息


12

query

查询数据库

包括查询、删除、插入


13

export

导出数据库

导出数据库为NT文件


14

login

登陆数据库

主要是用于验证用户名和密码

新增

15

check

检测ghttp心跳信号


重写

16

init

初始化system

该操作不应该通过ghttp能初始化

弃用

17

refresh

重新load数据库

该操作可以由unload+load实现

弃用

18

parameter

为备份设置参数

所有参数目前都已经归结到config.ini文件,不允许远程修改

弃用

19

 

begin

启动事务

事务启动,需要与tquery配合使用

新增

20

tquery 

查询数据库(带事务)

带事务模式的数据查询(仅限于insertdelete

新增

21

commit

提交事务

事务完成后提交事务

新增

22

rollback

回滚事务

回滚事务到begin状态 

新增

23

txnlog

获取transaction的日志信息

json返回transcation的日志信息

新增

24

checkpoint

将数据写入磁盘

当对数据库进行了insertdelete操作后,需要手动执行checkpoint

新增

25

testConnect

测试连接性

用于检测ghttp是否连接  

新增

26

getCoreVersion

获取gStore版本号

获取gStore版本号

新增

27

batchInsert

批量插入数据

批量插入NT数据

新增

28

batchRemove

批量删除数据

批量删除NT数据

新增

接下来我们就逐一来演示每个功能如何使用。我们首先启动ghttp服务,并指定服务端口号为9000:

$ nohup bin/ghttp -p 9000 &
说明:nohup模式启动ghttp服务器,并指定启动端口为9000
1、usermanage 用户管理

该功能包括新增、删除、修改用户信息,可通过下列代码进行新增一个用户名为test,密码为123456的用户接口请求

$ curl -X POST http://127.0.0.1:9000 -H 'Content-Type: application/json' -d '{"operation":"usermanage","type":"1","username":"root","password":"123456","op_username":"test","op_password":"123456"}'
      

参数说明:[
operation:
固定值usermanage type:
固定值(取值123;其中1表示新增,2表示删除,3表示修改)username:
当前操作用户(会校验操作此用户的权限和密码)password:
当前操作用户密码op_username:
新用户的用户名op_password:
新用户的密码]

若我们要删除一个用户名为test,密码为123456的用户
$ curl -X POST http://127.0.0.1:9000 -H 'Content-Type: application/json' -d '{"operation":"usermanage","type":"2","username":"root","password":"123456","op_username":"test","op_password":"123456"}'
参数说明:除了type
参数值为2,其他参数与新增一致type: 固定值2
若我们要修改一个用户名为test的密码为654321
$ curl -X POST http://127.0.0.1:9000 -H 'Content-Type: application/json' -d '{"operation":"usermanage","type":"3","username":"root","password":"123456","op_username":"test","op_password":"654321"}'
参数说明:除了type
参数值为3,其他参数与新增一致 type: 固定值3
2、userprivilegemanage 用户权限管理
该功能提供了对用户权限的新增、删除、修改,可通过下列代码进行为用户test新增权限接口请求
$ curl -X POST http://127.0.0.1:9000 -H 'Content-Type: application/json' -d '{"operation":"userprivilegemanage","type":"1","username":"root","password":"123456","op_username":"test","privileges":"1,2,3,7","db_name":"demo"}'
参数说明:[
operation:
固定值userprivilegemanage type:
固定值(取值123;其中1表示新增,2表示删除,3表示修改)username:
当前操作用户(会校验操作此用户的权限和密码)password:
当前操作用户密码op_username:
操作的用户名op_password:
新用户的密码;privileges:
需要新增的权限编号(多个权限使用逗号分隔如1,2,3编号与权限映射关系: 1:query, 2:load, 3:unload, 4:update, 5:backup, 6:restore, 7:exportdb_name:
需要操作的数据库]
若我们删除test用户的权限
$ curl -X POST http://127.0.0.1:9000 -H 'Content-Type: application/json' -d '{"operation":"userprivilegemanage","type":"2","username":"root","password":"123456","op_username":"test","privileges":"7","db_name":"demo"}'
参数说明:除了type
参数值为2,其他参数与新增一致type: 固定值2privileges:
需要删除的权限(多个权限使用逗号分隔)如7:export
若我们清空test用户的所有权限
$ curl -X POST http://127.0.0.1:9000 -H 'Content-Type: application/json' -d '{"operation":"userprivilegemanage","type":"3","username":"root","password":"123456","op_username":"test"}'
参数说明:type
参数值为3privileges
db_name
不需要,其他参数与新增一致;type: 固定值3
3、login 登陆数据库
该功能用于验证用户名和密码是否正确
$ curl -X POST http://127.0.0.1:9000 -H 'Content-Type: application/json' -d '{"operation":"login", "username":"root","password":"123456"}'
参数说明:[operation:
固定值为loginusername:
用户名password:
密码(明文)]
响应结果示例

# 成功

{    "StatusCode": 0,    "StatusMsg": "login successfully",    "CoreVersion": "0.9.1",    "licensetype": "" }

# 密码错误
{
    "StatusCode": 1001,
    "StatusMsg": "wrong password."
}

4、事务处理模块
我们可通过开启事务(begin)、执行事务语句(tquery)、提交事务(commit)或回滚事务(rollback)来完整的完成一次事务操作。
第一步:开启事务
$ curl -X POST http://127.0.0.1:9000 -H 'Content-Type: application/json' -d '{"operation":"begin", "username":"root", "password":"123456", "db_name":"demo", "isolevel":"1"}'     
   
参数说明:[operation:
固定值为beginusername:
用户名password:
密码(明文)db_name:
数据库名称isolevel:
事务隔离等级 1:RC(read committed)  2:SI(snapshot isolation) 3:SR(seriablizable]
# 执行成功后将返回事务IDTID),后续的操作中会用到TID值,返回示例:

{    

"StatusCode": 0,

"StatusMsg": "transaction begin success",

"TID": "1"

}

第二步:执行事务语句
$ curl -X POST http://127.0.0.1:9000 -H 'Content-Type: application/json' -d '{"operation":"tquery", "username":"root", "password":"123456","db_name":"demo", "tid":"1", "sparql":"INSERT DATA {<王二> <好友> <张三>.}"}'
参数说明:[operation:
固定值为tqueryusername:
用户名password:
密码(明文)db_name:
数据库名称tid:
事务ID(第一步返回的结果中TID的值)sparql:
sparql语句(仅限于insertdelete)]
返回示例
{
    "StatusCode": 0,
    "StatusMsg": "Transaction query success, update num: 1"
}
第三步:提交或回滚事务
# 提交事务
$ curl -X POST http://127.0.0.1:9000 -H 'Content-Type: application/json' -d '{"operation":"commit", "username":"root", "password":"123456","db_name":"demo", "tid":"1"}'
        
参数说明:[operation:
固定值为commitusername:
用户名 password:
密码(明文)db_name:
数据库名称tid:
事务ID(第一步返回的结果中TID的值)]
# 回滚事务
$ curl -X POST http://127.0.0.1:9000 -H 'Content-Type: application/json' -d '{"operation":"rollback", "username":"root", "password":"123456", "db_name":"demo", "tid":"1"}'
参数说明:[operation:
固定值为rollback其他参数与提交事务一致]
5、查询事务日志
每次进行事务操作时,会生成对应的事务日志信息,以便进行查询,我们通过三种方式查看事务日志。
第一种:查看日志文件
$ cat logs/transaction.json
{"db_name":"demo","TID":"16391190373081","user":"root","begin_time":"1639119037308","state":"COMMITED","end_time":"1639119586782"}
说明:文件路径为gstore_home/logs/transaction.json
第二种:通过接口查询
$ curl -X POST http://127.0.0.1:9000 -H 'Content-Type: application/json' -d '{"operation":"txnlog", "username":"root", "password":"123456"}'
参数说明:[operation:
固定值为txnlogusername:
用户名password:
密码(明文)]
结果示例
{"StatusCode":0,"StatusMsg":"Get Transaction log success","list":[{"db_name":"demo","TID":"16391190373081","user":"root","begin_time":"1639119037308","state":"COMMITED","end_time":"1639119586782"}]}
第三种:通过可视化工具(workbench)查询
除了查询外,还能通过可视化工具执行提交回滚操作
6、checkpoint 将数据写入磁盘
当对数据库进行了insertdelete操作后,需要手动执行checkpoint将数据刷回磁盘(使得数据最终生效),这里需要注意的是,如果还有事务未关闭(即还未执行commitrollback操作),请先关闭事务再执行checkpoint
$ curl -X POST http://127.0.0.1:9000 -H 'Content-Type: application/json' -d '{"operation":"checkpoint", "username":"root", "password":"123456", "db_name":"demo"}'
参数说明:[operation:
固定值为checkpointusername:
用户名password:
密码(明文)db_name:
数据库名称]
7、testConnect 测试连接性
用于检测ghttp是否可连接
$ curl -X POST http://127.0.0.1:9000 -H 'Content-Type: application/json' -d '{"operation":"testConnect", "username":"root", "password":"123456"}'
 参数说明:[operation:
固定值为testConnectusername:
用户名password:
密码(明文)]
8、getCoreVersion 获取gStore版本号
获取gStore版本号信息
$ curl -X POST http://127.0.0.1:9000 -H 'Content-Type: application/json' -d '{"operation":"getCoreVersion", "username":"root", "password":"123456"}'
参数说明[operation:
固定值为getCoreVersionusername:
用户名password:
密码(明文)]
9、batchInsert 批量插入数据
该功能用于批量插入数据,文件要与gstore处于同一服务器
$ curl -X POST http://127.0.0.1:9000 -H 'Content-Type: application/json' -d '{"operation":"batchInsert", "username":"root", "password":"123456", "db_name":"demo", "file":"../batchData.nt"}'
参数说明:[ operation:
固定值为batchInsertusername:
用户名password:
密码(明文)db_name:
数据库名称file:
要插入的数据nt文件(可以是相对路径也可以是绝对路径)]
10、batchRemove 批量删除数据
该功能用于批量删除数据,文件要与gstore处于同一服务器
$ curl -X POST http://127.0.0.1:9000 -H 'Content-Type: application/json' -d '{"operation":"batchRemove", "username":"root", "password":"123456", "db_name":"demo", "file":"../batchRemove.nt"}'
参数说明:[operation:
固定值为batchRemoveusername:
用户名password:
密码(明文);db_name:
数据库名称file:
要插入的数据nt文件(可以是相对路径也可以是绝对路径)]
以上功能为ghttp新增的接口功能,接下来还将介绍其他新增的功能
针对gStore有任何问题也可通过加运营同学微信,邀请加入gStore图谱社区咨询。
诚邀大家参加
·gStore-weekly技术文章征集活动·
  相关技术文章,包含但不限于以下内容:系统技术解析、案例分享、实践总结、开发心得、客户案例、使用技巧、学习笔记等。文章要求原创。
  入选周刊即送精美礼品~
文章转载自图谱学苑,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论