项目thoth中提供的存储和数据库适配器

thoth-storages的Python项目详细描述


这个库提供一个名为thoth-storages的库,用于项目Thoth。库公开核心查询和方法 对于dgraph数据库以及通过its使用ceph的适配器 S3兼容的API。

安装和使用

库可以通过pip或pipenv从 PyPI

pipenv install thoth-storages

库不提供任何cli,而是一个低级库 支撑着透特的其他部分。

您可以通过以下命令运行准备好的测试套件:

pipenv install --dev
pipenv run python3 setup.py test

# To generate docs:
pipenv run python3 setup.py build_sphinx

自动生成图形数据库的架构

从中定义的模型自动生成图形数据库的架构 此模块,运行:

PYTHONPATH=. pipenv run python3 ./create_schema.py --output thoth/storages/graph/schema.rdf

运行此命令后,将更新描述架构的rdf文件 基于模型的变化。

fromthoth.storagesimportGraphDatabase# Also provide configuration if needed.graph=GraphDatabase()graph.connect()graph.initialize_schema()

在本地运行dgraph

您可以使用存储库中的Docker compose来运行本地dGraph实例。它不使用TLS证书(因此您不能提供graph\u tls\u path环境变量)。

$ docker-compose up

在运行上述命令(确保您的大型胖守护进程正在使用systemctl start docker)之后,您应该能够访问本地主机9080上的本地dgraph实例。这也是dgraph适配器的默认配置-您不需要显式地提供graph服务主机。

提供的docker compose也启用了ratel,以便为图形数据库内容提供ui。要访问它,请访问http://localhost:8000/

提供的docker compose使用从/tmp装入的卷。重新启动计算机后,内容将不再可用。

如果您想以编程方式尝试dgraph,可以使用以下代码片段作为起点:

fromthoth.storagesimportGraphDatabasegraph=GraphDatabase()graph.connect()# To clear database:# graph.drop_all()# To initialize schema in the graph database:# graph.initialize_schema()

部署中的架构调整

可以在deployemnt中执行模式调整。这很重要 没有打开的事务(只需重试架构创建,直到它 成功)。为此,可以在管理api上使用相关端点。

如果类型发生更改,dgraph将尝试自动执行转换 从旧类型到新模式中描述的新类型(例如float to 字符串)。架构更改无效(例如将字符串解析为浮点,但是 字符串不能被分析为浮点)导致架构更改错误。这些错误 需要由部署管理员以编程方式处理(最好避免 这样的转换)。

创建自己的绩效指标

您可以创建自己的性能指标。创造自己的表演 指示器,创建测试库所需功能的脚本。一个 例如performance中的矩阵乘法脚本 储存库。此脚本可以提供给依赖项猴子以验证 所需运行时和构建时环境中的库的某些组合 或者直接在amun api上,它将使用所需的软件运行给定的脚本 以及硬件配置。请按照说明创建 性能脚本显示在README of performance repo

要创建相关的模型,请调整thth/storages/graph/performance.py 并添加您的模型。描述参数(在 绩效指标结果)和结果(报告在@result中)。的名称 类应与性能指标运行报告的名称匹配。

@attr.s(slots=True)classPiMatmul(PerformanceIndicatorBase):"""A class for representing a matrix multiplication micro-performance test."""SCHEMA_PARAMETERS=Schema({Required("matrix_size"):int,Required("dtype"):str,Required("reps"):int,Required("device"):str,})SCHEMA_RESULT=Schema({Required("elapsed"):float,Required("rate"):float,})# Device used during performance indicator run - CPU/GPU/TPU/...device=model_property(type=str,index="exact")matrix_size=model_property(type=int,index="int")dtype=model_property(type=str,index="exact")reps=model_property(type=int,index="int")elapsed=model_property(type=float)rate=model_property(type=float)

创建相关模型后,将模型注册到所有性能模型并重新生成图形数据库模式(如上所述)。

对dgraph进行查询的联机调试

可以将对dgraph实例执行的所有查询打印到logger。为此,请设置以下环境NT变量:

export THOTH_LOG_STORAGES=DEBUG
export THOTH_STORAGES_DEBUG_QUERIES=1

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

推荐PyPI第三方库


热门话题
java从JSP或HTML向servlet发送多个参数   java方法来查看字符是否在字符数组中   使用带有java的MAC地址连接到设备   java如何将csv文件中的数据打印到secondactivity?   java如何从netbean 7.0.1连接到数据库   java考虑所有可能的类值,用于输出测试分割的预测值。   java我的actionListener调用有什么问题   swing在Java中实现粒子过滤器最有效的方法是什么?   java运行。getFontFamily()为返回null。使用apachepoi的docx文件   一个事务中的java领域循环与每个步骤循环中的一个事务   java日期格式与Spring Boot不兼容   java类冲突。处理   java GridBagLayout不工作   java将图像发送到另一个应用程序