【发布时间】:2011-12-18 21:46:57
【问题描述】:
我需要生成一个唯一 ID,并且正在考虑使用 Guid.NewGuid 来执行此操作,这会生成以下形式的内容:
0fe66778-c4a8-4f93-9bda-366224df6f11
这对于它最终将驻留的字符串类型数据库列来说有点长,所以我打算截断它。
问题是:就唯一性而言,GUID 的一端是否比其他一端更可取?我应该砍掉开头、结尾还是从中间移除部分?还是没关系?
【问题讨论】:
-
这是个好问题。我倾向于使用中间位,但我不认为有区别。
-
我将进行蒙特卡罗实验并公布结果。
-
第 4 版 UUID 的格式为 xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx,x 可以是任何十六进制数字,y 只能是 8、9、A 或 B 之一。例如f47ac10b-58cc-4372-a567-0e02b2c3d479.
-
如果您不可能保留所有这些(而且您真的应该保留!),请考虑采用 GUID 的 128 位值并将其重新编码为更紧凑的内容,以便您可以压缩到较短的字符串中字段。
-
我不希望它是全球唯一的 - 仅在我有限的数据库列的约束内合理唯一,并且仅在短时间内(为了我的应用程序的目的)。
标签: c# guid identifier