
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 | 查询数据库(带事务) | 带事务模式的数据查询(仅限于insert和delete) | 新增 |
21 | commit | 提交事务 | 事务完成后提交事务 | 新增 |
22 | rollback | 回滚事务 | 回滚事务到begin状态 | 新增 |
23 | txnlog | 获取transaction的日志信息 | 以json返回transcation的日志信息 | 新增 |
24 | checkpoint | 将数据写入磁盘 | 当对数据库进行了insert或delete操作后,需要手动执行checkpoint | 新增 |
25 | testConnect | 测试连接性 | 用于检测ghttp是否连接 | 新增 |
26 | getCoreVersion | 获取gStore版本号 | 获取gStore版本号 | 新增 |
27 | batchInsert | 批量插入数据 | 批量插入NT数据 | 新增 |
28 | batchRemove | 批量删除数据 | 批量删除NT数据 | 新增 |
接下来我们就逐一来演示每个功能如何使用。我们首先启动ghttp服务,并指定服务端口号为9000:
$ nohup bin/ghttp -p 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:
固定值(取值1、2、3;其中1表示新增,2表示删除,3表示修改);username:
当前操作用户(会校验操作此用户的权限和密码);password:
当前操作用户密码;op_username:
新用户的用户名;op_password:
新用户的密码]
$ 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
$ 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 用户权限管理
$ 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:固定值(取值1、2、3;其中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:export);
db_name: 需要操作的数据库]
$ 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: 固定值2;
privileges:需要删除的权限(多个权限使用逗号分隔)如7:export
$ 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参数值为3,
privileges和
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:固定值为login;
username: 用户名;
password: 密码(明文)]
# 成功
{ "StatusCode": 0, "StatusMsg": "login successfully", "CoreVersion": "0.9.1", "licensetype": "" }
# 密码错误
{
"StatusCode": 1001,
"StatusMsg": "wrong password."
}
4、事务处理模块
$ 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:固定值为begin;
username:用户名;
password: 密码(明文);
db_name: 数据库名称;
isolevel:事务隔离等级 1:RC(read committed) 2:SI(snapshot isolation) 3:SR(seriablizable)]
{
"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: 固定值为tquery;
username: 用户名;
password: 密码(明文);
db_name: 数据库名称;
tid:事务ID(第一步返回的结果中TID的值);
sparql:sparql语句(仅限于insert和delete)]
"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: 固定值为commit;
username: 用户名;
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、查询事务日志
{"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:固定值为txnlog;
username: 用户名;
password: 密码(明文)]

6、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: 固定值为checkpoint;
username: 用户名;
password:密码(明文);
db_name: 数据库名称]
7、testConnect 测试连接性
$ curl -X POST http://127.0.0.1:9000 -H 'Content-Type: application/json' -d '{"operation":"testConnect", "username":"root", "password":"123456"}'operation: 固定值为testConnect;
username:用户名;
password: 密码(明文)]
8、getCoreVersion 获取gStore版本号
$ curl -X POST http://127.0.0.1:9000 -H 'Content-Type: application/json' -d '{"operation":"getCoreVersion", "username":"root", "password":"123456"}'operation:固定值为getCoreVersion;
username: 用户名;
password:密码(明文)]
9、batchInsert 批量插入数据
$ 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: 固定值为batchInsert;
username:用户名;
password:密码(明文);
db_name: 数据库名称;
file:要插入的数据nt文件(可以是相对路径也可以是绝对路径)]
10、batchRemove 批量删除数据
$ 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: 固定值为batchRemove;
username: 用户名;
password: 密码(明文);
db_name:数据库名称;
file: 要插入的数据nt文件(可以是相对路径也可以是绝对路径)]
针对gStore有任何问题也可通过加运营同学微信,邀请加入gStore图谱社区咨询。






