为什么UUID不能只是带有序列号的时间戳记?

时间:2019-07-11 05:34:27

标签: javascript database computer-science data-science uuid

我刚刚阅读了ulid的规范,为什么不将时间戳转换为复杂的字符串呢?难道只是带有连续数字的时间戳吗?

2 个答案:

答案 0 :(得分:2)

实际上,具有序号 might 的时间戳始终是唯一的。但这将取决于确保在给定的时间戳记中,不会多次给出相同的序列号。数据库中的自动增量列会对此进行近似,从而跟踪已使用的值。

通过使用UUID,我们可以避免所有这些潜在问题。由于存在大量潜在的UUID,因此从统计学上讲几乎不可能不可能一次生成同一UUID。因此,生成的UUID始终是唯一的,这是在其他方案上使用UUID的原因之一。

答案 1 :(得分:1)

一个数字将是39位数字长(因为有10个不同的数字)。同样使用其他字符(36个字符),ULID较短。 (<RadListView ref="listView" for="(manager, index) in managers" :itemReorder="true" reorderMode="Drag"> <v-template> <Label>{{ manager.name }}</Label> <ReorderHandle col="1" verticalAlignment="center"> <Image android:src="res://reorder_icon" ios:src="res://reorder-icon" stretch="none" verticalAlignment="stretch" margin="16" /> </ReorderHandle> </v-template> </RadListView>

  

具有序号

顺序号可能在一台机器上有效,但不能同时在多台同时生成ID的机器上使用(例如,分布式数据库)。当然,您可以添加计算机标识符(这是其他UID所做的事情),但是随后您必须确保这些计算机ID也是唯一的。使用非常长的随机部分,两台计算机不可能同时生成相同的随机数((80 + 24bits) / log²(10) > (80 + 24bits) / log²(32))。