我想以一种可以快速排序并查询特定范围的方式将版本信息存储在数据库中(特别是MongoDB)。
版本信息如下:
0.1.0.0
0.7.56.101
0.99.40.154
10.2.153.200
我发现这篇关于该主题的文章here。其中总结了以下选项:
使用varchar
使用三个数字字段,主要,次要,补丁
同时使用。
我在考虑第四个选项,其中版本信息可以转换为32位int,其中每个版本占位符占用8位。
例如:
0.7.56.101 -> 00000000 00000111 00111000 01100101 -> 473189
因此将存储值473189。我知道这限制了版本控制的扩展,因为每个八位位组的最大版本为255(255.255.255.255),但我想这对于我的一生来说已经足够了。
这当然需要对版本信息进行一些打包/拆包,但可能会导致快速搜索结果。因为我可以使用比搜索少/多的搜索。
这是处理此问题的好方法还是有更好的方法?
答案 0 :(得分:0)
我建议分别存储每个部分,以便更轻松地访问版本号的每个部分,但是然后将它们用零填充起来,以规范的格式进行组合和比较。因此,您的示例版本号的每个段都保留了三个字符:
000.001.000.000
000.007.056.101
000.099.040.154
010.002.153.200
很容易从基值生成,正确排序并正确进行比较。此外,其他格式的输出也很容易从基值生成,例如传统的未填充的点分表示法。