Nebula CPP

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

前提条件

版本对照表

Nebula Graph版本Nebula CPP版本
2.5.12.5.0
2.0.12.0.0
2.0.02.0.0

安装Nebula CPP

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

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

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

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

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

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

    Note

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

    1. $ cmake -DCMAKE_BUILD_TYPE=Release ..

    Note

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

  5. 编译Nebula CPP。

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

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

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

    1. $ sudo ldconfig

使用方法

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

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

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

    1. $ 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

    示例:

    1. $ 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

  1. nebula::init(&argc, &argv);
  2. auto address = "192.168.xx.1:9669";
  3. nebula::ConnectionPool pool;
  4. pool.init({address}, nebula::Config{});
  5. auto session = pool.getSession("root", "nebula");
  6. auto result = session.execute("SHOW HOSTS");
  7. std::cout << *result.data;
  8. std::atomic_bool complete{false};
  9. session.asyncExecute("SHOW HOSTS", [&complete](nebula::ExecutionResponse&& cbResult) {
  10. std::cout << *cbResult.data;
  11. complete.store(true);
  12. });
  13. session.release();

最后更新: August 31, 2021