基于rocksdb持久键值存储的图形api实现快速存储

basalt的Python项目详细描述


< H1>玄武岩- C++和Python 图形存储API

玄武岩是一个图形存储api,由rocksdb persistent提供支持 关键价值存储,用于快速存储,如nvme技术。

Build Status

文档目前托管在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'

手动构建和安装说明

要求

  • CMake生成系统,3.5.1版或更高版本。
  • RocksDB,一个持久的键值存储, 4.1.1或更高版本。
  • Python 3,3.5版或更高版本。

获取代码

这个存储库以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

要安装软件包:

  • 使用pippip3 install -U .
  • 使用distutilspython3 setup.py install
  • 要创建二进制tarball:
    • 最简单的:python3 setup.py bdist
    • wheelpip3 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了解更多信息。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java允许具有不同父类的类扩展类,而无需多重继承   java如何创建动态化的JScrollPane w/JPanel作为客户端?   java如何组织和命名包   在Java中读取属性文件   java无法解释的Android意图行为   在Java中动态执行多个BPEL文件的部署   ssl Java 6 SNI(服务器名称指示)?   java我们可以使用Robot框架自动化web和移动应用程序来执行并行执行   java for star pettern的循环   java为什么BinaryReader在线程中,从netty读取错误的数据包?   在java中将华氏度转换为摄氏度   使用Spark和java处理空值和引号编写CSV文件   Java中已排序日期到块的列表   visual studio代码VSCode Java不是linting或自动完成局部变量,而是自动完成Java快捷方式,如“sysout”