• 图数据库(Nebula)使用时遇到的坑


    一、单元测试

    通过Nebula提供的Java Client完成代码开发后,使用JUnit对其进行单元测试,需要注意几点:

    1.1 坑

    1.Nebula创建图空间是异步实现的,Nebula将在下一个心跳周期内(默认是10s)完成图空间的创建

      如果单元测试代码中有动态创建、删除图空间的语句,单元测试结果可能是不确定的,时好时坏

    2.如果单元测试中有动态创建Tag、EdgeType,单元测试结果可能是不确定的,时好时坏

    1.2 解决方案

    1.基于前面的两种不确定性,建议提前手动创建好:

      图空间(相当于关系数据库)、Tag(相当于关系数据库中的表)、EdgeType(相当于关系数据库中的表)

      只对Vertex以及Edge进行动态插入删除操作,这样单元测试的结果是稳定的,不会出现时好时坏的现象

    2.如果使用JUnit5进行单元测试,建议:

     在@BeforeAll注解的方法里进行Vertex及Edge的初始化

     在@AfterAll注解的方法里进行Vertex及Edge的清除、Nebula会话的释放、连接池的关闭等操作

    二、Java Client线程不安全

    2.1 坑

    Nebula提供的Java Client是线程不安全的,当多个线程同时跑时,会出现IO异常:

    com.vesoft.nebula.client.graph.exception.IOErrorException: java.net.SocketException: Broken pipe (Write failed)

    所以使用Java Client的,只能用一个线程跑,没有充分利用多线程优势,这真是Nebula Java Client最大的坑

    2.2 解决方案

    1.将Java Client封装为单例

    2.如果Nebula与Flink等流计算框架相结合,则需要设置并行度为1

  • 相关阅读:
    SecureCRT远程控制ubuntu
    zedboard启动过程分析
    zedboard之ubuntu环境变量设置
    理解 pkg-config 工具
    linux下 tar解压 gz解压 bz2等各种解压文件使用方法
    zedboard搭建交叉编译环境
    一步一步学ZedBoard & Zynq(四):基于AXI Lite 总线的从设备IP设计
    zedboard 中SDK 修改串口设置(波特率。。。。)
    VC 2010下安装OpenCV2.4.4
    VS2010恢复默认编辑环境的设置
  • 原文地址:https://www.cnblogs.com/liugh/p/14965266.html
Copyright © 2020-2023  润新知