#gStore最新版1.2之空库的构建和批量数据构建

gStore1.2版本支持了空库的构建和批量数据构建,接下来我们将从本地命令、控制台、API接口三种方式来进行介绍如何使用:

1 使用本地命令构建

1.1 构建空库

通过本地命令构建数据库的方式如下,如果要构建一个空库,只要不指定-f参数即可

$ bin/gbuild -db [db_name] -f [filename]
#Options:
#  -h, --help           Display this message.
#  -db,--database,      the database name. 
#  -f, --file[option],  the file path for building.
  • 参数 -db : 指定数据库名

    -f : 数据文件路径,如果不指定则构建一个空库

  • 示例

    # 执行构建命令
    $ bin/gbuild -db blankDB
    #......
    #after Parsing, used 1ms.
    #write priviledge of update lock acquired
    #QueryCache cleared
    #Query time used (minus parsing): 0ms.
    #Total time used: 1ms.
    #Saving database info: update num 3
    #Build RDF database database_name successfully! Used 24 ms
    
    # 查看blankDB信息
    $ bin/gmonitor -db blankDB
    #......
    #---------------------------------------
    #|     name      |        value        |
    #---------------------------------------
    #| database      | blankDB             |
    #| creator       | root                |
    #| built_time    | 2023-11-27 09:34:44 |
    #| triple_num    | 0                   |
    #| entity_num    | 0                   |
    #| literal_num   | 0                   |
    #| subject_num   | 0                   |
    #| predicate_num | 0                   |
    #| disk_used     | 0 MB                |
    #---------------------------------------
    
1.2 批量数据构建

如果有多个数据文件需要一次性构建到新库中,之前我们的做法是把多个文件合成一个大文件再执行构建命令,现在我们支持把多个文件打成一个压缩包(目前只支持zip包格式),再通过以下命令进行构建。

$ bin/gbuild -db [database_name] -f [zip_file_path]
  • 参数 -db : 指定数据库名

    -f : 指定构建数据库的zip文件路径(数据文件处于zip包的更目录下)

    # zip文件结构示例
    |-lubm.zip
    |__lubm1.nt
    |__lubm2.nt
    |__lubm3.nt
    
  • 示例

    $ bin/gbuild -db batchDB -f ./data/lubm/lubm.zip
    #......
    #after Parsing, used 1ms.
    #write priviledge of update lock acquired
    #QueryCache cleared
    #Query time used (minus parsing): 0ms.
    #Total time used: 1ms.
    #Saving database info: update num 3
    #Build RDF database database_name successfully! Used 972 ms
    

2 使用gconsole构建

第二种方式可通过控制台来完成,首先通过gconsole进入控制台模式:

# 回车输入root用户密码
$ bin/gconsole -u root

# 进入控制台模式后将打印以下信息,并等待执行新的指令
#Gstore Console(gconsole), an interactive shell based utility to communicate with gStore repositories.
#Gstore version: 1.2 Source distribution
#Copyright (c) 2016, 2022, pkumod and/or its affiliates.

#Welcome to the gStore Console.
#Commands end with ;. Cross line input is allowed.
#Comment start with #. Redirect (> and >>) is supported.
#CTRL+C to quit current command. CTRL+D to exit this console.
#Type 'help;' for help. 

#File open failed: bin/.gconsole_history/root
$ gstore[no database]> 
2.1 构建空库
$ create [database_name];
  • 参数 database_name : 数据库名

  • 返回值

    执行成功后,控制台会打印如下信息

    ......
    finish encode.
    Finish sub2id pre2id obj2id
    TripleNum is 1
    EntityNum is 1
    PreNum is 1
    LiteralNum is 1
    Database database_namecreated successfully.
    
2.2 批量数据构建
create [database_name] [zip_file_path];
  • 参数 database_name : 数据库名 zip_file_path : 构建数据库的zip文件路径

  • 返回值

    执行成功后,控制台会打印如下信息

    ......
    finish encode.
    Finish sub2id pre2id obj2id
    TripleNum is 26
    EntityNum is 33
    PreNum is 1
    LiteralNum is 9
    Database database_namcreated successfully. 
    

3 使用API构建

第三种方式就是通过API接口来完成,首先需要启动API接口服务,grpcghttp均可(不建议二者同时启动)

# grpc服务
$ bin/grpc -p 9000

# ghttp服务
$ bin/ghttp -p 9000
  • 请求URL grpc: http://127.0.0.1:9000/grpc/api

    ghttp: http://localhost:9000

  • 参数

    参数名 必选 类型 说明
    operation string 操作名称,固定值为**build**
    username string 用户名
    password string 密码(明文)
    encryption string 为空,则密码为明文,为1表示用md5加密
    db_name string 数据库名称
    db_path string 数据库文件路径(可以是绝对路径,也可以是相对路径,相对路径以gStore根目录为参照目录),路径为空即构建空库
3.1 构建空库
  • 请求参数

    {
        "operation": "build",
        "username": "root",
        "password": "123456",
        "encryption": "0",
        "db_name": "blankDB"
    }
    
  • 请求示例

    # grpc示例
    $ curl -H "Content-Type: application/json" -d '{"username":"root","password":"123456","encryption":"0","operation":"build","db_name":"blankDB"}' http://127.0.0.1:9000/grpc/api
    
    # ghttp示例
    $ curl -H "Content-Type: application/json" -d '{"username":"root","password":"123456","encryption":"0","operation":"build","db_name":"blankDB"}' http://127.0.0.1:9000
    
  • 返回值

    {"StatusCode":0,"StatusMsg":"Import RDF file to database done.","failed_num":0}
    
3.2 批量数据构建
  • 请求参数

    {
        "operation": "build",
        "username": "root",
        "password": "123456",
        "encryption": "0",
        "db_name": "batchDB",
        "db_path": "./upload/lubm.zip"
    }
    

    【备注】zip文件可以通过upload接口(详见接口文档)上传到服务器,zip文件结构见1.2中zip文件结构示例

  • 请求示例

    # grpc示例
    $ curl -H "Content-Type: application/json" -d '{"username":"root","password":"123456","encryption":"0","operation":"build","db_name":"batchDB","db_path":"./upload/lubm.zip"}' http://127.0.0.1:9000/grpc/api
    
    # ghttp示例
    $ curl -H "Content-Type: application/json" -d '{"username":"root","password":"123456","encryption":"0","operation":"build","db_name":"batchDB","db_path":"./upload/lubm.zip"}' http://127.0.0.1:9000
    
  • 返回值

    {"StatusCode":0,"StatusMsg":"Import RDF file to database done.","failed_num":0}
    

以上为gStore1.2中支持空库构建和批量数据构建的使用详解,下一篇我们将介绍gStore1.2中新增内置高级函数的使用详解。

相关推荐
我是黄大仙1 分钟前
利用飞书多维表格自动发布版本
运维·服务器·数据库·飞书
曾经的三心草1 分钟前
Mysql之约束与事件
android·数据库·mysql·事件·约束
WuMingf_8 分钟前
redis
数据库·redis
张某布响丸辣16 分钟前
SQL中的时间类型:深入解析与应用
java·数据库·sql·mysql·oracle
汤米粥1 小时前
怎么样绑定域名到AWS(亚马逊云)服务器
服务器·云计算·aws
写bug的小屁孩1 小时前
websocket初始化
服务器·开发语言·网络·c++·websocket·网络协议·qt creator
P.H. Infinity1 小时前
【RabbitMQ】10-抽取MQ工具
数据库·分布式·rabbitmq
zgscwxd2 小时前
thinkphp6 --数据库操作 增删改查
数据库·thinkphp6
代码小鑫2 小时前
A031-基于SpringBoot的健身房管理系统设计与实现
java·开发语言·数据库·spring boot·后端