我现在正在开发一个 API,我想存储使用日志。我的 API 现在有几个事件版本,在日志中我希望能够按版本排序和搜索。
目前版本以 vX.X.XX 格式保存为字符串 (varchars)(从 v0.0.16 开始),因此无法通过其中 api_version > "vX.X.XX" 查询。因此,这不是我的最佳解决方案,我想切换到数字。
作为 varchars 的版本可以通过 Postgresql 进行排序,但是速度很慢。
在 python 版本中创建为元组(例如 (1, 0, 0)),因此可以轻松排序。
在 PostgreSQL 中有没有最好的存储版本的方法? 什么是最好的类型,并且在排序和搜索方面具有不错的速度性能?
请您参考如下方法:
我认为,一个简单的解决方案是尝试将数组作为版本字段的数据类型。在您的情况下,它可能是 int[]。
版本表示例:
create table tbl (
id serial not null primary key,
"version" int[] null
);
之后,您可以像处理数组一样按版本过滤、排序或分组。
select * from tbl where "version" > array[2, 3, 10] order by "version";
