跳转至

Nebula CPPGraph

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

前提条件Graph

  • 已安装C++,GCC版本为4.8及以上。
  • 编译安装需要准备正确的编译环境,详情请参见Graph。

版本对照表Graph

NebulaGraph版本 Nebula CPP版本
2.5.1 2.5.0
2.0.1 2.0.0
2.0.0 2.0.0

安装Nebula CPPGraph

  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
    

使用方法Graph

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

  1. 使用Graph创建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:NebulaGraph动态库文件存储路径,默认为/usr/local/nebula/lib64
    • include_folder_path:NebulaGraph头文件存储路径,默认为/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
    

核心代码Graph

详细示例请参见Graph。

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();

最后更新: August 31, 2021
Back to top