性能数据库后端#
FlagGems 实现了一个 LibCache 类,用来将性能基准测试数据写入数据库中长期保存。
LibCache 通过 sqlalchemy (一个通用的数据库抽象库)来与具体的数据库后端交互。
与后端数据库的连接信息可以使用环境变量 FLAGGEMS_DB_URL 来设置。
本文档以 SQLite3 和 PostgreSQL 为例讲解数据库后端的配置,
如果需要,你也可以使用其他数据库管理系统来进行类似的配置。
1. SQLite3#
默认的数据库后端是 SQLite3,一种嵌入式数据库。
在运行性能基准测试之前,请确保 sqlite3 库已经被安装。
如果你希望将数据库文件保存在一个特定位置,可以按如下方式设置环境变量:
export FLAGGEMS_DB_URL=sqlite:///${DB_PATH}如果你不想在当前的环境中维护或者复用已经缓存的性能数据,你也可以将 SQLite
作为一种内存数据库来使用。你可以通过按下例所给的方式来设置 FLAGGEMS_DB_URL
环境变量来实现这一点:
export FLAGGEMS_DB_URL=sqlite:///:memory:性能数据会在基准测试进行期间缓存在内存中。测试结束之后,数据库会丢失。
2. PostgreSQL#
作为一种嵌入式数据库,SQLite3 不支持同一时刻存在多个写入者的使用场景。
但是,同时有多个写者写入性能数据是一种很常见的使用情况。
出于这一原因,我们也支持类似 PostgreSQL 这类数据库作为后端数据库。
与嵌入式数据库不同,PostgreSQL 在使用之前需要一些额外的安装部署操作。
你可以参阅 PostgreSQL 文档
了解安装指令。需要注意的是,你在使用 PostgreSQL 之前必须安装 psycopg Python 包。
有了类似于 PostgreSQL 这类后端数据库,你就可以将其作为一种远程数据库, 支持多个 FlagGems 实例同时与它建立连接,共享基准测试数据结果。
创建了自己的数据库之后,你可以使用下面的环境变量将数据库的 URL 告知 FlagGems 的基准测试框架。
export FLAGGEMS_DB_URL=postgresql+psycopg:///${user}:${password}@${host}:${port}/${db}如果你是在本地机器上运行 PosgtreSQL 数据库实例,并且你的账号具有直接访问数据库的权限,
你可以按下面的方式来设置 FLAGGEMS_DB_URL 环境变量:
export FLAGGEMS_DB_URL=postgresql+psycopg:///${db}