GUID可排序字符串唯一性

时间:2018-04-12 21:29:51

标签: vb.net

此代码是否会损害guid的唯一性。我正在尝试使字符串值可以排序。

{{1}}

1 个答案:

答案 0 :(得分:2)

GUID很容易排序。但它们并不适用于排序,如果您这样做,则不能依赖GUID的排序列表来匹配其创建顺序。
伪随机性的熵是依赖于实现的,有时是even hardware-dependent

即使UuidCreateSequential API函数的文档does not promise依赖任何排序顺序,未来的实现也可能选择下降而不是提升,留下空白或替代。顺序与订单不是一回事。

您创建的字符串不再保证是唯一的,除非您可以强制执行不会有两个时间戳相同(一个好的开始是使用四位数年份!记得2000?)

这是因为我们不知道下一个GUID与前一个GUID的不同之处。如果碰巧在左侧部分被时间戳覆盖,那么你最终可能会得到两个相同的字符串。

一种可能性是仅使用唯一的时间戳。您可以自由地格式化它们,使它们看起来像GUID并解析为GUID(无论出于何种原因)。您可以使用零填充来填充它:

{20180413-2213-2490-0000-000000000000}

最后你的问题可能是X-Y问题。告诉我们您实际需要实现的内容,并且不要犹豫,添加字段,列或实现这两个目标所需的任何内容:唯一键和自定义排序顺序,而不会影响GUID的概念。 / p>