试用nebulagraph

按照手册的快速入门,本地部署操作,基本没什么问题。有一些注意事项NebulaGraph Database 手册 (nebula-graph.com.cn)

默认安装路径在/usr/local/nebula

ip的问题

  • 在步骤3的时候
$ ./nebula-console -addr <ip> -port <port> -u <username> -p <password>
  [-t 120] [-e "nGQL_statement" | -f filename.nGQL]
  • 注意这里,-addr <ip>用本机的ip,-port <port>可以用默认的端口,graph的默认端口是9669,和配置文件中的一致,配置文件在安装路径的etc文件夹中
  • 由于我是在容器中安装测试的nebulagraph,所以需要查看容器的ip地址,就得退出容器,在主服务器中运行
docker inspect <container_id> | grep IPAddress

  • 其他的都用默认即可,例如,我打开nebula-console的命令是
./nebula-console -addr 172.17.0.2 -port 9669 -u root -p 12345678

修改配置文件

  • 需要去修改配置文件,不然在步骤四注册Storage服务的时候会出错
  • 修改nebula-graphd.confnebula-metad.confnebula-storaged.conf三个配置文件

  • 三个配置文件类似,主要是把这两个ip改为本机ip

nebulagraph三个服务对应的端口号

  • graph对应的默认端口号9669
  • meta对应的默认端口号9559
  • storage对应的默认端口号9779

然后增加storage主机,ip还是本机ip,记得端口号是9779

显示Status "ONLINE"就对了

Nebula-importer

接下来用nebula-importer从本机导入csv文件

我是用对应的二进制包安装的,nebulagraph的版本是3.6,对应下载的安装包版本是4.0Release NebulaGraph Importer 4.1.0 · vesoft-inc/nebula-importer (github.com)

然后直接用命令

dpkg -i <package_name>

默认安装路径在/usr/bin

然后要自己创建yaml配置文件,复制并修改官网上的配置文件内容使用 NebulaGraph Importer - NebulaGraph Database 手册 (nebula-graph.com.cn)

有几个地方需要注意:

Client

client:
  version: v3
  address:
"172.17.0.2:9669" # 要改为自己的ip
  user: root
  password: 12345678 # 改为自己的用户名和密码

  ssl:
    enable:
false
    certPath: "/home/xxx/cert/importer.crt"
    keyPath: "/home/xxx/cert/importer.key"
    caPath: "/home/xxx/cert/root.crt"
    insecureSkipVerify: false
  concurrencyPerAddress: 10
  reconnectInitialInterval: 1s
  retry: 3
  retryInitialInterval: 1s

manager

manager:
  spaceName: mars_test_1 # 改为要创建的SPACE的名字
  batch: 128
  readerConcurrency: 50
  importerConcurrency: 512
  statsInterval: 10s
  hooks:
    before:
      - statements:
        - |
            DROP SPACE IF EXISTS mars_test_1; # 改为要创建的SPACE的名字
            CREATE SPACE IF NOT EXISTS mars_test_1(vid_type=FIXED_STRING(30)); # 改为要创建的SPACE的名字,并且vid_type要先指定,指定为String比较方便
            USE mars_test_1; # 改为要创建的SPACE的名字

             CREATE TAG IF NOT EXISTS observationobject(id string, name string); # 这里就是先创建了一个tag,然后csv文件对应的也是这个tag,csv文件里的内容是实体

这是对应的csv数据文件

            # 在这里先定义好schema,就是创建好tag什么的,不知道直接在console里创建好行不行,但是为了方便统一,我还是直接在这里定义


        wait: 10s
    after:
      - statements:
          - |
            SHOW SPACES;

log

log:
  level: INFO
  console: true
  files:
    - /usr/local/nebula/logs/nebula-importer.log   # 需要自己创建

Source

sources:
  - path: /home/nebulagraph/observationobject.csv  # csv文件的位置

    batch: 256
    csv:
      delimiter: "," # csv文件的分隔符,用“,”作为分隔符的时候,如果属性里有“,”,需要把整个用双引号括起来CSV格式特殊字符转义处理_csv转义字符-CSDN博客
      withHeader: false
      lazyQuotes: false
    tags:
    - name: observationobject # tag的名字
#      mode: INSERT
#      filter:  
#        expr: Record[1] == "XXX"
      id:
        type: "STRING"
        #function: "hash" #这是用哈希函数,这里如果用了哈希函数,输出就是int,如果这里要用哈希函数,那么在前面CREATE TAG的时候就要把vid设置为整数
       index: 0        # 用什么作为vid,这里我直接用第一列作为vid
        #concatItems:
          #- person_
          #- 0
          #- _id
      props: # 属性和前面的CREATE TAG那里对应
        - name: "id"
          type: "STRING"
          index: 0
        - name: "name"
          type: "STRING"
          index: 1

import数据

进入nebula-importer安装文件夹,运行

./nebula-importer --config <yaml file path>

显示这个应该就是成功了

检索实验

为了测试,把文件改了,两个天体顶点,在属性v.name里,有两个取值,用英文逗号分隔,看看检索的时候,用CONTAINS就可以通过检索一个值找到这个顶点

当前的csv文件

检索属性中含有“火星”字段的顶点,

 > MATCH (v) \
-> WITH v, properties(v) as props, keys(properties(v)) as kk \
-> WHERE [i in kk where props[i] CONTAINS "火星"] \
-> RETURN v;

得到结果

OK成功!

TODO

接下来要看真实数据去了,真实数据很大,应该要用到集群部署,单机怕是不够了。感觉集群部署又是很多坑。唉。

WithHeader功能

今天测试了一下真实数据和WithHeader功能。有表头配置说明 - NebulaGraph Database 手册 (nebula-graph.com.cn)

tag:observed_region_withheader,第一行是表头,直接在csv文件里配置好了,就不用在yaml配置文件里配置了。

数据文件是这样的

还是第一列是vid,表头写成 :VID(string)

第二列开始是属性,用 tagname.property: 数据类型 的形式,例如我这里第二列是name,表头就是 observed_region_wither.name: string

然后是yaml配置文件中

csv.withHeader参数设置为true,tag.id表示VID,还是定义index: 0,即用第一列作为VID,就可以了

目前的yaml配置文件,记录一下

client:
  version: v3
  address: "172.17.0.2:9669"
  user: root
  password: 12345678
  ssl:
    enable: false
    certPath: "/home/xxx/cert/importer.crt"
    keyPath: "/home/xxx/cert/importer.key"
    caPath: "/home/xxx/cert/root.crt"
    insecureSkipVerify: false
  concurrencyPerAddress: 10
  reconnectInitialInterval: 1s
  retry: 3
  retryInitialInterval: 1s
manager:
  spaceName: import_observed_region_withheader_test
  batch: 128
  readerConcurrency: 50
  importerConcurrency: 512
  statsInterval: 10s
  hooks:
    before:
      - statements:
        - |
            DROP SPACE IF EXISTS import_observed_region_withheader_test;
            CREATE SPACE IF NOT EXISTS import_observed_region_withheader_test(vid_type=FIXED_STRING(50));
            USE import_observed_region_withheader_test;
            CREATE TAG IF NOT EXISTS observed_region_withheader(name string, alias string);
        wait: 10s
    after:
      - statements:
          - |
            SHOW SPACES;
log:
  level: INFO
  console: true
  files:
    - /usr/local/nebula/logs/nebula-importer.log
sources:
  - path: /home/nebulagraph/SearchData_Mars_Solar/vertex/observed_region_withheader.csv
    batch: 256
    csv:
      delimiter: ","

      withHeader: true
      lazyQuotes: false
    tags:
    - name: observed_region_withheader
#      mode: INSERT
#      filter:
#        expr: Record[1] == "XXX"
      id:
        type: "STRING"
#        #function: "hash"
        index: 0

        #concatItems:
        # - object_
        # - 0
        # - _id
      props:
        - name: "name"
          type: "STRING"
          index: 1
        - name: "alias"
          type: "STRING"
          index: 2

插入边和边的检索(withheader)

在csv文件中定义,测试的边是观测台站的载荷,"Observation_Carry_Instrument",没有属性,如果边有属性的话就在后面加一列属性,edgename.propertyname: 数据类型,即可。当前的csv文件是

第一列是 source的VID :SRC_VID(string),第二列是destination的VID :DST_VID(string)

然后在yaml配置文件中,定义schema,先要创建边

  • 在manager.hooks.before.statements里加上CREATE EDGE IF NOT EXISTS Observation_Carry_Instrument();
  • 在sources里加上边

- path: /home/nebulagraph/SearchData_Mars_Solar/edge_withheader/Observation_Carry_Instrument_withheader.csv
    batch: 256
    edges:
    - name: Observation_Carry_Instrument
      src:
        id:
          type: "STRING"
          index: 0

好了以后可以测试一下检索,检索observation这个tag下所有点的所有边

> MATCH (v: observation) -[e]->() RETURN e

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
系统根据B/S,即所谓的电脑浏览器/网络服务器方式,运用Java技术性,挑选MySQL作为后台系统。系统主要包含对客服聊天管理、字典表管理、公告信息管理、金融工具管理、金融工具收藏管理、金融工具银行卡管理、借款管理、理财产品管理、理财产品收藏管理、理财产品银行卡管理、理财银行卡信息管理、银行卡管理、存款管理、银行卡记录管理、取款管理、转账管理、用户管理、员工管理等功能模块。 文中重点介绍了银行管理的专业技术发展背景和发展状况,随后遵照软件传统式研发流程,最先挑选适用思维和语言软件开发平台,依据需求分析报告模块和设计数据库结构,再根据系统功能模块的设计制作系统功能模块、流程表和E-R。随后设计架构以及编写代码,并实现系统能模块。最终基本完成系统检测和功能测试。结果显示,该系统能够实现所需要的作用,工作状态没有明显缺陷。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。进入银行卡列表,管理员可以进行查看列表、模糊搜索以及相关维护等操作。用户进入系统可以查看公告和模糊搜索公告信息、也可以进行公告维护操作。理财产品管理页面,管理员可以进行查看列表、模糊搜索以及相关维护等操作。产品类型管理页面,此页面提供给管理员的功能有:新增产品类型,修改产品类型,删除产品类型。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值