跳转至

Nebula CPP

Nebula CPP 是一款 C++语言的客户端,可以连接、管理 Nebula Graph 图数据库。

前提条件

  • 已安装 C++,GCC 版本为 4.8 及以上。

版本对照表

Nebula Graph 版本 Nebula CPP 版本
2.6.2 2.5.0
2.0.1 2.0.0
2.0.0 2.0.0

安装 Nebula CPP

  1. 克隆 Nebula CPP 源码到机器。

    • (推荐)如果需要安装指定版本的 Nebula CPP,请使用选项--branch指定分支。例如安装 v2.5.0发布版本,请执行如下命令:

      $ git clone --branch v2.5.0 https://github.com/vesoft-inc/nebula-cpp.git
      
    • 如果需要安装日常开发版本,请执行如下命令下载master分支的源码:

      $ git clone https://github.com/vesoft-inc/nebula-cpp.git
      
  2. 进入目录 nebula-cpp。

    $ cd nebula-cpp
    
  3. 创建目录 build 并进入该目录。

    $ mkdir build && cd build
    
  4. 使用 CMake 生成 makefile 文件。

    Note

    默认安装路径为/usr/local/nebula,如果需要修改路径,请在下方命令内增加参数 -DCMAKE_INSTALL_PREFIX=<installation_path>

    $ cmake -DCMAKE_BUILD_TYPE=Release ..
    

    Note

    如果 g++不支持 c++11,请添加选项-DDISABLE_CXX11_ABI=ON

  5. 编译 Nebula CPP。

    为了适当地加快编译速度,可以使用选项-j并行编译。并行数量N建议为\(\min(\text{CPU}核数,\frac{内存 (GB)}{2})\)

    $ make -j{N}
    
  6. 安装 Nebula CPP。

    $ sudo make install
    
  7. 更新动态链接库。

    $ sudo ldconfig
    

使用方法

将 CPP 文件编译为可执行文件即可。接下来以SessionExample.cpp为例,介绍如何操作。

  1. 使用示例代码创建SessionExample.cpp文件。

  2. 编译文件,命令如下:

    $ LIBRARY_PATH=<library_folder_path>:$LIBRARY_PATH g++ -std=c++11 SessionExample.cpp -I<include_folder_path> -lnebula_graph_client -o session_example
    
    • library_folder_path:Nebula Graph 动态库文件存储路径,默认为/usr/local/nebula/lib64
    • include_folder_path:Nebula Graph 头文件存储路径,默认为/usr/local/nebula/include

    示例:

    $ LIBRARY_PATH=/usr/local/nebula/lib64:$LIBRARY_PATH g++ -std=c++11 SessionExample.cpp -I/usr/local/nebula/include -lnebula_graph_client -o session_example
    

核心代码

详细示例请参见 SessionExample

nebula::init(&argc, &argv);
auto address = "192.168.xx.1:9669";
nebula::ConnectionPool pool;
pool.init({address}, nebula::Config{});
auto session = pool.getSession("root", "nebula");

auto result = session.execute("SHOW HOSTS");
std::cout << *result.data;

std::atomic_bool complete{false};
session.asyncExecute("SHOW HOSTS", [&complete](nebula::ExecutionResponse&& cbResult) {
    std::cout << *cbResult.data;
    complete.store(true);
});
session.release();

最后更新: March 7, 2023