在 Postgresql 中存储版本的最佳方式

Ale*_*sov 3 python sql database postgresql database-design

我现在正在开发一个 API,我想存储使用日志。我的 API 目前有几个活动版本,在日志中我希望能够按版本进行排序和搜索。

现在版本以某种格式vX.X.XX(从 开始v0.0.16)保存为字符串(varchar),因此无法通过where api_version > "vX.X.XX"查询进行搜索。因此,这不是我的情况的最佳解决方案,我想切换到数字。

varchar 版本可以通过 Postgresql 进行排序,但速度相当慢。

在Python版本中创建为元组(例如(1, 0, 0)),因此可以轻松排序。

有没有在 PostgreSQL 中存储版本的最佳方法?执行此操作的最佳类型是什么,并且在排序和搜索方面具有不错的速度性能?

Fom*_*aut 5

我认为,一个简单的解决方案是尝试使用数组作为版本字段的数据类型。在你的情况下可能是int[]

带有版本的表的示例:

create table tbl (
    id serial not null primary key,
    "version" int[] null
);
Run Code Online (Sandbox Code Playgroud)

之后,您可以像处理数组一样按版本进行过滤、排序或分组。

select * from tbl where "version" > array[2, 3, 10] order by "version";
Run Code Online (Sandbox Code Playgroud)