项目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如何运行一个在播放歌曲的同时创建和更改UI的方法?   eclipse错误:无法找到或加载主类Java,因为类文件anme和类名不同?   两个数字相加得到一个值的java算法   java我可以更改字符串吗?   java Hibernate 5.2:以编程方式从其他jar加载映射   java如何访问随机跳转到固定位置的二进制文件   java是解析器实现中文档的功能   Javasocket的两端齐平   java查找将两个非常大的整数之和除以相等块的步骤   java如何在Restlet中调用带超时的异步HTTP客户端   java如何从servlet请求将hashmap传递给jsp。塞塔提布特   java Spring MVC HTTP状态500–内部服务器错误,Servlet。servlet[dispatcher]的init()引发异常   java即使没有alpha通道,如何将PNGFiles加载为ARGB_8888?   java将subscribe的返回类型映射到其他类型   javascript如何在安卓 WebView中启用longpress操作下载图像?   java将字符串作为hashmap值的一部分添加到StringList中   JavaSpringAOP:代表类型声明其他方法或字段   Java将二进制序列转换为字符   java使用ApachePOI获取最后一行值   为什么要在FPS(每秒帧数)跟踪器中添加时间?(爪哇)