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 中存储版本的最佳方法?执行此操作的最佳类型是什么,并且在排序和搜索方面具有不错的速度性能?
我认为,一个简单的解决方案是尝试使用数组作为版本字段的数据类型。在你的情况下可能是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)