性能数据库后端#

FlagGems 实现了一个 LibCache 类,用来将性能基准测试数据写入数据库中长期保存。 LibCache 通过 sqlalchemy (一个通用的数据库抽象库)来与具体的数据库后端交互。

与后端数据库的连接信息可以使用环境变量 FLAGGEMS_DB_URL 来设置。 本文档以 SQLite3PostgreSQL 为例讲解数据库后端的配置, 如果需要,你也可以使用其他数据库管理系统来进行类似的配置。

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}