基于rocksdb持久键值存储的图形api实现快速存储
basalt的Python项目详细描述
< H1>玄武岩- C++和Python 图形存储API
C++库仅
玄武岩是一个图形存储api,由rocksdb persistent提供支持 关键价值存储,用于快速存储,如nvme技术。
文档目前托管在github上:[https://bluebrain.github.io/玄武岩]
开发阶段
玄武岩的C++和Python API已经稳定,但今后可能会大量增加。因此,这个库的开发状态是beta。用法
C++API
柯南套餐
此库提供了一个Conan包,以便于集成到现有的项目中。
Cmake
也可以使用cmake构建和安装库,请参见下面的build section。
python api
Pypi
玄武岩的python绑定可以在Pypi上找到。
蓝脑5超级计算机
玄武岩目前作为模块发布在Blue Brain 5超级计算机上:
$ module purge $ . /gpfs/bbp.cscs.ch/apps/hpc/jenkins/config/modules.sh $ module load py-basalt $ python3 Python 3.6.3 (default, Oct 32017, 07:47:49)[GCC 6.4.0] on linux Type "help", "copyright", "credits" or "license"for more information. >>> import basalt >>> basalt.__version__ '0.2.2' >>> basalt.__rocksdb_version__ '5.17.2'
手动构建和安装说明
要求
获取代码
这个存储库以git modules的形式获取一些第三方库。
要在克隆玄武岩时克隆它们,请使用git clone --recursive
选项。
如果您已经克隆了玄武岩,那么可以使用
命令:
git submodule update --recursive --init
建立图书馆101
C++库仅构建玄武岩C++共享库并运行测试:
cd /path/to/basalt
mkdir build
pushd build
cmake ..
CTEST_OUTPUT_ON_FAILURE=1 make all test
要安装库:
pushd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local .
make all install
python 3绑定
要生成并运行测试:
cd /path/to/basalt
python3 setup.py test
要安装软件包:
- 使用pip:
pip3 install -U .
- 使用distutils:
python3 setup.py install
- 要创建二进制tarball:
- 最简单的:
python3 setup.py bdist
- wheel:
pip3 install wheel; python3 setup.py bdist_wheel
- 可重定位存档:
python3 setup.py bdist_dumb --relative
cmake变量和目标
主要CMAKE变量:
- {< CD8> }:提供生成目标^ {< CD9> }以检查C++代码格式< /LI>
- {< CD10> }:提供生成目标^ {< CD11> }以执行C++代码
的静态分析
Basalt_ARCH
:给-m
编译器选项的值。例如“native”Basalt_PRECOMMIT:BOOL
:在git提交之前启用自动检查 {< CD15> }:编译优化C++ {< CD16> }:用调试符号< /LI>编译C++
{< CD17> }:用警告< /LI>编译C++
有关更详细的列表,请参阅cmake build目录中的文件CMakeCache.txt
。
cmake目标:
创建纯C++库(无Python绑定)
- {CD20}}:用Python绑定< /LI>构建C++库
< L>
}:构建C++ C++可执行文件,测试C++纯库 all
:构建上面的3个目标test
:执行测试。建议执行命令ctest --output-on-failure -VV
,而不是 < L> }:安装纯C++库和使用Baster所需的CGED配置
在另一个cmake项目中
python setuptools命令
以下是可用的主要python setuptools命令。
build
:构建本机库test
:构建并测试包。它还执行C++单元测试以及狮身人面像文档中的代码片段。install
:安装python包doctest
:执行sphinx文档中的代码片段build_sphinx
:构建sphinx文档
例如:python3 setup.py build_sphinx
文件布局
├── basalt ................... python code of the package
├── cmake
│ └── hpc-coding-conventions git module for C++ code guidelines
├── dev ...................... development related scripts
├── doc ...................... sphinx documentation source code
├── include
│ └── basalt ............... public headers of the C++ library
├── README.md ................ that's me!
├── src
│ ├── basalt ............... C++ library implementation
│ └── third_party .......... C++ libraries (mostly as git modules)
└── tests
├── benchmarks ........... scripts to execute before creating a git tag
├── py ................... python unit-tests
└── unit ................. C++ unit-tests using Catch2
嵌入式第三方
外部库包括复制/粘贴或git子模块
在src/third_party
目录中。
- Catch2:
现代的,C++原生的,只有报头,单元测试的测试框架,TDD
和bdd单元测试库。
- fmt:一个现代格式库
(尚未成为cmake构建的一部分)
- pybind11:C++ 11与Python
之间的无缝操作性
^ {A12}:快速C++日志库。
贡献
如果你想改进这个项目或者你看到任何问题,欢迎你的每一个贡献。
请查看contribution guidelines了解更多信息。
推荐PyPI第三方库
构建玄武岩C++共享库并运行测试:
cd /path/to/basalt mkdir build pushd build cmake .. CTEST_OUTPUT_ON_FAILURE=1 make all test
要安装库:
pushd build cmake -DCMAKE_INSTALL_PREFIX=/usr/local . make all install
python 3绑定
要生成并运行测试:
cd /path/to/basalt python3 setup.py test
要安装软件包:
- 使用pip:
pip3 install -U .
- 使用distutils:
python3 setup.py install
- 要创建二进制tarball:
- 最简单的:
python3 setup.py bdist
- wheel:
pip3 install wheel; python3 setup.py bdist_wheel
- 可重定位存档:
python3 setup.py bdist_dumb --relative
- 最简单的:
cmake变量和目标
主要CMAKE变量:
- {< CD8> }:提供生成目标^ {< CD9> }以检查C++代码格式< /LI>
- {< CD10> }:提供生成目标^ {< CD11> }以执行C++代码 的静态分析
Basalt_ARCH
:给-m
编译器选项的值。例如“native”Basalt_PRECOMMIT:BOOL
:在git提交之前启用自动检查
有关更详细的列表,请参阅cmake build目录中的文件CMakeCache.txt
。
cmake目标:
-
创建纯C++库(无Python绑定)
- {CD20}}:用Python绑定< /LI>构建C++库
< L>
}:构建C++ C++可执行文件,测试C++纯库 all
:构建上面的3个目标test
:执行测试。建议执行命令ctest --output-on-failure -VV
,而不是 < L>
python setuptools命令
以下是可用的主要python setuptools命令。
build
:构建本机库test
:构建并测试包。它还执行C++单元测试以及狮身人面像文档中的代码片段。install
:安装python包doctest
:执行sphinx文档中的代码片段build_sphinx
:构建sphinx文档
例如:python3 setup.py build_sphinx
文件布局
├── basalt ................... python code of the package
├── cmake
│ └── hpc-coding-conventions git module for C++ code guidelines
├── dev ...................... development related scripts
├── doc ...................... sphinx documentation source code
├── include
│ └── basalt ............... public headers of the C++ library
├── README.md ................ that's me!
├── src
│ ├── basalt ............... C++ library implementation
│ └── third_party .......... C++ libraries (mostly as git modules)
└── tests
├── benchmarks ........... scripts to execute before creating a git tag
├── py ................... python unit-tests
└── unit ................. C++ unit-tests using Catch2
嵌入式第三方
外部库包括复制/粘贴或git子模块
在src/third_party
目录中。
- Catch2: 现代的,C++原生的,只有报头,单元测试的测试框架,TDD 和bdd单元测试库。
- fmt:一个现代格式库 (尚未成为cmake构建的一部分)
- pybind11:C++ 11与Python 之间的无缝操作性
贡献
如果你想改进这个项目或者你看到任何问题,欢迎你的每一个贡献。 请查看contribution guidelines了解更多信息。