项目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